wg-verwaltung/backend/src/app.ts

44 lines
1.6 KiB
TypeScript

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}`));
}