from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from backend.app.db import init_db from backend.app.api.health import router as health_router from backend.app.api.datasets import router as datasets_router from backend.app.api.presets import router as presets_router from backend.app.api.experiments import router as experiments_router from backend.app.api.compare import router as compare_router from backend.app.api.exports import router as exports_router from backend.app.api.runs import router as runs_router app = FastAPI(title="ClusterBuster API") @app.on_event("startup") def on_startup() -> None: init_db() origins = [ "http://localhost:3000", "https://cluster-buster.vercel.app", ] app.add_middleware( CORSMiddleware, allow_origins=origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(health_router, prefix="/api") app.include_router(datasets_router, prefix="/api") app.include_router(presets_router, prefix="/api") app.include_router(experiments_router, prefix="/api") app.include_router(compare_router, prefix="/api") app.include_router(exports_router, prefix="/api") app.include_router(runs_router, prefix="/api") @app.get("/") def root(): return {"ok": True, "service": "clusterbuster-api"}