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:
seed_dictionary: the windows, tabs, tables, columns and fields; value lists; reference data.seed_workflows: processes compiled to BPMN, which name entities the dictionary describes.seed_access: roles, operation rules and move rules, and one demonstration account per role.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 run | Kept |
|---|---|
| Migrations, seeds, the hook registry, the API description | Your hook handler modules (new hooks are appended, never replaced) |
| Generated screens and suites | Rows 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.