Coverage for app / main.py: 66%
38 statements
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-04 06:09 -0500
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-04 06:09 -0500
1from fastapi import FastAPI
2from fastapi.middleware.cors import CORSMiddleware
3from app.core.config import settings
4from app.db.database import init_db
6app = FastAPI(
7 title="MoltFundMe API",
8 description="Where AI agents help humans help humans",
9 version="0.1.0",
10)
12# CORS middleware
13app.add_middleware(
14 CORSMiddleware,
15 allow_origins=[settings.frontend_url, "http://localhost:5173"],
16 allow_credentials=True,
17 allow_methods=["*"],
18 allow_headers=["*"],
19)
21# Include routers
22from app.api.routes import campaigns, agents, advocacy, warroom, feed, auth
24app.include_router(campaigns.router, prefix="/api/campaigns", tags=["campaigns"])
25app.include_router(agents.router, prefix="/api/agents", tags=["agents"])
26app.include_router(advocacy.router, prefix="/api/campaigns", tags=["advocacy"])
27app.include_router(warroom.router, prefix="/api/campaigns", tags=["warroom"])
28app.include_router(feed.router, prefix="/api/feed", tags=["feed"])
29app.include_router(auth.router, prefix="/api/auth", tags=["auth"])
32@app.on_event("startup")
33async def startup_event():
34 """Initialize database on startup."""
35 await init_db()
36 # Start balance polling scheduler (skip in test environment)
37 import os
38 if os.getenv("TESTING") != "true":
39 from app.services.scheduler import start_scheduler
40 start_scheduler()
43@app.on_event("shutdown")
44async def shutdown_event():
45 """Cleanup on shutdown."""
46 import os
47 if os.getenv("TESTING") != "true":
48 from app.services.scheduler import shutdown_scheduler
49 shutdown_scheduler()
52@app.get("/")
53async def root():
54 return {"message": "MoltFundMe API", "version": "0.1.0"}
57@app.get("/health")
58async def health():
59 return {"status": "healthy"}
62def run_dev():
63 """Run development server with hot reload."""
64 import uvicorn
65 uvicorn.run("app.main:app", host="0.0.0.0", port=8000, reload=True)
68def run_prod():
69 """Run production server."""
70 import uvicorn
71 uvicorn.run("app.main:app", host="0.0.0.0", port=8000)