Jadpo is experimental and not ready for production. These docs follow the compiler's main branch as of 30 Oct 2026. What's built · Install 0.1.0
jadpo

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.

  1. Page 1: What Jadpo is, and setting up

    After it you can build jadpo and start a project with jadpo new.

    Introduces what Jadpo is for; the jadpo command; new, check and test; how an error reads

  2. Page 2: A project and your first route

    After it you can run an app that answers POST /todos and call it with curl.

    Introduces a project and app.jadpo; domains; use lines; input and output types; actions; routes; a first permission rule; the API record; jadpo dev; the error body

  3. Page 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; ?, none and defaults; functions

  4. Page 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 sql

  5. Page 5: Failures

    After it you can refuse a due date in the past with a clear 422.

    Introduces failures and their kinds; fails and reject; match; if; the clock; the error body every client gets

  6. Page 6: Reading todos

    After it you can answer GET /todos and GET /todos/{id}.

    Introduces queries; where:, where_present:, order: and limit:; one record or a 404; path placeholders; indexes the compiler asks for

  7. Page 7: Changing and deleting todos

    After it you can mark a todo done, edit it and delete it.

    Introduces get, update with patch: and delete; attempt; an action's writes all happening or none

  8. Page 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 clock

  9. Page 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 set

  10. Page 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.user and current_principal; a migration that needs a decision; conflict:; tests that sign in with as:

  11. 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 inbox

  12. Page 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

  13. 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 checks

  14. Page 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.