Open source · Built in Rust

The content framework for Rust.

Laterite gives you a descriptor-driven admin, portable migrations, localization, plugins, and role-based access from the first commit. One codebase runs on PostgreSQL, MySQL, or SQLite.

v0.9.16 Released 16 October 2026. See what changed

cargo install laterite-cli
lat new
✓ scaffolds the app, sets up the database, creates the first admin

Everything an admin needs, as data.

Screens are serde descriptor structs rendered by generic handlers, so the pieces you build are configuration, not one-off controllers.

Descriptor-driven admin

Lists, forms, filters, and navigation are structs. Generic handlers turn them into working screens, with validation and a reference picker built in.

Portable data layer

Queries and migrations build with sea-query over sqlx and run unchanged on Postgres, MySQL, and SQLite.

Reversible migrations

Each migration is a Rust unit with up and down, applied and rolled back by a runner that tracks history per module.

Role-based permissions

Dotted permission strings on roles, with per-user overrides that take precedence, enforced by middleware.

Localized from the start

Every UI string is translatable, dates render in the operator's locale, and a language arrives as a translation file, with no code change.

Plugins as folders

Drop a plugin into plugins/, sync, and enable it from the admin. A plugin that fails at boot is quarantined, never the whole app.

Server-rendered

Askama templates with HTMX. No JavaScript framework to learn, ship, or keep up to date.

Secure by default

Argon2id credentials, CSRF protection on every form, and an append-only audit log of every admin mutation, with its own read-only view.

Free, forever

Yours to run, without a licence to renew.

Laterite is dual licensed under MIT or Apache-2.0. Build one application or a hundred, ship them to clients, and keep every line. There are no seats to count and no per-project fees.

See what is included
  • PostgreSQL, MySQL, and SQLite from day one
  • Every UI string translatable; a language ships as data
  • Plugins in a folder, enabled from the admin
  • One small binary sets up a whole app

Up and running in three commands.

1cargo install laterite-cli
2lat new
3lat serve
Read the guide