from fastapi import FastAPI from fastapi.staticfiles import StaticFiles from fastapi.responses import FileResponse import os app = FastAPI() # 1. Monter le dossier 'assets' contenant le JS et le CSS compilés par Vite # Cela permet d'accéder à /assets/index.js, etc. if os.path.exists("dist/assets"): app.mount("/assets", StaticFiles(directory="dist/assets"), name="assets") # 2. Route "catch-all" pour servir l'application React (Single Page Application) # Peu importe l'URL demandée, on renvoie index.html, et React gère le routing côté client. @app.get("/{full_path:path}") async def serve_react_app(full_path: str): # Si le fichier demandé existe physiquement (ex: vite.svg, robots.txt), on le sert file_path = os.path.join("dist", full_path) if os.path.exists(file_path) and os.path.isfile(file_path): return FileResponse(file_path) # Sinon, on renvoie index.html pour que React prenne le relais if os.path.exists("dist/index.html"): return FileResponse("dist/index.html") return {"error": "L'application est en cours de construction ou le dossier 'dist' est manquant."}