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:
81
findadispo/backend/server.py
Normal file
81
findadispo/backend/server.py
Normal 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
|
||||
)
|
||||
Reference in New Issue
Block a user