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
Reference: Project layout and modules

Project layout and modules

Decided layout

Every project has the same shape at every size. The root holds a fixed set of files and folders. All application code lives in domains under domains/, one level deep, and every domain contains the same fixed folders, with no subfolders. A file's path follows from two facts: its domain and what kind of declaration it is.

A small app:

text
app.jadpo                  application, principal, health, readiness, language versionconfig.jadpo               configuration: names, types, bindings, defaultsauthentication.jadpo       authentication methods and their failurespolicy.jadpo               application-wide policy, such as tenancyjadpo.lock                 installed packages: version, source and digestpackages/                  installed packages, committed and read-onlyapi/  main.jadpo_record        the public API recorddomains/  planning/    entities/      todo.jadpo           Todo: fields, unique rules, lifecycle, policy      todo.test.jadpo      its tests, beside it      user.jadpo      service.jadpo      service_credential.jadpo    types/      todo_view.jadpo      shared within the domain: used by more than one file    queries/      todos_for_owner.jadpo     every query, one per file    actions/      complete_todo.jadpo       every action, one per file      send_due_reminders.jadpo    failures/      todo_not_found.jadpo      every failure, one per file    routes/      todos.jadpo          route group Todos, prefix /todos: every /todos route      todos.test.jadpo      users.jadpo    schedules/      overdue_reminders.jadpodatabase/  identities.jadpo_record  stable identity of every renamed table, column and declaration  migrations/    20261012T0930_initial/build/                     generated output, never committed

The same rules for a large application, with most of the folders a project can have:

text
app.jadpo  config.jadpo  authentication.jadpo  policy.jadpo  flags.jadpo  jadpo.lockshared/  types/          stock.jadpo  country_code.jadpo  address.jadpo  libraries/      rounding.jadpo  translations/   order_reference.jadpo  en_gb.jadpo  de_de.jadpo  sources.jadpo_record  emails/         layout.html  layout.txt  button.jadpo  button.html  button.txt  providers/      acme_couriers/v1/          the app's own integration, in the package formatpackages/         stripe/v2024_06_20/  postcodes/v2/   installed: in jadpo.lock, read-onlyapi/              main.jadpo_record  admin.jadpo_recordacceptances/      20261020T1400_remove_todo_priority.jadpodomains/  ordering/    entities/     cart.jadpo  order.jadpo  order.test.jadpo    actions/      checkout.jadpo    queries/      order_history.jadpo    routes/       orders.jadpo  admin_orders.jadpo    events/       order_event.jadpo    subscribers/  cancel_unpaid_orders.jadpo    schedules/    expire_quotes.jadpo    fixtures/     sample_catalogue.jadpo    translations/ order_shipped.jadpo  en_gb.jadpo  de_de.jadpo  sources.jadpo_record    prompts/      suggest_gift_note.jadpo  suggest_gift_note.prompt    documents/    invoice_document.jadpo  invoice_document.html  inventory/    actions/      reserve_stock.jadpo        public: called by checkout in one transaction  payments/    subscribers/  payment_succeeded.jadpo    on Stripe.events.PaymentIntentSucceeded  notifications/    subscribers/  send_order_confirmation.jadpo  catalogue/  fulfilment/  identity/database/  identities.jadpo_record  migrations/     20260901T1000_initial/  20261012T0930_add_order_channel/  seeds/          local_demo.jadpotranslations/     fr_fr.jadpo        the app's wording for Jadpo's and packages' texttests/            checkout_to_delivery.test.jadpobuild/

Markdown for agents: /docs/decided-layout.md.Built from Jadpo main at a707efb.