from fastapi import FastAPI from fastapi.staticfiles import StaticFiles from fastapi.middleware.cors import CORSMiddleware from contextlib import asynccontextmanager from database import create_tables, run_migrations, SessionLocal from auth import create_default_admin from routes import auth_router, api_router, web_router @asynccontextmanager async def lifespan(app: FastAPI): create_tables() run_migrations() db = SessionLocal() try: create_default_admin(db) finally: db.close() yield app = FastAPI( title="InfoUser Monitor", description="PC monitoring dashboard with FastAPI and agents", version="1.0.0", lifespan=lifespan, ) app.mount("/static", StaticFiles(directory="static"), name="static") app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(auth_router) app.include_router(api_router) app.include_router(web_router) @app.get("/health") def health(): return {"status": "ok"}