Skip to content

cartapelAn admin panel for your existing Postgres

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.

What is cartapel?

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:

  • Your database is the schema. cartapel introspects your live Postgres for columns, types, primary keys and foreign keys. There is no separate model definition to keep in sync.
  • Customization is code. Everything you tune — which columns show in a list, how a field renders, who can edit what — lives in a directory of HCL files you commit to your repo. The in-app visual builder writes the same HCL, so even click-made changes are versioned and reviewable.

60-second quickstart

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.

bash
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 public
bash
export 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-data

Open 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.

Where to next

Released under the MIT License.