Front page.What it is
Live
flowingkhaos
Build-in-public workshops and repair logs for people who can build with AI and still cannot ship.
Free fixes, gated workshops, and code you buy once and keep.

Set in type.The stack
What it runs on
A static site on Cloudflare, and one box on Railway behind it.
Site
- Astro7.3prerendered pages
- Preact10.29islands for checks and progress
- Pagefind1.5search
- Cloudflare Workershosting
Box
- Payload3.82fixes, workshops, products
- Hono4.13the API
- Better Auth1.6Google and email sign-in
- Postgres17with Drizzle 0.45, on Railway
AI + money
- AI SDK7.0writes the step checks, via OpenRouter
- Polarmerchant of record
- Resendemail
On the press.How it works
5 steps, in order
Free to read, gated to learn, paid once to own.
Read the fixes
Free, multi-part write-ups of real failures on my own apps: what broke, what it cost, the repair.

Start a workshop
Sign in with Google or email. Each workshop takes one app from git clone to production.

Pass the check
Every step ends with three questions written by AI from the step itself. The next step opens only when you pass.
Pass the final
Seven questions drawn from every step; five to pass.
Own the code
Buy a one-time licence to build and resell, paid once through Polar.

Pulled proof.The code
Steps open one at a time
/** * The route is walked in order: a step is open when every step before it is passed, or holds * no check to pass. The first step is always open. A step with no generated check cannot be * passed, so it must not shut the route behind it — otherwise a workshop whose checks are * not written yet would dead-end every reader at step two. */export function openSteps(steps: { slug: string }[], passedSlugs: string[], checkedSlugs: string[]): string[] { const passed = new Set(passedSlugs) const checked = new Set(checkedSlugs) const open: string[] = [] for (const step of steps) { open.push(step.slug) if (checked.has(step.slug) && !passed.has(step.slug)) break } return open}A step with no check yet cannot trap a reader. Only a written, unpassed check closes the route.
The reel.The walkthrough
Watch it run
Corrections.What it fixes
The problems it solves
AI-built apps stall at auth, migrations, deploys and cost.Each workshop walks one of those to production.
Courses you can click through without learning.Steps open one at a time, behind a check.
Monthly fees for code you never own.Pay once; keep a licence to build and resell.
Tutorials that hide what running it costs.Every fix states what the failure cost.
Editor's letter.Why I built it
Why it exists
I needed a product only I can publish: the real record of one person running software with agents.
The column and the free fixes bring people in. The paid code lives on my own site, sold through Polar, so the list and the checkout stay mine.

Against the rack.Better than average
Against the usual tools
Against Skool, Maven and Indie Hackers. Their side was read from each vendor's own pages on 2026-09-27.
| What | The market average | This app |
|---|---|---|
| Progress | Lessons ticked done by the member, or a closing reflection. | A check per step and a final exam.vendor's page |
| What you keep | Access to the lessons; on Skool, only while you pay. | A perpetual licence to the code.vendor's page |
| Where you sign up and pay | On the platform; the member list can be exported. | On my own site, with Polar as merchant of record.vendor's page |
| Running cost | A monthly fee, a cut of each sale, or both. | Static pages and one box, about CA$24 a month planned; card fees still apply.estimated |
The imprint.How long it took
71 commits, live in 11 days
- commits
- 71
- days with a commit
- 13
- days, first commit to live
- 11
- The rebuild starts
- Live
- Latest site commit. The API adds 13 commits over 5 days.
Measured: git log of the site since the rebuild, 2026-09-27. The shared starter template is excluded.
Colophon.Where it sits in the ledger
