- Add findagram.co React frontend with product search, brands, categories - Add findadispo.com React frontend with dispensary locator - Wire findagram to backend /api/az/* endpoints - Update category/brand links to route to /products with filters - Add k8s manifests for both frontends - Add multi-domain user support migrations 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
82 lines
1.9 KiB
Python
82 lines
1.9 KiB
Python
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
|
|
)
|