import uvicorn from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.db import close_mongo, connect_to_mongo from app.routes.budget import router as budget_router from app.scheduler import BudgetScheduler app = FastAPI(title="Early Overspending Alerts") app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) scheduler = BudgetScheduler() @app.on_event("startup") async def startup_event(): db = await connect_to_mongo() app.state.db = db scheduler.start(db) print("Budget scheduler running every 10 seconds") @app.on_event("shutdown") async def shutdown_event(): scheduler.shutdown() await close_mongo() app.include_router(budget_router) if __name__ == "__main__": uvicorn.run("app.main:app", host="0.0.0.0", port=7860, reload=False)