Backend
25 packages, each available for 11 model families.
authentication
Wiring authentication into a backend service — session versus token, the verification middleware, refresh and rotation, and multi-tenant identity.
authorization
Enforcing access control in a service — where the check belongs, scoping queries by tenant, RBAC versus ABAC, and testing that a denial is actually…
background-jobs
Running work outside the request — job design, scheduling, idempotency, timeouts, observability, and the failure modes of cron in a distributed…
django
Django project structure — app boundaries, models and migration discipline, queryset hygiene that avoids N+1, forms and serializers, split settings,…
Sending transactional email that arrives — SPF/DKIM/DMARC, provider choice, templating, bounce handling, and keeping the sending domain reputable.
error-handling
Error handling in a server — the boundary that converts failures to responses, typed domain errors, retries, and what must never reach the client.
express
Express application structure — router organisation, async error handling, security defaults, request context, and testing without a live server.
fastapi
FastAPI application structure — routers by feature, dependency injection, Pydantic at the boundary, async versus sync endpoints, background work,…
flask
Flask application structure — the app factory, blueprints by feature, config classes, extension initialisation, request lifecycle hooks, error…
go-concurrency
Go concurrency without leaks — goroutine ownership, channels versus mutexes, context cancellation, errgroup, bounded worker pools, and making the…
go-conventions
Go project conventions — module layout, package naming, interfaces at the consumer, zero values, receivers, the vet/staticcheck gate, config, and…
go-errors
Go error handling — wrapping with %w, errors.Is and errors.As, sentinel versus typed errors, when panic is correct, message conventions, and handling…
go-http
HTTP servers in Go with the standard library — the 1.22 ServeMux patterns, handler and middleware shape, context propagation, timeouts, graceful…
logging
Structured logging that is searchable and safe — levels with meaning, correlation ids, redaction, sampling, and what belongs in metrics instead.
middlewares
HTTP middleware — correct ordering, per-route scoping, error propagation, async context, and keeping request-scoped state out of module scope.
monitoring
Metrics, traces and alerts for a backend service — the four golden signals, SLOs and error budgets, cardinality control, and alerts that mean act now.
nextjs
Next.js as a backend — server/client boundaries, route handlers, caching semantics, Server Actions, and keeping secrets out of the bundle.
node
Node.js server rules — the event loop, async correctness, streams and backpressure, process configuration, and the supply chain.
notifications
A notification system across email, push, SMS and in-app — one event model, user preferences, deduplication, digests, and delivery you can debug.
pydantic
Pydantic v2 in practice — model design at the boundary, validators that belong in the model versus the service, settings from the environment,…
python-async
asyncio without the foot-guns — when async is worth it, keeping the loop unblocked, TaskGroup over gather, cancellation and timeouts done correctly,…
python-conventions
Modern Python project conventions — typing that pays for itself, pyproject.toml as the single manifest, uv and ruff, package layout, logging,…
queues
Message queues that do not lose or duplicate work — acknowledgement, idempotent consumers, retries with backoff, dead-letter queues, and ordering.
validation
Validating input at the trust boundary — schema-first parsing, allowlists, mass-assignment prevention, and separating shape from business rules.
workers
Worker processes — pool sizing, concurrency against downstream limits, graceful shutdown, isolation, and autoscaling on the right signal.