stephane09's picture
Create app.py
df0ad38 verified
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."}