Initial commit: waitlist microservice
Some checks failed
Test & Deploy Waitlist / test (push) Failing after 44s
Test & Deploy Waitlist / deploy (push) Has been skipped

This commit is contained in:
Roberto Musso
2026-04-11 10:35:53 +02:00
commit 4b2fefcf92
22 changed files with 841 additions and 0 deletions

59
app/main.py Normal file
View File

@@ -0,0 +1,59 @@
import logging
from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from app.config import settings
from app.rate_limit import RateLimiter
from app.routes import router
from app.security import OriginValidator, RequestSizeLimiter
logger = logging.getLogger(__name__)
@asynccontextmanager
async def lifespan(app: FastAPI):
logger.info("Waitlist service starting (env=%s)", settings.ENVIRONMENT)
yield
logger.info("Waitlist service shutting down")
app = FastAPI(
title="adiuvAI Waitlist",
version="1.0.0",
docs_url="/docs" if settings.ENVIRONMENT != "production" else None,
redoc_url=None,
openapi_url="/openapi.json" if settings.ENVIRONMENT != "production" else None,
lifespan=lifespan,
)
# ── Middleware stack (outermost runs first) ──────────────────────────
# 1. CORS — locked to allowed origins
app.add_middleware(
CORSMiddleware,
allow_origins=settings.origins_list,
allow_methods=["POST", "OPTIONS"],
allow_headers=["Content-Type"],
allow_credentials=False,
max_age=86400,
)
# 2. Rate limiter (per-IP, Cloudflare-aware)
app.add_middleware(RateLimiter)
# 3. Origin / Referer validation (production only)
app.add_middleware(OriginValidator)
# 4. Request body size limit (4 KB)
app.add_middleware(RequestSizeLimiter)
# ── Routes ───────────────────────────────────────────────────────────
app.include_router(router, prefix="/api/v1")
@app.get("/health")
async def health():
return {"status": "ok"}