Django SaaS
Next on the path · Ship a SaaS app · See all steps
Build a real SaaS. Think in systems, own what you ship.
You build Signoff, a multi-tenant content workflow app: Django, HTMX, a tested approval state machine, and an API an AI agent can use without ever bypassing human approval. In six weeks you go from domain model to deployed app, using AI where it helps and your own judgment where it matters.
6 weeks · Python, Django, HTMX · self-paced · €99 one-time
Getting it to work is the easy part. Keeping it working is the job.
Signoff is a content calendar for developers and small teams who publish regularly. Posting rules give every channel owned weekly slots, and nothing goes out until a teammate signs off, with comments and change requests much like a pull request review. It's modeled on the content tool I run my own publishing on, cut down to what you can build and understand in six weeks.
Why this app
Most practice projects stop at CRUD. Signoff has the patterns real products are made of, in one codebase small enough to finish in six weeks.
A workflow as a state machine
Draft, review, approved, published. An author can't approve their own post. The same pattern runs orders, tickets, invoices and deployments.
Real multi-tenancy
Organizations, an org switcher, and every query scoped to the active org. Tests prove a user in one org gets a 404 on another org's data. A common pattern in B2B SaaS.
Posting rules that fill the calendar
"LinkedIn every Tuesday, Alice owns it." A sync turns rules into open slots, is safe to run twice, and never deletes a slot someone started writing.
An API with an optional AI plugin
Hashed, per-user tokens. Build a Claude skill that fills open slots with drafts, or keep writing by hand. The API can never approve or publish.
A calendar that feels like an app
Drag posts between days, add one from any day, review inline, switch to dark mode. Server-rendered Django and HTMX, no JS framework.
Shipped, not localhost
Docker, Fly.io, CI that deploys only when tests are green, error tracking and backups. A live URL you can show.
Use AI. Keep your engineering judgment.
Write the code yourself, with an agent, or both. Either way, deciding what the system should do, and checking that it does it, stays with you.
- Weeks 1-2: the core.The domain model and the review workflow as a pure state machine, with business rules kept out of Django. Small enough to study closely, and everything after it depends on it.
- Weeks 3-6: the framework around it.Views, HTMX, tenancy, the API and the deploy. This is where an agent saves the most typing, and where it most easily breaks a rule from the core.
- Tests every week, plus your own.The suite is the spec. You add your own tests and look for what it doesn't cover.
- Planted failure cases.A query that leaks another org's data, an API that can publish, hardcoded settings. Learn the mistake behind each one, and make sure a test catches it.
- A decision record per week.What you chose, the alternative, and why. This is where the engineering judgment gets trained.
The bar for done: green tests, clean ruff and ty, and you can explain the important decisions and code paths, whoever typed them.
Six weeks, one deployed app
| Week | You build | You decide |
|---|---|---|
| 1 | Domain model: channels, posts, workflow states, admin | What belongs in the data model |
| 2 | The review workflow as your own tested state machine | Why domain rules live outside views, and own code vs a library |
| 3 | Calendar, posting rules and slot sync, drag and drop, HTMX reviews | Server-rendered vs a JS frontend |
| 4 | Organizations, membership, org-scoped queries | Shared database vs one per tenant |
| 5 | A token-scoped JSON API, plus an optional Claude plugin that fills open slots | What a plugin may do, and what stays human |
| 6 | Docker, Fly.io, CI/CD, error tracking, backups | The simplest database that meets your needs (SQLite as the example) |
| Bonus (optional) | Tasks per handoff, attachments, email notifications via Resend | Email in the request vs a background job |
What you get
Build it at your own pace
- Lessons, test suites and hints for all six weeks, plus the bonus week
- Bonus: my Claude Code setup (CLAUDE.md, skills and settings) to steer an agent through the build
- Weekly knowledge checks
- The full reference solution, unlocked after your last week
- Lifetime access and updates
Everything you build is yours, including commercial use.
Who is this for?
You know Python, uv, git and pytest (the Foundations course covers all four), and you want to build something bigger than a script. No Django experience needed. Whether you write the code yourself, with AI, or both, you want to understand it well enough to own it.
In six weeks, you ship a deployed, production-minded SaaS and can explain every decision in it.
Rather build your own project with me? Scope it with ScopeFirst or book a call →