# Jadpo > Jadpo is an experimental programming language for web backends written by AI agents and reviewed by people. Its compiler checks who may see what, how data is stored and changed, and every call to an outside service. ## For agents - Jadpo is new and changes between versions, so don't rely on what you remember about it. Read https://jadpo.dev/v/0.3/docs/primer.md before writing any Jadpo. - To teach a person Jadpo, or build a first app with them, follow https://jadpo.dev/v/0.3/learn.md, the Learn path's outline, and then each of its pages in order. - For one common job, such as adding sign-in, follow its guide below. - For anything else, open the page of the group below that the task belongs to. That page lists what's in the group. Fetch only the `.md` pages the task needs. - Each compiler error names its rule, an ID such as `policy.public_grant_missing`. Its page is https://jadpo.dev/v/0.3/docs/errors/.md. - A standard type, one Jadpo provides such as Money, has a page too: https://jadpo.dev/v/0.3/docs/types/type-money.md. `jadpo help ` prints the same page. - An error says what to do next, ending in (agent) or (human). When it ends in (human), stop and ask your user before changing anything. - Never read https://jadpo.dev/v/0.3/docs/index.json whole: it lists every page for tools, and it's about 200,000 tokens. - Coding agents can install the Jadpo skill, which holds these instructions and more: https://jadpo.dev/v/0.3/.well-known/agent-skills/jadpo/SKILL.md. - These docs are for Jadpo 0.3, from its newest release, 0.3.0. The newest docs, which may describe things this version can't do, are at https://jadpo.dev/llms.txt. ## Guides - [Build an API](https://jadpo.dev/v/0.3/guides/guide-build-an-api.md) - [Store and change a record](https://jadpo.dev/v/0.3/guides/guide-store-and-change-a-record.md) - [Query records](https://jadpo.dev/v/0.3/guides/guide-query-records.md) - [Handle failures](https://jadpo.dev/v/0.3/guides/guide-handle-failures.md) - [Add sign-in](https://jadpo.dev/v/0.3/guides/guide-add-sign-in.md) - [Run background work](https://jadpo.dev/v/0.3/guides/guide-run-background-work.md) - [Keep customers' data apart](https://jadpo.dev/v/0.3/guides/guide-keep-customers-data-apart.md) - [Translate your app's text](https://jadpo.dev/v/0.3/guides/guide-translate-your-apps-text.md) - [Send an email](https://jadpo.dev/v/0.3/guides/guide-send-an-email.md) - [Ship a change behind a flag](https://jadpo.dev/v/0.3/guides/guide-ship-a-change-behind-a-flag.md) - [Limit how often a route is called](https://jadpo.dev/v/0.3/guides/guide-limit-how-often-a-route-is-called.md) - [Add search to a list](https://jadpo.dev/v/0.3/guides/guide-add-search-to-a-list.md) - [Keep a record of who changed what](https://jadpo.dev/v/0.3/guides/guide-keep-a-record-of-who-changed-what.md) - [Export records to a file](https://jadpo.dev/v/0.3/guides/guide-export-records-to-a-file.md) - [Ask a model for a typed answer](https://jadpo.dev/v/0.3/guides/guide-ask-a-model-for-a-typed-answer.md) - [Call an outside API](https://jadpo.dev/v/0.3/guides/guide-call-an-outside-api.md) - [Receive a webhook](https://jadpo.dev/v/0.3/guides/guide-receive-a-webhook.md) - [Write tests](https://jadpo.dev/v/0.3/guides/guide-write-tests.md) - [Get a person's sign-off](https://jadpo.dev/v/0.3/guides/guide-get-a-sign-off.md) - [Deploy natively](https://jadpo.dev/v/0.3/guides/guide-deploy-natively.md) - [Deploy to Cloudflare Workers](https://jadpo.dev/v/0.3/guides/guide-deploy-to-workers.md) ## Reference - [Language](https://jadpo.dev/v/0.3/docs/language.md): How a Jadpo program is laid out and written: its types, logic, failures and standard library. - [Data](https://jadpo.dev/v/0.3/docs/storing-data.md): What an app stores and how it reads and writes it: entities, migrations, queries, personal data and location. - [APIs](https://jadpo.dev/v/0.3/docs/apis.md): What an app answers: its routes, who is calling them and what each caller may do. - [Background work](https://jadpo.dev/v/0.3/docs/jobs-and-events.md): What runs outside a request: schedules, batches, events, and what happens when a delivery fails. - [Built-in services](https://jadpo.dev/v/0.3/docs/built-in-services.md): What Jadpo gives an app without a package: email, files, flags, rate limits, search, audit, AI and more. - [External services](https://jadpo.dev/v/0.3/docs/external-services.md): Another company's API from your app: connecting to it, calling it, receiving from it, and using packages. - [Configuration](https://jadpo.dev/v/0.3/docs/configuration.md): Settings and secrets, and the languages your app speaks: locales and translations. - [Testing](https://jadpo.dev/v/0.3/docs/testing.md): How your tests run your real application against a real database: kinds of test, fixtures and fakes. - [Tools](https://jadpo.dev/v/0.3/docs/tooling.md): The jadpo command, your editor, building and deploying, and what a coding agent can look up. ## When Jadpo is wrong If the compiler crashes, rejects code the docs say is valid or accepts code the docs say it refuses, or a docs page is wrong: 1. Read the error's page, https://jadpo.dev/v/0.3/docs/errors/.md, and the docs it links to, to rule out a mistake in the code. 2. Cut the problem down to a minimal reproduction: the smallest Jadpo project that still shows it. 3. Draft a bug report and give it to your user, or give them a prefilled link to Jadpo's bug report form: https://github.com/jadpo-dev/jadpo/issues/new?template=bug.yml&title=. Never file an issue or comment yourself, because a public issue is published under your user's name. 4. Leave out secrets, configuration values and any code outside the minimal reproduction. 5. After a crash, Jadpo writes a crash file to `~/.cache/jadpo/crashes/`. Show it to your user, and attach it only once they've read it and agreed. A suspected security hole never goes in a public issue. Report it privately, as Jadpo's security policy says: https://github.com/jadpo-dev/jadpo/blob/main/SECURITY.md. ## Optional - [Jadpo on GitHub](https://github.com/jadpo-dev/jadpo): the compiler, the language reference and the examples