from fastapi import FastAPI, Request from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.gzip import GZipMiddleware from fastapi.responses import ORJSONResponse from fastapi.staticfiles import StaticFiles from starlette.responses import JSONResponse import modules import routers from utils.auto_include_routers import auto_include_routers from utils.exceptions import ObjectNotFoundException origins = ["http://localhost:3000"] app = FastAPI( separate_input_output_schemas=True, default_response_class=ORJSONResponse, root_path="/api", ) app.add_middleware( CORSMiddleware, allow_origins=origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.add_middleware( GZipMiddleware, minimum_size=1_000, ) @app.exception_handler(ObjectNotFoundException) async def unicorn_exception_handler(request: Request, exc: ObjectNotFoundException): return JSONResponse(status_code=404, content={"detail": exc.name}) auto_include_routers(app, routers) auto_include_routers(app, modules, True) app.mount("/static", StaticFiles(directory="static"), name="static")