Files
otrs-turbo/server.js
T

51 lines
1.6 KiB
JavaScript

const path = require('path');
const baseDir = process.pkg ? path.dirname(process.execPath) : __dirname;
require('dotenv').config({ path: path.resolve(baseDir, '.env') });
require('dotenv').config({ path: path.resolve(__dirname, '.env') });
const express = require('express');
const cors = require('cors');
const ticketsRouter = require('./routes/tickets');
const lookupsRouter = require('./routes/lookups');
const dashboardRouter = require('./routes/dashboard');
const activityRouter = require('./routes/activity');
const emailRouter = require('./routes/email');
const groupsRouter = require('./routes/groups');
const presetsRouter = require('./routes/presets');
const app = express();
const PORT = process.env.PORT || 3000;
// Middleware
app.use(cors());
app.use(express.json({ limit: '50mb' }));
// Serve static frontend
app.use(express.static(path.join(__dirname, 'public')));
// API Routes
app.use('/api/tickets', ticketsRouter);
app.use('/api', lookupsRouter);
app.use('/api/dashboard', dashboardRouter);
app.use('/api/attivita', activityRouter);
app.use('/api/email', emailRouter);
app.use('/api/groups', groupsRouter);
app.use('/api/presets', presetsRouter);
// SPA fallback — serve index.html for all non-API routes
app.get('*', (req, res) => {
if (!req.path.startsWith('/api')) {
res.sendFile(path.join(__dirname, 'public', 'index.html'));
}
});
// Error handler
app.use((err, req, res, next) => {
console.error('Server error:', err);
res.status(500).json({ error: 'Internal server error', message: err.message });
});
app.listen(PORT, () => {
console.log(`\n ⚡ OTRS Turbo running at http://localhost:${PORT}\n`);
});