require('dotenv').config(); const path = require('path'); const express = require('express'); const session = require('express-session'); const { connectDB } = require('./src/db'); const authRoutes = require('./src/routes/auth'); const dashboardRoutes = require('./src/routes/dashboard'); const settingsRoutes = require('./src/routes/settings'); const app = express(); const PORT = process.env.PORT || 3000; app.set('view engine', 'ejs'); app.set('views', path.join(__dirname, 'views')); app.use(express.urlencoded({ extended: true })); app.use(express.static(path.join(__dirname, 'public'))); app.use( session({ secret: process.env.SESSION_SECRET || 'bitte-secret-setzen', resave: false, saveUninitialized: false, cookie: { maxAge: 1000 * 60 * 60 * 24 * 30, // 30 Tage }, }) ); // Healthcheck für Docker/Coolify app.get('/healthz', (req, res) => res.status(200).send('ok')); app.use(authRoutes); app.use(dashboardRoutes); app.use(settingsRoutes); app.use((req, res) => { res.status(404).render('error', { title: 'Nicht gefunden', message: 'Seite nicht gefunden.' }); }); // eslint-disable-next-line no-unused-vars app.use((err, req, res, next) => { console.error(err); res.status(500).render('error', { title: 'Fehler', message: 'Es ist ein unerwarteter Fehler aufgetreten.', }); }); async function start() { await connectDB(); app.listen(PORT, () => { console.log(`Zeitkonto läuft auf Port ${PORT}`); }); } start().catch((err) => { console.error('Start fehlgeschlagen:', err); process.exit(1); });