43 lines
1.3 KiB
Python

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)