"""JA4 SOC Dashboard — FastAPI application.""" from __future__ import annotations import logging from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.staticfiles import StaticFiles from backend.routes.api import router as api_router from backend.routes.pages import router as pages_router logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(name)s: %(message)s") app = FastAPI(title="JA4 SOC Dashboard", version="1.0.0") # CORS — allow all origins for dashboard access app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Static assets app.mount("/static", StaticFiles(directory="backend/static"), name="static") # Routers — API first so /api/* paths match before page catch-all app.include_router(api_router) app.include_router(pages_router) @app.get("/health") async def health(): return {"status": "ok"}