Learn Jadpo
This path builds one app, a todo list with sign-in, from an empty folder to a deployed server. Each page adds one idea to the app and ends with it running. It's written for a backend developer who knows TypeScript, SQL and HTTP and has never seen Jadpo.
Read the pages in order: each one uses only what the pages before it introduced. Each page links the reference topics it uses, which have the full rules.
Page 1: What Jadpo is, and setting up
After it you can build
jadpoand start a project withjadpo new.Introduces what Jadpo is for; the
jadpocommand;new,checkandtest; how an error readsPage 2: A project and your first route
After it you can run an app that answers
POST /todosand call it withcurl.Introduces a project and
app.jadpo; domains;uselines; input and output types; actions; routes; a first permission rule; the API record;jadpo dev; the error bodyPage 3: Types
After it you can give a todo's title rules, and see bad values refused while compiling and at the door.
Introduces named types and their rules; standard types; enums;
?,noneand defaults; functionsPage 4: Storing todos
After it you can keep every todo in PostgreSQL.
Introduces entities (a table with types);
id; generated fields; policy on an entity;pick:;Todo.create;var; migrations;jadpo sqlPage 5: Failures
After it you can refuse a due date in the past with a clear 422.
Introduces failures and their kinds;
failsandreject;match;if; the clock; the error body every client getsPage 6: Reading todos
After it you can answer
GET /todosandGET /todos/{id}.Introduces queries;
where:,where_present:,order:andlimit:; one record or a 404; path placeholders; indexes the compiler asks forPage 7: Changing and deleting todos
After it you can mark a todo done, edit it and delete it.
Introduces
get,updatewithpatch:anddelete;attempt; an action's writes all happening or nonePage 8: Tests
After it you can prove each route and action works, with a database of its own per test.
Introduces test files;
assert; action and route tests;request { }; fixtures; a test's clockPage 9: Settings
After it you can read a limit from the environment, and keep secrets safe.
Introduces
config.jadpo; defaults and test values;.env.local; secrets;jadpo config setPage 10: Users and the principal
After it you can give every todo an owner, and make every route need someone signed in.
Introduces users; the principal; sessions; references;
Principal.userandcurrent_principal; a migration that needs a decision;conflict:; tests that sign in withas:Page 11: Signing in by email
After it you can let people sign in with an emailed link or code, and read their mail in development.
Introduces connections and email; magic links; the first sign-in;
Access.system; cookies and CSRF headers; the dev inboxPage 12: Who may see what
After it you can make each todo visible to its owner only.
Introduces the kinds of access; owners; policy in the SQL; why a forbidden record is a 404; the permissions report
Page 13: Deploying to a server
After it you can build the app into one program and run it against a real database.
Introduces the database connection;
jadpo build; a local PostgreSQL; settings in a file;jadpo migrate apply; health checksPage 14: Deploying to Cloudflare Workers
After it you can build the app as a Worker and deploy it.
Introduces a Cloudflare account and Wrangler; deployables; rate limits on Workers; Hyperdrive; Worker variables and secrets
When you finish, the primer is a one-page summary of the
language to keep beside you, and the teaching projects in the
examples/ folder of the jadpo repository, which you clone on page 1,
show what this path leaves out.
Markdown for agents: /learn.md, and each page's address with .md added.Built from Jadpo main at a707efb. Jadpo's CI compiles and tests every page's code.