Two learning paths
Pick where you are starting from
Two paths, four modules each, four one-hour sessions per module. Both end with something you can hand to someone else — not with a certificate.
32 sessions · 32 hours
0 of 32 hours done
Nothing is locked. Start anywhere, in any order.
Every session
Go straight to any hour. The map below shows how they fit together.
Beginner · Client-ready: promo material and a company profile
16 sessions · 16 hours
| Code | Session | What exists at the end | Done |
|---|---|---|---|
| A1 · Understand the business first4 hours | |||
| A1.1 | Interviewing the ownerFilled-in interview notes | Filled-in interview notes | |
| A1.2 | One message for everythingOne positioning sentence that survives the test | One positioning sentence that survives the test | |
| A1.3 | Gathering real materialA folder of verified material | A folder of verified material | |
| A1.4 | The one-page brand briefA brief pasted into a Project and used from here on | A brief pasted into a Project and used from here on | |
| A2 · Visual promo material4 hours | |||
| A2.1 | The visual briefA brief for each piece | A brief for each piece | |
| A2.2 | Generating promo images, and the limitsThree candidate visuals | Three candidate visuals | |
| A2.3 | Text on the imageThe final version, checked at phone size | The final version, checked at phone size | |
| A2.4 | Assembling a week of contentA week's content package, ready to post | A week's content package, ready to post | |
| A3 · A company profile people can decide from4 hours | |||
| A3.1 | Which pages a small business actually needsA page map with the question each page answers | A page map with the question each page answers | |
| A3.2 | Copy that does not read as AIFinal text for every page | Final text for every page | |
| A3.3 | Building the site without codeThe site, built but not yet published | The site, built but not yet published | |
| A3.4 | Publishing, then four checksA live URL you can send | A live URL you can send | |
| A4 · Turning it into work4 hours | |||
| A4.1 | Packages and pricingA price list you could send today | A price list you could send today | |
| A4.2 | From brief to handoverA project checklist | A project checklist | |
| A4.3 | Revisions without losing timeA written revision policy | A written revision policy | |
| A4.4 | Image rights, and what you must not promiseA one-page scope and limits sheet | A one-page scope and limits sheet | |
Builder · From pages to a working application
16 sessions · 16 hours
| Code | Session | What exists at the end | Done |
|---|---|---|---|
| B1 · Specify before you build4 hours | |||
| B1.1 | A PRD that can be built fromA one-page PRD a model has already argued against | A one-page PRD a model has already argued against | |
| B1.2 | Vibecoding and its one safety ruleYour own working rules, written down | Your own working rules, written down | |
| B1.3 | Reading a diff without knowing codeOne change accepted knowingly, one rejected | One change accepted knowingly, one rejected | |
| B1.4 | Just enough GitHubA repository holding your project, with several commits | A repository holding your project, with several commits | |
| B2 · From a page to an application4 hours | |||
| B2.1 | Static or dynamic: when you really need a serverAn architecture decision you can justify | An architecture decision you can justify | |
| B2.2 | Data: storing it, reading it, not losing itA form whose submissions actually survive | A form whose submissions actually survive | |
| B2.3 | Accounts and login without building themSigning in as two different users | Signing in as two different users | |
| B2.4 | Deploying an application, not just a siteThe app live at a URL, used from a phone | The app live at a URL, used from a phone | |
| B3 · Making it work without you4 hours | |||
| B3.1 | Agent, chatbot, workflow: the differenceThe right choice for your case, with a reason | The right choice for your case, with a reason | |
| B3.2 | Connecting AI to your own dataAn answer you can trace back to a row | An answer you can trace back to a row | |
| B3.3 | End to end: webhooks, APIs, JSONOne flow that runs untouched | One flow that runs untouched | |
| B3.4 | Guardrails, approval, and testing before releasePasses five deliberately hostile inputs | Passes five deliberately hostile inputs | |
| B4 · Keeping it alive4 hours | |||
| B4.1 | The failures that only appear in productionLogs you can actually read when it breaks | Logs you can actually read when it breaks | |
| B4.2 | Cost: what is expensive, and whenA monthly estimate that holds up | A monthly estimate that holds up | |
| B4.3 | The security basics you cannot skipNo secret in the repository, access scoped | No secret in the repository, access scoped | |
| B4.4 | Handing it over: documentation and ownershipSomeone else can run it from your notes | Someone else can run it from your notes | |
The shape of it
The same 32 sessions, seen whole. Click any one to open it.
The map needs a wider screen. The table above has everything it holds.
Progress is saved in this browser only.