feat: serve built frontend from backend with SPA fallback

This commit is contained in:
Indiana
2026-07-20 17:48:07 +00:00
parent 6bcdf83c4d
commit bd0c162172
2 changed files with 29 additions and 0 deletions

View File

@@ -1,11 +1,16 @@
from contextlib import asynccontextmanager
from pathlib import Path
from fastapi import FastAPI
from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles
import app.models # noqa: F401 — registers models on Base.metadata before create_all
from app.db import Base, engine
from app.routes.auth import router as auth_router
FRONTEND_DIST = Path(__file__).resolve().parent.parent.parent / "frontend" / "dist"
@asynccontextmanager
async def lifespan(app: FastAPI):
@@ -21,3 +26,11 @@ app.include_router(auth_router)
@app.get("/healthz")
async def healthz():
return {"status": "ok"}
app.mount("/assets", StaticFiles(directory=FRONTEND_DIST / "assets"), name="frontend-assets")
@app.get("/{full_path:path}")
async def serve_spa(full_path: str):
return FileResponse(FRONTEND_DIST / "index.html")