const express = require('express'); const compression = require('compression'); const cors = require('cors'); const path = require('path'); let config; try { config = require('./config'); } catch (e) { console.error('Missing config.js - copy config.example.js to config.js and configure it.'); process.exit(1); } const { initDatabase } = require('./src/database'); const authRoutes = require('./src/routes/auth'); const dirRoutes = require('./src/routes/directories'); const trackRoutes = require('./src/routes/tracks'); const shareRoutes = require('./src/routes/share'); const adminRoutes = require('./src/routes/admin'); const statsRoutes = require('./src/routes/stats'); const app = express(); app.use(compression()); app.use(cors({ origin: config.cors.origin, credentials: true })); app.use(express.json()); app.use('/api/auth', authRoutes); app.use('/api/directories', dirRoutes); app.use('/api/tracks', trackRoutes); app.use('/api/share', shareRoutes); app.use('/api/admin', adminRoutes); app.use('/api/stats', statsRoutes); app.get('/health', (req, res) => res.json({ ok: true })); async function start() { await initDatabase(); app.listen(config.port, () => { console.log(`GPX-vis backend running on port ${config.port}`); }); } start().catch(err => { console.error('Startup error:', err); process.exit(1); });