48 lines
1.2 KiB
JavaScript
48 lines
1.2 KiB
JavaScript
import 'dotenv/config';
|
|
import express from 'express';
|
|
import cors from 'cors';
|
|
import path from 'path';
|
|
import { fileURLToPath } from 'url';
|
|
|
|
import db from './models/db.js';
|
|
import entriesRouter from './routes/entries.js';
|
|
import foodsRouter from './routes/foods.js';
|
|
import summaryRouter from './routes/summary.js';
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
|
|
const app = express();
|
|
const PORT = process.env.PORT || 3000;
|
|
|
|
// Middleware
|
|
app.use(cors());
|
|
app.use(express.json());
|
|
|
|
// Serve uploaded files statically
|
|
app.use('/uploads', express.static(path.join(__dirname, process.env.UPLOAD_DIR || '../uploads')));
|
|
|
|
// API Routes
|
|
app.use('/api/entries', entriesRouter);
|
|
app.use('/api/foods', foodsRouter);
|
|
app.use('/api/summary', summaryRouter);
|
|
|
|
// Health check
|
|
app.get('/api/health', (req, res) => {
|
|
res.json({ status: 'ok', timestamp: new Date().toISOString() });
|
|
});
|
|
|
|
// Initialize database and start server
|
|
db.initialize()
|
|
.then(() => {
|
|
app.listen(PORT, () => {
|
|
console.log(`Meal Tracker API running on port ${PORT}`);
|
|
});
|
|
})
|
|
.catch(err => {
|
|
console.error('Failed to initialize database:', err);
|
|
process.exit(1);
|
|
});
|
|
|
|
export default app;
|