from pathlib import Path from fastapi import FastAPI from fastapi.staticfiles import StaticFiles from starlette.middleware.sessions import SessionMiddleware from .config import read_env_bool, read_env_value from .routes import alerting, apps, audit, auth, backups, catalog, deployments, developers, environment, health, incidents, jobs, migration_readiness, operations, runtime, scheduled_scripts, users, workers def create_app() -> FastAPI: app = FastAPI(title="CSBot Services Portal") session_secret = read_env_value("PORTAL_SESSION_SECRET", "") or "dev-only-appfactory-session-secret" app.add_middleware( SessionMiddleware, secret_key=session_secret, same_site="lax", https_only=read_env_bool("APPFACTORY_ENABLE_HTTPS"), ) static_dir = Path(__file__).parent / "static" app.mount("/static", StaticFiles(directory=static_dir), name="static") app.include_router(health.router) app.include_router(catalog.router) app.include_router(auth.router) app.include_router(apps.router) app.include_router(developers.router) app.include_router(backups.router) app.include_router(deployments.router) app.include_router(incidents.router) app.include_router(alerting.router) app.include_router(migration_readiness.router) app.include_router(operations.router) app.include_router(scheduled_scripts.router) app.include_router(jobs.router) app.include_router(workers.router) app.include_router(users.router) app.include_router(audit.router) app.include_router(runtime.router) app.include_router(environment.router) return app app = create_app()