from fastapi import FastAPI, Request from fastapi.responses import HTMLResponse from fastapi.staticfiles import StaticFiles import uvicorn from classes.constraints import Constraints from starlette.exceptions import HTTPException as StarletteHTTPException app = FastAPI(docs_url=None, redoc_url=None) app.mount('/static', StaticFiles(directory='frontend/static'), name='static') from routers import auth, static, dashboard, db, api app.include_router(auth.router) app.include_router(dashboard.router) app.include_router(static.router) app.include_router(api.router) @app.get("/") @app.get('/root', response_class=HTMLResponse) async def root(request: Request): return Constraints.templates.TemplateResponse('/root/index.html', {'request': request}) # shitty error handling @app.exception_handler(StarletteHTTPException) async def http_exception_handler(request, exc): if exc.status_code == 404: return Constraints.templates.TemplateResponse('/errors/index.html', {'request': request, 'error': 'not found...', 'url': '/root'}) elif exc.status_code == 500: return Constraints.templates.TemplateResponse('/errors/index.html', {'request': request, 'error': 'internal server error', 'url': '/root'}) return Constraints.templates.TemplateResponse('/errors/index.html', {'request': request, 'error': exc.detail, 'url': '/root'}) if __name__ == '__main__': uvicorn.run(app, host='127.0.0.1', port=8080)