Project tutorial
Build an Axum Blog
Build Redrock Wire with Axum, Askama, Simple.css, SQLite, cookie sessions, owned post CRUD, search, password recovery, and a Fly.io deployment.
How this project works
Redrock Wire is an original teaching blog in twelve complete snapshots. Clone once and run any numbered folder without rebuilding earlier stages.
The path starts with Axum and routing, adds Askama and Simple.css, then introduces a SQLite file per snapshot. Later parts add sessions, media, ownership, pagination, search, reset tokens, and Fly.io deploy notes.
Snapshots 4–12 seed [email protected] and [email protected] with password123.
Each stage keeps its own DATABASE_PATH SQLite file so you can reset by deleting the database file.
Start with part 1 Open GitHub repo
Parts in order
Work through the parts in sequence. Each lesson explains the ideas in plain language, then points you to a complete runnable snapshot on GitHub for that stage.
- Part 1: Getting StartedCreate a minimal Axum app on port 8082.
- Part 2: RoutingOrganize page routes with the Axum Router.
- Part 3: Layout and UIRender Askama pages with Simple.css.
- Part 4: Data LayerPersist authors and posts with SQLite and sqlx.
- Part 5: Feed and DetailBuild a database-backed feed and post detail pages.
- Part 6: RegistrationValidate accounts and store bcrypt password hashes.
- Part 7: Login and SessionsAuthenticate with signed session cookies.
- Part 8: Profiles and MediaShow author profiles and accept constrained avatar uploads.
- Part 9: Posts CRUD and OwnershipCreate, edit, and delete posts with owner authorization.
- Part 10: Pagination and SearchPaginate the feed and search post text.
- Part 11: Password ResetIssue expiring one-use password reset tokens.
- Part 12: DeployPrepare Redrock Wire for Fly.io with a persistent SQLite volume.