Initial commit
This commit is contained in:
77
server/app.js
Normal file
77
server/app.js
Normal file
@@ -0,0 +1,77 @@
|
||||
const express = require('express');
|
||||
const cors = require('cors');
|
||||
const helmet = require('helmet');
|
||||
const rateLimit = require('express-rate-limit');
|
||||
const path = require('path');
|
||||
const errorHandler = require('./middleware/errorHandler');
|
||||
|
||||
// Route Imports
|
||||
const authRoutes = require('./routes/authRoutes');
|
||||
const productRoutes = require('./routes/productRoutes');
|
||||
const categoryRoutes = require('./routes/categoryRoutes');
|
||||
const brandRoutes = require('./routes/brandRoutes');
|
||||
const cartRoutes = require('./routes/cartRoutes');
|
||||
const wishlistRoutes = require('./routes/wishlistRoutes');
|
||||
const orderRoutes = require('./routes/orderRoutes');
|
||||
const inventoryRoutes = require('./routes/inventoryRoutes');
|
||||
const reviewRoutes = require('./routes/reviewRoutes');
|
||||
const couponRoutes = require('./routes/couponRoutes');
|
||||
const bannerRoutes = require('./routes/bannerRoutes');
|
||||
const settingsRoutes = require('./routes/settingsRoutes');
|
||||
const socialMediaRoutes = require('./routes/socialMediaRoutes');
|
||||
const emailTemplateRoutes = require('./routes/emailTemplateRoutes');
|
||||
const contactRoutes = require('./routes/contactRoutes');
|
||||
const uploadRoutes = require('./routes/uploadRoutes');
|
||||
|
||||
const app = express();
|
||||
|
||||
// Security Middlewares
|
||||
app.use(helmet({ crossOriginResourcePolicy: { policy: "cross-origin" } }));
|
||||
app.use(cors({
|
||||
origin: process.env.CLIENT_URL || '*',
|
||||
credentials: true
|
||||
}));
|
||||
|
||||
// Rate Limiter
|
||||
const limiter = rateLimit({
|
||||
windowMs: 15 * 60 * 1000,
|
||||
max: 300,
|
||||
message: { success: false, message: 'Too many requests from this IP, please try again later.' }
|
||||
});
|
||||
app.use('/api', limiter);
|
||||
|
||||
// Body Parsing
|
||||
app.use(express.json({ limit: '10mb' }));
|
||||
app.use(express.urlencoded({ extended: true, limit: '10mb' }));
|
||||
|
||||
// Static Uploads Folder
|
||||
app.use('/uploads', express.static(path.join(__dirname, 'uploads')));
|
||||
|
||||
// Root test route
|
||||
app.get('/api/health', (req, res) => {
|
||||
res.json({ success: true, message: 'Antigravity Guitars API is healthy', timestamp: new Date() });
|
||||
});
|
||||
|
||||
// API Routes
|
||||
app.use('/api/auth', authRoutes);
|
||||
app.use('/api/products', productRoutes);
|
||||
app.use('/api/categories', categoryRoutes);
|
||||
app.use('/api/brands', brandRoutes);
|
||||
app.use('/api/cart', cartRoutes);
|
||||
app.use('/api/wishlist', wishlistRoutes);
|
||||
app.use('/api/orders', orderRoutes);
|
||||
app.use('/api/inventory', inventoryRoutes);
|
||||
app.use('/api/reviews', reviewRoutes);
|
||||
app.use('/api/coupons', couponRoutes);
|
||||
app.use('/api/banners', bannerRoutes);
|
||||
app.use('/api/settings', settingsRoutes);
|
||||
app.use('/api/social-media', socialMediaRoutes);
|
||||
app.use('/api/email-templates', emailTemplateRoutes);
|
||||
app.use('/api/contact', contactRoutes);
|
||||
app.use('/api/upload', uploadRoutes);
|
||||
|
||||
// Centralized Error Handling Middleware
|
||||
app.use(errorHandler);
|
||||
|
||||
module.exports = app;
|
||||
|
||||
Reference in New Issue
Block a user