File size: 997 Bytes
cd601a6
 
ba475c6
 
cd601a6
 
 
ba475c6
 
cd601a6
ba475c6
cd601a6
ba475c6
cd601a6
 
ba475c6
cd601a6
 
ba475c6
cd601a6
 
 
ba475c6
cd601a6
ba475c6
 
 
 
 
 
 
cd601a6
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
const express = require('express');
const config = require('./config.json');
const { requestLogger } = require('./middleware/logger');
const { rateLimiter } = require('./middleware/rateLimit');

const app = express();
app.use(express.json());
app.use(requestLogger);
app.use(rateLimiter);

// Health check
app.get('/health', (req, res) => {
  res.json({ status: 'ok', uptime: process.uptime(), version: config.version });
});

// Mount routes
const usersRouter = require('./routes/users');
const dataRouter = require('./routes/data');
const statusRouter = require('./routes/status');

app.use('/api/users', usersRouter);
app.use('/api/data', dataRouter);
app.use('/api/status', statusRouter);

// Error handling middleware
app.use((err, req, res, next) => {
  console.error(`[ERROR] ${err.message}`);
  res.status(500).json({ error: 'Internal server error' });
});

// Start server
const PORT = config.port;
app.listen(PORT, '0.0.0.0', () => {
  console.log(`Server running on port ${PORT}`);
});