⚡
FastAPI Production L3 PRO · 105 lessons REST APIs the way US startups ship them
105 lessons across 6 modules: FastAPI basics, Pydantic v2 validation, auth & security, async + background tasks + WebSockets, production deployment, and real-world patterns (rate limiting, caching, RLS multi-tenancy, OpenTelemetry, feature flags, blue/green vs canary).
✅ Before you start
· Python Foundations done — you read & write functions, classes, decorators · Basic HTTP: GET / POST / status codes. No prior framework experience needed · Postgres or any SQL DB you can `SELECT *` from (we'll show you docker run) ℹ️ Heads-up on the format: These lessons are concept explanations + quizzes + predict-the-output exercises. The code samples don't execute in your browser because Pyodide can't spin up an HTTP server / database / TCP socket. To run them, copy snippets into your own machine — or pair this track with Foundations (which DOES run live in-browser via Skulpt).
🗺 Map 📚 Curriculum
🔒 Pydantic v2 — your contract layer
🔒 Dependency injection — FastAPI's killer feature
🔒 SQLAlchemy 2.0 async — the new normal
🔒 Error handling — proper HTTP semantics
🔒 Testing with pytest + httpx
🔒 Deploying to Fly.io / Vercel / Railway
🔒 🏆 Capstone — build a SaaS subscription API
🔒 Path parameters and types
🔒 Async DB with SQLAlchemy 2.0
🔒 Testing with httpx ASGITransport
🔒 Deploying with gunicorn + uvicorn
🔒 🎯 Review: FastAPI module 1 recap
🔒 Server-Sent Events (SSE) streaming
🔒 File uploads (single + multi)
🔒 Background workers (Celery / arq / RQ)
🔒 Caching responses with Redis
🔒 Rate limiting with slowapi
🔒 API versioning strategies
🔒 OpenAPI customization + Swagger UI tweaks
🔒 CORS deep-dive (allow_origin_regex)
🔒 Trusted host + HTTPS redirect middleware
🔒 Webhook receivers with signature verification
🔒 Idempotency keys (replay-safe POST)
🔒 Pagination: offset vs cursor
🔒 Search: filtering + sorting + faceting
🔒 Bulk operations (batch insert/update)
🔒 Long-polling vs WebSocket vs SSE
🔒 GraphQL with Strawberry on FastAPI
🔒 gRPC integration (when REST is wrong)
🔒 OpenTelemetry instrumentation
🔒 🏆 Capstone — production-ready SaaS API
🔒 🎯 Review: FastAPI module 2 recap
🔒 Microservices vs monolith — when to split
🔒 Service discovery in Kubernetes
🔒 gRPC vs REST — when to switch
🔒 OAuth2 scopes — fine-grained authorization
🔒 mTLS for service-to-service auth
🔒 HMAC webhook signature verification
🔒 Token bucket rate limiter
🔒 Sliding window log rate limiter
🔒 Retries with exponential backoff + jitter
🔒 Bulkhead pattern — limit blast radius
🔒 Graceful shutdown + readiness probes
🔒 Connection pool sizing — DB and HTTP
🔒 DataLoader — eliminate the N+1 trap
🔒 Idempotency keys for mutating endpoints
🔒 API versioning + deprecation headers
🔒 🏆 Capstone — notifications microservice
🔒 🎯 Review: FastAPI module 3 recap
🔒 ASGI internals — scope, receive, send
🔒 Custom middleware — body-already-consumed
🔒 Background tasks — three tiers
🔒 Dependency injection — yield, sub-deps, scopes
🔒 SSE and streaming responses
🔒 WebSocket auth + reconnection
🔒 File uploads at scale — presigned URLs
🔒 SQLAlchemy 2.0 async — loading strategies
🔒 Async pitfalls — blocking the event loop
🔒 Pure-Python circuit breaker
🔒 Testing async — httpx ASGITransport
🔒 OpenAPI customization — tags, security, examples
🔒 SDK auto-generation from OpenAPI
🔒 CORS deep — preflight, credentials, regex
🔒 Settings + secrets with pydantic-settings
🔒 Structured logging + correlation IDs
🔒 Sentry, error budgets, sampling
🔒 Alembic with multi-tenant schemas
🔒 Health probes — shallow vs deep
🔒 🏆 Capstone — payments microservice end-to-end
🔒 🎯 Review: FastAPI module 4 recap
🔒 Pagination: offset/limit vs cursor
🔒 Rate limiting under load: Redis-backed token buckets
🔒 Response caching with Cache-Control + ETag
🔒 BackgroundTasks vs Celery vs ARQ
🔒 File uploads: streaming vs buffered
🔒 WebSockets: rooms with Redis Pub/Sub
🔒 Health checks: liveness vs readiness
🔒 Structured logs with request_id (contextvars)
🔒 Sentry integration + sampling
🔒 OpenTelemetry for vendor-neutral tracing
🔒 Feature flags (GrowthBook / LaunchDarkly)
🔒 Multi-tenancy: row-level + Postgres RLS
🔒 API versioning: URL vs header
🔒 Deployment: gunicorn + uvicorn workers
🔒 🏆 Capstone: production-ready FastAPI checklist
Tip: click any lesson to revisit it. After your first attempt, the “Show example” button reveals the full solution.