from __future__ import annotations from pathlib import Path from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import FileResponse from fastapi.staticfiles import StaticFiles from app.api.conversations import router as conversations_router from app.api.documents import router as documents_router from app.api.health import router as health_router from app.api.questions import router as questions_router from app.core.config import get_settings def create_app() -> FastAPI: settings = get_settings() app = FastAPI(title=settings.app_name, version="1.0.0") app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"], allow_credentials=True, ) app.include_router(health_router) app.include_router(documents_router) app.include_router(conversations_router) app.include_router(questions_router) static_dir = Path(__file__).parent / "static" app.mount("/static", StaticFiles(directory=static_dir), name="static") @app.get("/") def root() -> dict[str, str]: return { "app": settings.app_name, "docs": "/docs", "demo": "/demo", "health": "/health", } @app.get("/demo", include_in_schema=False) def demo() -> FileResponse: return FileResponse(static_dir / "demo.html") return app app = create_app()