import express, { Express, Request, Response } from 'express'; import cors from 'cors'; import { initializeDatabase, closeDatabase } from './db'; import todosRouter from './routes/todos'; const app: Express = express(); const PORT = process.env.PORT || 3001; // Middleware app.use(cors()); app.use(express.json()); // Initialize database on startup try { initializeDatabase(); } catch (error) { console.error('Failed to initialize database:', error); process.exit(1); } // Routes app.use('/api', todosRouter); // Health check endpoint app.get('/health', (_req: Request, res: Response) => { res.json({ status: 'ok', message: 'Backend server is running' }); }); // Start server const server = app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`); }); // Graceful shutdown process.on('SIGINT', () => { console.log('Shutting down gracefully...'); closeDatabase(); server.close(() => { console.log('Server closed'); process.exit(0); }); }); export default app;