NeonClary
Add Decidron network simulator
808ab9a
Raw
History Blame Contribute Delete
1.3 kB
from __future__ import annotations
import logging
from pathlib import Path
from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware
from app.config import settings
from app.api import decidron
logging.basicConfig(level=logging.INFO)
LOG = logging.getLogger(__name__)
STATIC_DIR = Path(__file__).resolve().parent.parent / "static"
app = FastAPI(
title="Decidron Network Simulator",
version="1.0.0",
)
app.add_middleware(
CORSMiddleware,
allow_origins=settings.cors_origin_list or ["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.include_router(decidron.router, prefix="/api")
@app.get("/api/health")
async def health():
return {"status": "ok"}
if STATIC_DIR.is_dir():
from starlette.staticfiles import StaticFiles # noqa: F401
from starlette.responses import FileResponse
@app.get("/{full_path:path}")
async def serve_spa(request: Request, full_path: str):
file_path = STATIC_DIR / full_path
if file_path.is_file():
return FileResponse(file_path)
return FileResponse(STATIC_DIR / "index.html")
LOG.info("Serving frontend from %s", STATIC_DIR)
else:
LOG.info("No static directory found at %s — frontend not served.", STATIC_DIR)