import os import uvicorn from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from api.routers import auth_router, health_router, todo_router, user_router from db.database import create_tables app = FastAPI( title="SimpleTodoApp API", description="API for a simple todo application with authentication", version="0.1.0", ) # CORS settings app.add_middleware( CORSMiddleware, allow_origins=["*"], # For development, in production specify your frontend domain allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Include routers app.include_router(auth_router.router, prefix="/api/auth", tags=["auth"]) app.include_router(user_router.router, prefix="/api/users", tags=["users"]) app.include_router(todo_router.router, prefix="/api/todos", tags=["todos"]) app.include_router(health_router.router, prefix="/api", tags=["health"]) # Create database tables on startup @app.on_event("startup") async def startup(): create_tables() if __name__ == "__main__": # Get port from environment variable or use default of 8002 # This avoids the conflict with port 8001 which is already in use port = int(os.environ.get("PORT", 8002)) host = os.environ.get("HOST", "0.0.0.0") uvicorn.run("main:app", host=host, port=port, reload=True)