import sys from pathlib import Path # Add backend directory to Python path backend_dir = Path(__file__).resolve().parent.parent if str(backend_dir) not in sys.path: sys.path.insert(0, str(backend_dir)) from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.staticfiles import StaticFiles import uvicorn from app.database.database import engine, Base from app.config import settings from app.routers import auth, users, products, categories, cart, orders, wishlist, contact, models, brands # Create uploads directory if it doesn't exist uploads_dir = Path("uploads") uploads_dir.mkdir(exist_ok=True) # Create tables Base.metadata.create_all(bind=engine) app = FastAPI( title="E-commerce API", description="Full-featured e-commerce API for clothing and shoes", version="1.0.0", ) # CORS middleware app.add_middleware( CORSMiddleware, allow_origins=[settings.frontend_url, "http://localhost:3000", "http://localhost:5173"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Include routers app.include_router(auth.router) app.include_router(users.router) app.include_router(products.router) app.include_router(categories.router) app.include_router(models.router) app.include_router(brands.router) app.include_router(cart.router) app.include_router(orders.router) app.include_router(wishlist.router) app.include_router(contact.router) # Mount static files for uploads app.mount("/uploads", StaticFiles(directory="uploads"), name="uploads") @app.get("/") def read_root(): return { "message": "E-commerce API", "version": "1.0.0", "docs": "/docs", } @app.get("/health") def health_check(): return {"status": "healthy"} if __name__ == "__main__": uvicorn.run("app.main:app", host="0.0.0.0", port=8000, reload=True)