Build a FastAPI Blog

Build Rivermouth Dispatch with FastAPI, Jinja2, HTMX, Pico.css, SQLAlchemy, session cookies, owned post CRUD, search, password recovery, and a Render deployment.

  • Difficulty Intermediate
  • Parts 12
  • Stack Python, FastAPI, Jinja2, HTMX, Pico.css, SQLAlchemy 2, PostgreSQL, passlib/bcrypt

How this project works

Rivermouth Dispatch is an original teaching blog in twelve complete snapshots. Clone once and run any numbered folder without rebuilding earlier stages.

The path starts with FastAPI and routing, adds Jinja2 and Pico, then introduces isolated Postgres databases. Later parts add sessions, media, ownership, pagination, search, reset tokens, and Render deploy notes.

Snapshots 4–12 seed ada@example.com and grace@example.com with password123.

Local Postgres runs through Docker Compose on host port 5435 with databases rivermouth_01rivermouth_12.

Open GitHub repo →

Parts in order

Work through the parts in sequence. Each lesson explains the ideas, then points you to a runnable GitHub snapshot.