feat: Add Findagram and FindADispo consumer frontends

- 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>
This commit is contained in:
Kelly
2025-12-05 16:10:15 -07:00
parent d120a07ed7
commit a0f8d3911c
179 changed files with 140234 additions and 600 deletions

View File

@@ -0,0 +1,81 @@
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
)