Fix SPA serving: use HTMLResponse instead of FileResponse

This commit is contained in:
2026-03-09 22:19:29 -05:00
parent fdae64409c
commit 0b21c6dd46

View File

@@ -1,8 +1,10 @@
from contextlib import asynccontextmanager
import os
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse
from fastapi.responses import HTMLResponse
from backend.database import engine
from backend.routers import health, subreddits, posts, comments, authors, analytics, digests, summaries
@@ -28,12 +30,15 @@ app.include_router(summaries.router, prefix="/api/v1")
# SPA static file serving (only when frontend is built)
import os
STATIC_DIR = "/app/static"
_index_html = ""
static_dir = os.path.join(os.path.dirname(__file__), "..", "static")
if os.path.isdir(static_dir):
app.mount("/assets", StaticFiles(directory=os.path.join(static_dir, "assets")), name="assets")
if os.path.isdir(STATIC_DIR):
with open(os.path.join(STATIC_DIR, "index.html")) as f:
_index_html = f.read()
app.mount("/assets", StaticFiles(directory=os.path.join(STATIC_DIR, "assets")), name="assets")
@app.get("/{full_path:path}")
async def serve_spa(full_path: str):
return FileResponse(os.path.join(static_dir, "index.html"))
return HTMLResponse(_index_html)