import app from './app'; import { env } from './config/env'; import { logger } from './utils/logger'; import redis from './config/redis'; import prisma from './config/database'; async function bootstrap() { try { // Connect to Redis await redis.connect(); logger.info('Redis connected'); // Verify database connection await prisma.$connect(); logger.info('Database connected'); // Start server app.listen(env.PORT, () => { logger.info(`🚀 MarketScope API server running on port ${env.PORT}`); logger.info(`📍 Environment: ${env.NODE_ENV}`); logger.info(`🔗 URL: ${env.APP_URL}`); }); } catch (error) { logger.error('Failed to start server:', error); process.exit(1); } } // Graceful shutdown process.on('SIGTERM', async () => { logger.info('SIGTERM received. Shutting down gracefully...'); await prisma.$disconnect(); await redis.quit(); process.exit(0); }); process.on('SIGINT', async () => { logger.info('SIGINT received. Shutting down...'); await prisma.$disconnect(); await redis.quit(); process.exit(0); }); process.on('unhandledRejection', (reason) => { logger.error('Unhandled Rejection:', reason); }); bootstrap();