Back to roadmaps
08

Pillar

buildLive

The whole product: a real system, capability by capability, in order.

Work in progressThis roadmap is live but still growing — more exercises are on the way.

Act 1 · Build the slice

01

Persist State

State that survives restarts, crashes, and your own mistakes.

You build

  • A schema that models the business
  • Transactions that keep it consistent
  • Migrations you can run forward and back

In the stack

PostgresDjango ORM + migrations

Exercises

Handle timezonesMake the write atomicEvolve the schema
02

Expose

Turn stored state into something a client can use.

You build

  • A versioned HTTP API with validation
  • Pagination
  • Errors a caller can act on
  • Idempotent writes

In the stack

Django RESTNginx

Exercises

Trace the requestRight status codesParse the query string safelySerialize the responseFix pagination off-by-onesText that survives round-tripsEvolve the API without breaking v1Consistent error envelopesIdempotency keysClean filtering & paginationValidate at the boundary
03

Render

A screen that drives the API, not a screen that looks like one.

You build

  • Server-rendered pages
  • Forms with real validation
  • Loading and error states
  • A UI that still works when the API is slow

In the stack

Next.js

Exercises

No exercises yet

Act 2 · Make it a product

04

Identify

Who is this, and may they do that?

You build

  • Signup, login, sessions
  • Password reset
  • Roles
  • Tenancy so one customer never sees another's data

In the stack

Django authSession cookies through NginxNext.js middleware

Exercises

Hash passwords properlyClose the IDORDon't leak fields
05

Work in the background

Anything that takes longer than a request has to leave the request.

You build

  • A job queue
  • Scheduled tasks
  • Retries with backoff
  • A dead-letter path

In the stack

CeleryRedis

Exercises

Fix the thread raceRetry with backoff + jitterTimeout & cancel
06

Move money

The one capability where “almost right” is the same as wrong.

You build

  • Checkout
  • Webhooks you can trust
  • Refunds
  • A ledger that reconciles to the cent

In the stack

StripeA ledger table in Postgres

Exercises

Money mathShip the checkout service
07

Notify

Tell people things happened, exactly once.

You build

  • Transactional email
  • SMS
  • Outbound webhooks
  • Delivery tracking

In the stack

A provider SDK behind a background job

Exercises

No exercises yet
08

Search

Finding things at human scale, without a search cluster.

You build

  • Filtering
  • Sorting
  • Full-text search
  • The indexes that keep it fast

In the stack

Postgres full-text search + indexes

Exercises

Parameterize the queryKill the N+1
09

Store files

Uploads, images, documents, and the bills they generate.

You build

  • Direct-to-storage uploads
  • Signed URLs
  • Image resizing
  • Access control on files

In the stack

S3-compatible object storage

Exercises

Stop path traversal

Act 3 · Run it in production

10

Integrate

Someone else's API, someone else's outages.

You build

  • A client with timeouts
  • Retries
  • Circuit breaking
  • A boundary that keeps third-party failure from becoming yours

In the stack

A Python client wrapped in a service layer

Exercises

Move secrets out of codeRetry with backoff + jitterTimeout & cancelGraceful degradationCircuit breaker
11

Observe

Know it broke before the customer tells you.

You build

  • Structured logs
  • Request metrics
  • Alerts that fire on the right things
  • A runbook for the first three incidents

In the stack

Nginx + Django logsA metrics endpointAn alerting tool

Exercises

No exercises yet
12

Deploy

The capability every tutorial skips and every business starts with.

You build

  • A reproducible deploy
  • TLS
  • Environment config
  • Backups you've restored
  • A rollback you've run

In the stack

NginxDockerA single VPS

Exercises

Harden the API end-to-end