Skip to main content

The generated application

A generated project is ordinary source code in three parts. Cargo owns the backend, and Bun owns the front end and the test suites.

<project>/
backend/ Rust crate on Loco.rs 1.2 (Axum, SeaORM), with its migration crate
seed/ the Application Dictionary, workflows, access rules, reports (SQL)
src/hooks/ the hook registry (regenerated) and your handlers (written once)
frontend/ TanStack Start, React 19, Astryx components, seven themes
tests/ Bun API suites, Playwright specs, a browser smoke test
chat/ the plain-language chat for this application
model/ the model the project was generated from, exactly as written
docker-compose.yml, Dockerfiles, CI workflows

One generic API, driven by the dictionary​

The backend has no hand-written controller per entity. One generic controller serves /api/bus/{entity} for every table the Application Dictionary describes, including tables added after deployment. The dictionary also tells the front end which windows, tabs and fields to draw.

That is why the dictionary is generated as seed data, not as a migration: it is applied by cargo loco db seed, its ids are deterministic, and re-applying it is safe.

The seed, in order​

cargo loco db seed runs four idempotent tasks:

  1. seed_dictionary: the windows, tabs, tables, columns and fields; value lists; reference data.
  2. seed_workflows: processes compiled to BPMN, which name entities the dictionary describes.
  3. seed_access: roles, operation rules and move rules, and one demonstration account per role.
  4. ensure_admin: the administrator, granted a role the dictionary created.

Headless backend​

The Rust backend renders no HTML and serves no assets. Every controller returns JSON, and the web front end is a separate package, so a change to a screen never needs the backend rebuilt.

What regeneration keeps​

Regenerating over an existing project rewrites what the model owns and keeps what you own:

Rewritten every runKept
Migrations, seeds, the hook registry, the API descriptionYour hook handler modules (new hooks are appended, never replaced)
Generated screens and suitesRows an administrator added to the dictionary or access rules

Lockfiles included​

The backend ships a Cargo.lock, so a project that built last week builds the same way today, whatever crates have published since.