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

Guides

Each guide does one common job in a Jadpo app from start to finish: the code to write, the commands to run and what they print, and the reference topics that have the full rules. Every guide's code is compiled and its tests run, so each one works as shown. Read the one for the job in front of you; they don't depend on each other. To learn Jadpo from the start, follow the Learn path instead.

Building

From a route to stored records, sign-in and customers kept apart.

  • Build an API

    You end with routes with typed input and output, the committed API record, and the OpenAPI document.

  • Store and change a record

    You end with an entity, its migration, and actions that add, change and delete records.

  • Query records

    You end with a query for one record, and a list a caller narrows and pages through.

  • Handle failures

    You end with a failure of your own, refused with the right status, handled where a caller wants to.

  • Add sign-in

    You end with sign-in by emailed link and with Google, and routes that know who is calling.

  • Run background work

    You end with a schedule that starts a batch, an event with its subscriber, and a test of the whole run.

  • Keep customers' data apart

    You end with a tenant named once, memberships and roles, and tests proving one company can't reach another's records.

  • Translate your app's text

    You end with typed messages in two languages, chosen from the browser's header, with stale translations caught by jadpo check.

Services

Using what Jadpo has built in.

  • Send an email

    You end with a welcome email with typed templates, sent over SMTP after commit, tested and read in the dev inbox.

  • Ship a change behind a flag

    You end with a change deployed switched off, both sides tested, turned on with no deploy, and the flag removed.

  • Limit how often a route is called

    You end with a public form limited to five requests a minute, an API's own limit, and clients counted properly behind a proxy.

  • Add search to a list

    You end with a searchable entity, its migration, and a route giving the best matches first, a page at a time.

  • Keep a record of who changed what

    You end with an audited entity, its history read back with what each caller may see, and a route that sends it.

  • Export records to a file

    You end with a query's records written to a spreadsheet-safe CSV in the background, with its run tracked on a record.

  • Ask a model for a typed answer

    You end with a checked prompt, a decoded answer with every failure named, a daily budget, and tests that never reach a model.

Reaching outside

Other companies' APIs, in both directions.

  • Call an outside API

    You end with a typed description of another service, called through a connection and faked in tests.

  • Receive a webhook

    You end with a sender described as a package, its signed requests checked and de-duplicated, and a subscriber keeping each event.

Shipping

Checking a change and putting it live.

  • Write tests

    You end with action and route tests, fixtures, a fixed clock and tests signed in as someone.

  • Get a person's sign-off

    You end with an acceptance for a change that could break someone, with a person's reason.

  • Deploy natively

    You end with the app built into one program, running against a real database.

  • Deploy to Cloudflare Workers

    You end with the app built as a Worker, reaching its database through Hyperdrive.

Markdown for agents: /guides.md, and each guide's address with .md added.Built from Jadpo main at aee2e8f.