from fastapi import FastAPI, Request from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import JSONResponse from app import __version__ from app.api.v1 import api_router from app.api.v1 import health from app.core.config import settings from app.middlewares.tenant import TenantHeaderMiddleware from shared.exceptions import AppError def create_app(): app = FastAPI( title="Torbat Workspace", version=__version__, description="Enterprise work management platform", ) app.add_middleware( CORSMiddleware, allow_origins=settings.cors_origin_list, allow_credentials=False, allow_methods=["*"], allow_headers=["*"], ) app.add_middleware(TenantHeaderMiddleware) @app.exception_handler(AppError) async def handle(request: Request, exc: AppError): return JSONResponse( status_code=exc.status_code, content={"error": {"code": exc.error_code, "message": exc.message, "details": exc.details}}, ) app.include_router(health.router) app.include_router(api_router, prefix=settings.api_v1_prefix) return app app = create_app()