From 86dac336633522a054b260ed63a63a239bcc6ca1 Mon Sep 17 00:00:00 2001 From: CRM Bot Date: Wed, 3 Jun 2026 22:05:37 +0000 Subject: [PATCH] feat(static-mount): integrate frontend (13 pages) into FastAPI app --- app/main.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/main.py b/app/main.py index dd0e8fd..8931c24 100644 --- a/app/main.py +++ b/app/main.py @@ -14,10 +14,13 @@ from __future__ import annotations import logging from contextlib import asynccontextmanager +from pathlib import Path + from fastapi import FastAPI, Request, status from fastapi.exceptions import RequestValidationError from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import JSONResponse +from fastapi.staticfiles import StaticFiles from sqlalchemy import text from sqlalchemy.exc import SQLAlchemyError from starlette.exceptions import HTTPException as StarletteHTTPException @@ -190,6 +193,15 @@ def create_app() -> FastAPI: app.include_router(tags.router, prefix="/api/v1") app.include_router(dashboard.router, prefix="/api/v1") + # === Static Files (Frontend) === + # Mount app/webui/ on root AFTER all routers, so /api/v1/* still matches first. + # StaticFiles mit html=True servt index.html on `/` und alle .html files direkt. + webui_dir = Path(__file__).parent / "webui" + if webui_dir.exists(): + app.mount("/", StaticFiles(directory=str(webui_dir), html=True), name="webui") + else: + logger.warning("webui directory not found at %s — frontend not served", webui_dir) + return app