Umbral
Back to plugin directory
UA

Umbral Admin

Official Featured by Umbral contributors

model-aware CRUD, dashboards, audit trail, relation pickers

official stable

About

You declared your models to get a database. The admin is the receipt: mount one plugin and every model in every plugin you've installed grows a full back office — list views, search, combinable filters, relation pickers, bulk actions, an audit trail, and a dashboard you can shape with your own widgets. No scaffolding command, no generated files to maintain. It reads the same model metadata the ORM and migrations already use, so the admin is never out of sync with your schema.

Install

cargo add umbral-admin

Wire it up

Mount AdminPlugin after the plugins whose models you want to manage — it discovers everything registered before it.

use umbral::prelude::*;
use umbral_admin::AdminPlugin;

let app = App::builder()
    .database("default", pool)
    .plugin(BlogPlugin::default())   // your models
    .plugin(
        AdminPlugin::default()
            .site_title("Acme Admin".into()),
    )
    .build()?;

Visit /admin and sign in — every registered model is already there.

Target: a dashboard, not just tables

Group KPI cards, charts, and tables into named sections, and add bespoke analytics pages with .view(...).

use umbral_admin::{AdminPlugin, WidgetSection};

AdminPlugin::default()
    .site_title("Acme".into())
    .dashboard_section(
        WidgetSection::new("Overview")
            .subtitle("Headline counts")
            .widget(total_orders_card())
            .widget(revenue_chart()),
    )
    .view(reports_view());  // a custom page at /admin/custom-views/reports/

What you get

  • List / create / edit / delete for every registered model
  • Toolbar search plus combinable list_filter facets
  • Async FK / M2M / O2O pickers with search-as-you-type
  • Per-action view / add / change / delete gating (via umbral-permissions)
  • File & image widgets, Markdown / rich-text field widgets
  • Soft-delete + trash, bulk actions, and a per-row audit log

Usage

Mount `AdminPlugin` after the plugins whose models you want to manage — it discovers every model registered before it and builds the CRUD UI. Give it a title, and optionally dashboard widgets and custom views.

plugin setup
cargo add umbral-admin

Feature tracker

Per-feature shipping status, recorded in the directory.

11 of 11 shipped
Auto CRUD views shipped Stable

List, create, edit, delete generated from every registered model.

Search and multi-filter shipped Stable

Toolbar search plus combinable list_filter facets.

FK / M2M / O2O pickers shipped Stable

Async relation pickers with search-as-you-type.

Per-model permissions shipped Stable

Per-action view/add/change/delete gating via umbral-permissions.

File and image widgets shipped Stable

Multipart upload with image thumbnail preview.

Markdown / RTE field widgets shipped Stable

#[umbral(widget = ...)] renders rich editors in the form.

Dashboard widgets shipped Beta

KPI cards, charts, and recent-activity panels on the index.

Bulk actions shipped Beta

Select rows then act: delete, publish, retry, or export.

Inline editing shipped Beta

Edit related rows on the parent form with tabular or stacked inlines.

Audit history shipped Beta

Per-row history pages and audit timeline rendering.

Theme and palette controls shipped Beta

Single-source theme tokens plus user palette preferences.

Compatibility

Declared support per Umbral version and database backend.

No compatibility rows declared yet.

Community notes

2 notes in the discussion thread.

AN
Anonymous
usage note · Jul 9, 2026
usage

The auto-generated dashboards saved us about a week of glue code.

AN
Anonymous
question · Jul 9, 2026
question

Does the changelist support registering custom bulk actions yet?

Reported issues

Bugs and abuse reports filed against this plugin.

Report an issue

No open issues

No issues have been reported against this plugin. Track upstream bugs on the maintainer's tracker, or report a directory problem to the Umbral team.