39 lines
1.2 KiB
JavaScript
39 lines
1.2 KiB
JavaScript
|
|
require('dotenv').config();
|
||
|
|
const path = require('path');
|
||
|
|
const express = require('express');
|
||
|
|
const cors = require('cors');
|
||
|
|
|
||
|
|
const app = express();
|
||
|
|
app.use(cors());
|
||
|
|
app.use(express.json({ limit: '1mb' }));
|
||
|
|
|
||
|
|
// Health
|
||
|
|
app.get('/api/health', (req, res) => res.json({ ok: true, service: 'zc-bleeter-web' }));
|
||
|
|
|
||
|
|
// Interner Endpunkt (FiveM-Server)
|
||
|
|
app.use('/internal', require('./routes/internal'));
|
||
|
|
|
||
|
|
// Auth
|
||
|
|
app.use('/api/auth', require('./routes/auth'));
|
||
|
|
|
||
|
|
// API
|
||
|
|
app.use('/api', require('./routes/feed'));
|
||
|
|
app.use('/api', require('./routes/profiles'));
|
||
|
|
app.use('/api', require('./routes/marketplace'));
|
||
|
|
app.use('/api', require('./routes/events'));
|
||
|
|
app.use('/api', require('./routes/business'));
|
||
|
|
app.use('/api', require('./routes/moderation'));
|
||
|
|
app.use('/api', require('./routes/media'));
|
||
|
|
|
||
|
|
// Statisches Frontend + SPA-Fallback
|
||
|
|
const publicDir = path.join(__dirname, 'public');
|
||
|
|
app.use(express.static(publicDir));
|
||
|
|
app.get(/^(?!\/api|\/internal).*/, (req, res) => {
|
||
|
|
res.sendFile(path.join(publicDir, 'index.html'));
|
||
|
|
});
|
||
|
|
|
||
|
|
const PORT = Number(process.env.PORT || 4091);
|
||
|
|
app.listen(PORT, '127.0.0.1', () => {
|
||
|
|
console.log(`[zc-bleeter-web] Backend laeuft auf 127.0.0.1:${PORT}`);
|
||
|
|
});
|