"""FastAPI application entry point.""" from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.staticfiles import StaticFiles import os from app.core.config import settings from app.api.routes import router as routes_router from app.api.bus_stops import router as bus_stops_router from app.api.schedules import router as schedules_router from app.api.coupons import router as coupons_router from app.api.taxis import router as taxis_router from app.api.auth import router as auth_router from app.api.users import router as users_router from app.api.favorites import router as favorites_router from app.api.telemetry import router as telemetry_router from app.api.businesses import router as businesses_router from app.api.analytics import router as analytics_router from app.api.reports import router as reports_router from app.api.shuttles import router as shuttles_router app = FastAPI( title="SIBU Transportation API", description="API for SIBU public transportation system", version="1.0.0", debug=settings.debug, ) # CORS middleware origins = [ "http://localhost:5173", "http://127.0.0.1:5173", "https://sibu2-0-transport-2026.web.app", "https://sibu2-0-transport-2026.firebaseapp.com", ] app.add_middleware( CORSMiddleware, allow_origins=origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Ensure upload directories exist for sub in ["profiles", "vehicles", "businesses"]: os.makedirs(os.path.join("uploads", sub), exist_ok=True) # Mount static files app.mount("/uploads", StaticFiles(directory="uploads"), name="uploads") # Include routers app.include_router(routes_router) app.include_router(bus_stops_router) app.include_router(schedules_router) app.include_router(coupons_router) app.include_router(taxis_router) app.include_router(auth_router) app.include_router(users_router) app.include_router(favorites_router) app.include_router(telemetry_router) app.include_router(businesses_router) app.include_router(analytics_router, prefix="/api/analytics", tags=["analytics"]) app.include_router(reports_router) app.include_router(shuttles_router) @app.get("/") async def root(): """Root endpoint.""" return {"message": "SIBU Transportation API", "version": "1.0.0"} @app.get("/health") async def health(): """Health check endpoint.""" return {"status": "healthy", "environment": settings.environment}