import express from 'express'; import helmet from 'helmet'; import cors from 'cors'; import compression from 'compression'; import cookieParser from 'cookie-parser'; import morgan from 'morgan'; import swaggerUi from 'swagger-ui-express'; import swaggerSpec from './src/shared/config/swagger.config.js'; import { errorMiddleware } from './src/shared/middleware/error.middleware.js'; import registerRoutes from './src/features/index.js'; const app = express(); // Middlewares app.use(helmet()); app.use(cors({ origin: process.env.CORS_ORIGIN || '*' })); app.use(compression()); app.use(cookieParser()); app.use(express.json()); app.use(express.urlencoded({ extended: true })); if (process.env.NODE_ENV !== 'test') { app.use(morgan('dev')); } // Swagger setup app.use('/api/docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec)); // Base Health Check app.get('/health', (req, res) => { res.status(200).json({ status: 'OK', timestamp: new Date() }); }); // Centralized Feature Router Loader app.use('/uploads', express.static('uploads')); registerRoutes(app); // Global Error Handler app.use(errorMiddleware); export default app;