# Learn by building Leaseline

URL: /code/learn · Id: `page:code/learn`

> Twelve tutorials that build one Startup, Leaseline, from an empty folder to launch, one file convention at a time.

Twelve tutorials build one [Startup](/business/nouns/startup), Leaseline, from an empty folder to [Live](/business/lifecycle/states/live). Each adds one part of the business as one file and shows what it compiles to.

## The Startup you build
Leaseline (`leaseline.app`) tracks lease renewals for property managers with 20 to 500 units. Its founder holds the approvals, and an agent fills its [Success Manager](/agents/customer/success-manager) [Role](/business/nouns/role). Every id in the tutorials is a record in Leaseline's own data, so a call you copy returns what the page shows.

## The twelve tutorials
Each tutorial adds one part of the business as one [File](/business/nouns/file) or one call. Parts include a [Noun](/business/nouns/noun), a [Verb](/business/nouns/verb), a [Site](/business/nouns/site), an [App](/business/nouns/app) and a [Change](/business/nouns/change).

| # | Tutorial | Adds |
| --- | --- | --- |
| 1 | [Creating the project](/code/learn/creating-the-project) | `startup.ts` from the [Solo SaaS](/start/templates/solo-saas) template |
| 2 | [Declaring your own Noun](/code/learn/declaring-the-lease-noun) | `nouns/Lease.mdx` |
| 3 | [Writing a Verb function](/code/learn/writing-a-verb-function) | `nouns/Lease.renew.ts` and its test |
| 4 | [Calling it four ways](/code/learn/calling-it-four-ways) | Records through the API, SDK, CLI and MCP |
| 5 | [Selling the `pro` plan](/code/learn/selling-the-pro-plan) | `offers/pro.mdx` |
| 6 | [Publishing the Site](/code/learn/publishing-the-site) | `sites/www/` |
| 7 | [Mounting the App](/code/learn/mounting-the-app) | `apps/portal/` |
| 8 | [Automating the notice](/code/learn/automating-the-notice) | `workflows/renewals/` |
| 9 | [Seating the agent](/code/learn/seating-the-agent) | `agents/customer/success-manager.mdx` |
| 10 | [Handling a failed card](/code/learn/handling-a-failed-card) | The past-due path, Stripe-led |
| 11 | [Reviewing a Change](/code/learn/reviewing-a-change) | Tests, [Evaluators](/business/nouns/evaluator) and a merge |
| 12 | [Launching Leaseline](/code/learn/launching-leaseline) | The launch checks and Live |

## Checkpoints
Each tutorial ends on a checkpoint tag, `leaseline@ch01` to `leaseline@ch12`, in a public example repository that CI builds on every release. The repository and its tags have status `planned`. Each tutorial ends by listing the files its checkpoint holds.

## Next
- [Quickstart](/code/quickstart): the seven commands of tutorials 1, 5 and 12 in five minutes.
- [The Leaseline year](/business/examples/leaseline): the same Startup a year on, one dated episode at a time.
- [File conventions](/code/file-conventions): every file the tutorials write, with its full contract.