require('dotenv').config({ path: require('path').resolve(__dirname, '../.env') }); require('express-async-errors'); const express = require('express'); const cors = require('cors'); const connectDB = require('./config/db'); const { initCronJobs } = require('./services/cronService'); // ── Routes ────────────────────────────────────────────────── const authRoutes = require('./routes/auth'); const menuRoutes = require('./routes/menu'); const orderRoutes = require('./routes/orders'); const expenseRoutes = require('./routes/expenses'); const reportRoutes = require('./routes/reports'); const userRoutes = require('./routes/users'); const platformSaleRoutes = require('./routes/platformSales'); const app = express(); // ── Middleware ─────────────────────────────────────────────── app.use(cors({ origin: process.env.CLIENT_URL || '*', credentials: true })); app.use(express.json({ limit: '10mb' })); app.use(express.urlencoded({ extended: true })); // ── API Routes ─────────────────────────────────────────────── app.use('/api/auth', authRoutes); app.use('/api/menu', menuRoutes); app.use('/api/orders', orderRoutes); app.use('/api/expenses', expenseRoutes); app.use('/api/platform-sales', platformSaleRoutes); app.use('/api/reports', reportRoutes); app.use('/api/users', userRoutes); // Health check app.get('/api/health', (_, res) => res.json({ status: 'ok', ts: new Date().toISOString() })); // ── Global Error Handler ───────────────────────────────────── app.use((err, req, res, _next) => { console.error('❌', err.message); const status = err.status || err.statusCode || 500; res.status(status).json({ message: err.message || 'Server error' }); }); // ── Start ──────────────────────────────────────────────────── const PORT = process.env.PORT || 5000; connectDB().then(() => { app.listen(PORT, () => { console.log(`🚀 Golden Wok API running on port ${PORT}`); initCronJobs(); }); }); module.exports = app;