Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | require('dotenv').config(); 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 authRoutes = require('./routes/auth'); const { errorHandler } = require('./middleware/errorHandler'); const swaggerSpecs = require('./swagger'); const app = express(); const PORT = process.env.PORT || 3000; // Security middleware app.use(helmet()); app.use(cors()); // Rate limiting const limiter = rateLimit({ windowMs: parseInt(process.env.RATE_LIMIT_WINDOW_MS) || 15 * 60 * 1000, // 15 minutes max: parseInt(process.env.RATE_LIMIT_MAX_REQUESTS) || 100, // limit each IP to 100 requests per windowMs message: { error: 'Too many requests from this IP, please try again later.' } }); app.use(limiter); // Body parsing middleware app.use(express.json({ limit: '10mb' })); app.use(express.urlencoded({ extended: true, limit: '10mb' })); // Swagger documentation app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpecs, { customCss: '.swagger-ui .topbar { display: none }', customSiteTitle: 'Login API Documentation', customfavIcon: '/favicon.ico' })); /** * @swagger * /health: * get: * summary: Health check * description: Check if the API is running and healthy * tags: [System] * responses: * 200: * description: API is healthy * content: * application/json: * schema: * type: object * properties: * status: * type: string * example: OK * message: * type: string * example: Login API is running * timestamp: * type: string * format: date-time * example: 2024-01-01T00:00:00.000Z */ // Health check endpoint app.get('/health', (req, res) => { res.status(200).json({ status: 'OK', message: 'Login API is running', timestamp: new Date().toISOString() }); }); // API routes app.use('/api/auth', authRoutes); // 404 handler app.use('*', (req, res) => { res.status(404).json({ error: 'Route not found', message: `Cannot ${req.method} ${req.originalUrl}` }); }); // Error handling middleware app.use(errorHandler); // Start server app.listen(PORT, () => { console.log(`🚀 Server running on port ${PORT}`); console.log(`📝 Environment: ${process.env.NODE_ENV}`); console.log(`🔗 Health check: http://localhost:${PORT}/health`); console.log(`📚 API Documentation: http://localhost:${PORT}/api-docs`); }); module.exports = app; |