codenuk_backend_mine/generated-projects/premium_user_authentication/backend/src/app.js

43 lines
1.2 KiB
JavaScript

const express = require('express');
const cors = require('cors');
const helmet = require('helmet');
const rateLimit = require('express-rate-limit');
const swaggerUi = require('swagger-ui-express');
const swaggerDocument = require('./docs/swagger.json');
const routes = require('./routes');
const errorHandler = require('./middleware/errorHandler');
const logger = require('./utils/logger');
const morganMiddleware = require('./middleware/morganMiddleware');
const app = express();
app.use(helmet());
app.use(cors({
origin: process.env.ALLOWED_ORIGINS.split(','),
credentials: true
}));
const limiter = rateLimit({
windowMs: parseInt(process.env.RATE_LIMIT_WINDOW_MS),
max: parseInt(process.env.RATE_LIMIT_MAX_REQUESTS)
});
app.use(limiter);
app.use(express.json({ limit: '10mb' }));
app.use(express.urlencoded({ extended: true }));
app.use(morganMiddleware);
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
app.use('/api/v1', routes);
app.get('/health', (req, res) => {
res.json({
status: 'healthy',
timestamp: new Date().toISOString(),
environment: process.env.NODE_ENV
});
});
app.use(errorHandler);
module.exports = app;