diff --git a/backend/src/app.ts b/backend/src/app.ts new file mode 100644 index 0000000..dbd79c9 --- /dev/null +++ b/backend/src/app.ts @@ -0,0 +1,35 @@ +import 'dotenv/config'; +import express from 'express'; +import cors from 'cors'; +import { bankingWebhookRawRouter, paymentsRouter } from './routes/bankingWebhook'; +import { cockpitRouter } from './routes/cockpit'; + +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.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}`)); +}