From 4a382b5dd7db80ed87866646d4b64a422d0120d4 Mon Sep 17 00:00:00 2001 From: "bert.hausmans" Date: Wed, 20 May 2026 21:08:06 +0200 Subject: [PATCH] feat(backend): serve built frontend in production --- packages/backend/src/app.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/backend/src/app.ts b/packages/backend/src/app.ts index 2405378..4cca60e 100644 --- a/packages/backend/src/app.ts +++ b/packages/backend/src/app.ts @@ -1,3 +1,5 @@ +import { existsSync } from 'node:fs'; +import { resolve } from 'node:path'; import express, { type Express, type NextFunction, type Request, type Response } from 'express'; import { ZodError } from 'zod'; import type { Db } from './db/client.js'; @@ -17,6 +19,12 @@ export function createApp(db: Db): Express { app.use('/api/sessions', sessionsRouter(db)); app.use('/api/stats', statsRouter(db)); + const frontendDist = resolve(import.meta.dirname, '../../frontend/dist'); + if (existsSync(frontendDist)) { + app.use(express.static(frontendDist)); + app.get('*', (_req, res) => res.sendFile(resolve(frontendDist, 'index.html'))); + } + app.use((err: unknown, _req: Request, res: Response, _next: NextFunction) => { if (err instanceof ZodError) { res.status(400).json({ error: { code: 'VALIDATION_ERROR', message: 'Invalid input', details: err.flatten() } });