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;