01 · Render a catalog
Route requests and render semantic HTML with escaped search values and workshop detail pages.
Continue from Parts I–III
Build Workshop Desk, a browser app with a searchable catalog, sign-in, reservations, and accessible forms.

12 chapters
12 chapters
Route requests by method and path. Decode dynamic IDs and keep URL construction separate from HTML interpolation.
Pages 5–77 · 8 casesRender HTML with context-aware encoding. Preserve user text without giving it markup or navigation authority.
Pages 78–150 · 8 casesAccept browser form data through a bounded parser. Validate values and relationship rules before a write.
Pages 151–223 · 8 casesUse semantic markup, meaningful action labels, errors associated with inputs, and status announcements.
Pages 224–296 · 8 casesCommit state changes as one transaction. Use unique constraints, check capacity, and redirect after a successful POST.
Pages 337–409 · 8 casesMap a cookie to server-side state. Enforce expiry, rotate at sign-in, and invalidate at sign-out.
Pages 410–482 · 8 casesCheck form tokens before browser writes. Use the current session and apply a deliberate origin policy.
Pages 483–555 · 8 casesVerify the actor separately from the requested resource. Scope every private query and mutation to that actor.
Pages 556–628 · 8 casesDesign search and pagination as part of the browser interface. Keep current filters and stable sort order in navigation.
Pages 669–741 · 8 casesChoose status, headers and user feedback that reflect the real outcome. Keep private documents out of shared caches.
Pages 742–814 · 8 casesKeep a usable native browser path. Add JavaScript enhancements only when their failure leaves the original flow usable.
Pages 815–887 · 8 casesTest realistic sequences and refused actions. Inspect the stored result and verify keyboard behavior separately from HTTP status.
Pages 888–960 · 8 casesThree connected projects
Route requests and render semantic HTML with escaped search values and workshop detail pages.
Rotate sessions, validate form tokens, reserve a seat in a transaction, and enforce ownership.
Check labels, keyboard navigation, denied writes, logout, and a real local HTTP response.
Look inside
Try a browser routing case in the free 16-page excerpt. Preview the source pages from each project.

The series
The PDF and ZIP include 96 runnable cases with assertions and recorded output, a project suite with tests, and a curriculum index. Use Python 3.12 or newer.
Open the Gumroad listing · $20USD base price. Applicable tax is calculated at checkout.