Point it at Postgres
Introspects tables, keys and enums from your live schema. Lists get pagination, search, sorting, Notion-style filters, saved views and a ⌘K palette automatically.
One binary. No ORM, no framework, no Node runtime. Your schema is the source of truth, and every customization is code you version — not a GUI you click.
cartapel is an open-source, single-binary admin panel for an existing PostgreSQL database — a Django-admin / Forest / Retool alternative you run yourself. Point the Rust binary at your database, register the tables you want to expose, and you get a polished CRUD panel: paginated lists, search, filters, detail pages, inline child rows, bulk actions, dashboards, roles and an audit log.
Try it without installing
A hosted demo runs the bundled Acme dataset at https://demo.cartapel.com — no login needed.
Two ideas make it different:
cartapel needs three things: a Postgres URL, a signing secret, and (optionally) a directory of config. It runs without config — but the panel is an allowlist, so you will see no tables until you register at least one.
docker run --rm -p 8686:8686 \
-e CARTAPEL_DB="postgres://user:pass@host:5432/mydb" \
-e CARTAPEL_SECRET_KEY="a-long-random-string" \
-e CARTAPEL_ADMIN_EMAIL="[email protected]" \
-e CARTAPEL_ADMIN_PASSWORD="change-me" \
-v "$PWD/admin:/config:ro" \
ghcr.io/de-rus/cartapel:latest \
serve --config /config --schema publicexport CARTAPEL_SECRET_KEY="a-long-random-string"
export CARTAPEL_ADMIN_EMAIL="[email protected]"
export CARTAPEL_ADMIN_PASSWORD="change-me"
cargo run --release -- serve \
--db postgres://user:pass@host:5432/mydb \
--schema public \
--config ./admin \
--data ./cartapel-dataOpen http://localhost:8686/admin, log in with the bootstrap admin, and you are in.
The secret key is required
cartapel refuses to start without a secret key — it signs your session cookies. Set CARTAPEL_SECRET_KEY (or [cartapel].secret_key in the config). See Security.
config/ folder.