import 'dotenv/config'; import express from 'express'; import cors from 'cors'; import { bankingWebhookRawRouter, paymentsRouter } from './routes/bankingWebhook'; import { cockpitRouter } from './routes/cockpit'; import { authRouter } from './routes/auth'; import { invitationsRouter } from './routes/invitations'; import { ticketsRouter } from './routes/tickets'; import { cleaningTasksRouter } from './routes/cleaningTasks'; export function createApp() { const app = express(); // Webhook-Router zuerst: hat seinen eigenen express.raw()-Parser pro Route // (siehe routes/bankingWebhook.ts) und läuft daher unabhängig vom globalen // JSON-Parser unten. app.use('/v1', bankingWebhookRawRouter); // CORS: erlaubt dem lokal geöffneten Web-Dashboard (file:// oder // localhost-Server), auf die API zuzugreifen. Für den Testbetrieb offen // konfiguriert (origin: true spiegelt den anfragenden Origin) — für einen // echten Produktivbetrieb sollte hier eine feste Allowlist stehen. app.use(cors({ origin: true })); // Alle übrigen Routen bekommen normal geparstes JSON. app.use(express.json()); app.use('/v1', paymentsRouter); app.use('/v1', cockpitRouter); app.use('/v1', authRouter); app.use('/v1', invitationsRouter); app.use('/v1', ticketsRouter); app.use('/v1', cleaningTasksRouter); app.get('/health', (_req, res) => res.status(200).json({ ok: true })); return app; } if (require.main === module) { const app = createApp(); const port = process.env.PORT ? Number(process.env.PORT) : 3000; app.listen(port, () => console.log(`Backend läuft auf Port ${port}`)); }