import express from 'express'; import cors from 'cors'; import dotenv from 'dotenv'; import { initializeDatabase } from './utils/database'; import authRoutes from './routes/auth'; import garminRoutes from './routes/garmin'; import healthRoutes from './routes/health'; import analysisRoutes from './routes/analysis'; import { errorHandler } from './middleware/errorHandler'; dotenv.config(); const app = express(); const PORT = process.env.PORT || 5000; // Middleware app.use(express.json()); app.use(cors({ origin: process.env.CORS_ORIGIN || 'http://localhost:3000', credentials: true })); // Routes app.use('/api/auth', authRoutes); app.use('/api/garmin', garminRoutes); app.use('/api/health', healthRoutes); app.use('/api/analysis', analysisRoutes); // Health check app.get('/api/health/status', (req, res) => { res.json({ status: 'ok', timestamp: new Date().toISOString() }); }); // Error handling app.use(errorHandler); // Initialize database, then start accepting requests initializeDatabase() .then(() => { app.listen(PORT, () => { console.log(`Server running on http://localhost:${PORT}`); }); }) .catch((err) => { console.error('[db] Failed to initialize database:', err); process.exit(1); });