from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware import uvicorn from config import get_settings from database import init_db from routes.auth_routes import router as auth_router from routes.search_routes import router as search_router from routes.alerts_routes import router as alerts_router from routes.dispensary_routes import router as dispensary_router from routes.contact_routes import router as contact_router settings = get_settings() # Create FastAPI app app = FastAPI( title="Find a Dispensary API", description="Backend API for Find a Dispensary - Cannabis dispensary locator", version="1.0.0", docs_url="/docs", redoc_url="/redoc" ) # Configure CORS app.add_middleware( CORSMiddleware, allow_origins=[ settings.frontend_url, "http://localhost:3000", "http://localhost:5173", "https://findadispo.com", "https://www.findadispo.com" ], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Include routers app.include_router(auth_router, prefix="/api") app.include_router(search_router, prefix="/api") app.include_router(alerts_router, prefix="/api") app.include_router(dispensary_router, prefix="/api") app.include_router(contact_router, prefix="/api") @app.on_event("startup") async def startup_event(): """Initialize database on startup""" init_db() @app.get("/") def root(): """Root endpoint""" return { "name": "Find a Dispensary API", "version": "1.0.0", "status": "running" } @app.get("/health") def health_check(): """Health check endpoint""" return {"status": "healthy"} @app.get("/api/version") def api_version(): """API version endpoint""" return {"version": "1.0.0"} if __name__ == "__main__": uvicorn.run( "server:app", host=settings.host, port=settings.port, reload=True )