Four upgrades to production

This workshop is closer to production than a notebook, but four honest gaps remain: single-process state, opaque session tokens, no audit trail, and a rate limiter that still ships as the in-memory single-budget version. The Redis-backed and per-route limiters you saw are exactly that upgrade path. Here is the full plan, in the order I would do it.

The production upgrade path

Each upgrade slots into the existing module boundaries. You never rewrite the whole app.

Each upgrade is a small PR. Together they take the app from "workshop-ready" to "internal-ready".

Postgres first because it unblocks everything else. Once users, sessions, and audit rows live in a real database, JWT becomes optional (you no longer need a session store) and audit logging becomes trivial (one insert per query). Doing the upgrades in any other order forces rework.

Quiz: Quiz

Loading practice…