UNPKG

myex-cli

Version:

Opinionated Express.js framework with CLI tools

53 lines (43 loc) 1.55 kB
import express from 'express'; import 'dotenv/config'; import swaggerUi from 'swagger-ui-express'; import { connectToDatabase } from './db/connection.js'; import { configureMiddleware } from './middlewares/index.js'; import { configureSecurity } from './security/index.js'; import { configureRoutes } from './routes/index.js'; import { configureErrorHandlers } from './middlewares/errorHandlers.js'; import { logger } from './utils/logger.js'; import swaggerSpec from './config/swagger.js'; // Initialize Express app const app = express(); const PORT = process.env.PORT || 3000; // Connect to MongoDB connectToDatabase(); // Configure security middleware configureSecurity(app); // Configure regular middleware configureMiddleware(app); // Setup Swagger UI app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec, { explorer: true, customCss: '.swagger-ui .topbar { display: none }', customSiteTitle: "MYX API Documentation", })); // Expose swagger.json app.get('/swagger.json', (req, res) => { res.setHeader('Content-Type', 'application/json'); res.send(swaggerSpec); }); // Register routes configureRoutes(app); // Configure error handlers (should be last) configureErrorHandlers(app); // Start the server only if we're not in test mode if (process.env.NODE_ENV !== 'test') { app.listen(PORT, () => { logger.info(`Server running in ${process.env.NODE_ENV} mode on port ${PORT}`); logger.info(`API Documentation available at http://localhost:${PORT}/api-docs`); }); } // For testing purposes export default app;