index.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. const express = require('express');
  2. const compression = require('compression');
  3. const cors = require('cors');
  4. const path = require('path');
  5. let config;
  6. try {
  7. config = require('./config');
  8. } catch (e) {
  9. console.error('Missing config.js - copy config.example.js to config.js and configure it.');
  10. process.exit(1);
  11. }
  12. const { initDatabase } = require('./src/database');
  13. const authRoutes = require('./src/routes/auth');
  14. const dirRoutes = require('./src/routes/directories');
  15. const trackRoutes = require('./src/routes/tracks');
  16. const shareRoutes = require('./src/routes/share');
  17. const adminRoutes = require('./src/routes/admin');
  18. const statsRoutes = require('./src/routes/stats');
  19. const app = express();
  20. app.use(compression());
  21. app.use(cors({ origin: config.cors.origin, credentials: true }));
  22. app.use(express.json());
  23. app.use('/api/auth', authRoutes);
  24. app.use('/api/directories', dirRoutes);
  25. app.use('/api/tracks', trackRoutes);
  26. app.use('/api/share', shareRoutes);
  27. app.use('/api/admin', adminRoutes);
  28. app.use('/api/stats', statsRoutes);
  29. app.get('/health', (req, res) => res.json({ ok: true }));
  30. async function start() {
  31. await initDatabase();
  32. app.listen(config.port, () => {
  33. console.log(`GPX-vis backend running on port ${config.port}`);
  34. });
  35. }
  36. start().catch(err => {
  37. console.error('Startup error:', err);
  38. process.exit(1);
  39. });