Files
productcatalogue_backend/app.js
T

42 lines
1.1 KiB
JavaScript

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;