Main dashboard

The first screen after login. A project-scoped overview of cert lifecycle health — counts by status, imminent renewals, distribution outcomes, pending approvals, expiring domains. Everything clickable drills into the appropriate filtered list.

01Scope

  • Scoped to the current project (project selector in the top-left).
  • Role affects what's shown — viewers see the same data as operators, minus action buttons.
  • Updates live via the dashboard API; no polling loop beats the eye.

02Widgets

Summary tiles

Four headline numbers at the top:

  • Total managed certs — active + renewal_failed + expired (not revoked).
  • Expiring this month — < 30 days remaining. Colour-coded: green 0, amber < 10, red ≥ 10.
  • Renewal failures — count in renewal_failed terminal state. Non-zero = attention.
  • Pending approvals — count where you're an eligible reviewer. Click to jump to My Requests → Reviews.

Renewal timeline

A 90-day horizon stacking upcoming renewals per day. Hover a bar for the list; click for the filtered cert list. Lets you spot a Monday-morning spike before it arrives.

Risk breakdown

Four bars: critical / high / medium / low. Counts recompute on read, so they reflect current state. Click a bar for the filtered list.

Distribution health

Last 7 days: success / partial / failed ratio. Drills into the distribution history with the same filter applied.

Issuer mix

Donut chart of active certs by issuer. Useful for "we're over-indexed on one CA — what's the migration plan?" conversations. A small legend lists the issuers with counts.

Job queue

Current pending / in-progress counts across all job types in the project. A red badge appears if anything's in dead-letter. Click to open Jobs pre-filtered.

Domain trackers

Summary of tracked domains with expiry < 90 days. Shows registrar and days remaining; links to domain detail.

Discovery summary

Open finding counts per severity. If discovery is disabled or unlicensed, the widget collapses to a call-to-action.

Recent events

Last 20 events across the project. Same data as cert timelines aggregated; filterable by type. The "everything happening right now" ticker.

03Filters

A filter bar at the top narrows the entire dashboard by time range (last 24 h, 7 d, 30 d, custom) and issuer type (ACME / MSCA). The sum tiles stay period-free (total active certs doesn't care about time); everything else respects the filter.

04Mobile

Responsive — tiles stack, charts simplify. Full functionality retained down to 375 px; below that, the dashboard is still usable but you'll miss the visual parallelism.

05Customising

Widget reordering / per-user layout is not yet supported. If you want a different shape, consume the dashboard API (/projects/{projectId}/dashboard/summary + /trends) and render in Grafana or your internal portal. For the SOC-2 / PCI-DSS readiness view, the 47-Day readiness dashboard is a purpose-built alternative.

06API

GET /api/v1/projects/{projectId}/dashboard/summary?window=7d
GET /api/v1/projects/{projectId}/dashboard/trends?metric=renewals&window=30d

07Troubleshooting

Dashboard is empty

Wrong project selected (top-left picker). Or brand-new project with no certs yet — widgets render empty states with next-step hints.

Numbers lag the cert list

Some gauges read from Prometheus-style counters that refresh on the scheduler sweep. Give it up to scheduler.interval. For live values, use the cert list.