from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.api.v1 import health, products, cart from app.core.config import settings from app.db.session import engine from app.models import base_model # Create tables if they don't exist base_model.Base.metadata.create_all(bind=engine) app = FastAPI( title=settings.PROJECT_NAME, description=settings.PROJECT_DESCRIPTION, version=settings.PROJECT_VERSION, openapi_url=f"{settings.API_V1_STR}/openapi.json", docs_url="/docs", redoc_url="/redoc", ) # Set up CORS if settings.BACKEND_CORS_ORIGINS: app.add_middleware( CORSMiddleware, allow_origins=[str(origin) for origin in settings.BACKEND_CORS_ORIGINS], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Include routers app.include_router(health.router, prefix=settings.API_V1_STR) app.include_router(products.router, prefix=settings.API_V1_STR) app.include_router(cart.router, prefix=settings.API_V1_STR) @app.get("/") async def root(): return { "message": "Welcome to Simple Cart System API", "documentation": "/docs", } if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8000)