SelfPost · panel redesign · stage 2

The accepted direction, every screen

Direction C (Bulma) was picked as the base: the important things in view, details one or two clicks away. It takes the postal signature of A — the postmark verdict, numbered mono section heads, the stamp's perforated paper edge under a brick bar that carries the wordmark — and the icons of B. Thirty-four screens and a components page live in panel/. Serve this folder from the repository root: the pages load the panel's own fonts and mark by relative path.

Screen map

Signed outSign in · sign in before an administrator exists · Create administrator
OverviewOverview — postmark verdict, six health cards, both domain lists
OutboundDomains · domain · domain settings · application form · password shown once · delete domain
Log · message · Queue · DMARC reports · by domain · one report
InboundDomains · domain · delete domain · Log · Queue (empty state)
Quarantine · held message · Filter lists — roadmap items, drawn as their target look
ServerHealth · Preflight (roadmap) · System log · Backup · Users · user form · delete user · Settings
User menuAccount · Help
ContractComponents — every building block in every state · the plan · panel/check.py lints the mockups and writes panel/outlines.json

What changed against today's panel

Stage 1 · three directions on three key screens

Kept for the record: Overview, an outbound domain and sign-in, drawn three ways.

Shared by all three

The directions

A · Pico CSS 2.1

Blank

The panel as a postal form: one centred sheet, numbered sections, mono field labels, a postmark for the verdict. Overview is a ledger — one row per check, the row opens into its detail. Sections on the first header row, the section's pages on the second.

B · Tabler 1.5 (Bootstrap 5)

Console

The classic admin kit: ink sidebar with every page one click away, status tiles, cards and tables in a 12-column grid, read-only input groups with Copy. Almost nothing is ours; it also looks the most like every other admin panel.

C · Bulma 1.0

Counter

Brick top bar with CSS-only hover menus. Overview is the whole service on one screen: a health strip over the outbound and inbound domain lists. The domain page gets a sticky side menu. Softer, rounder, the boldest use of the brand colour.

What each one costs

A · PicoB · TablerC · Bulma
LicenceMITMITMIT
Vendored CSS (minified)83 KB694 KB678 KB
JavaScriptnonenone for these screens; Bootstrap bundle only if dropdowns / modals are wantednone
Build stepnonenonenone (a Sass build could trim it; not needed)
CSP default-src 'self' needs img-src 'self' data: — 14 data: SVGs (select chevron, checkbox tick) needs img-src 'self' data: — 28 data: SVGs works as is — no data: URIs
Our own CSS in the mockup≈ 200 lines≈ 80 lines≈ 100 lines
Markup stylesemantic HTML, few classes — closest to today's templatesclass-heavy Bootstrap markupclass-based, moderate
Own componentssheet, ledger row, postmark, record blocksidebar group label, record blockhealth strip, record block
Recognisablemostleastmiddle

Open points