Dashboards
Build org-shared dashboards from the widget library, set the default everyone lands on, and switch between presets and saved views.
Different people want different first screens. A CFO wants top-line spend and savings; an engineer wants spend by service and region; a FinOps lead wants team budgets and showback. ZopNight lets admins compose org-shared dashboards from a curated widget library, set one default that every member lands on, and switch between presets and saved views from a header switcher.

Home → Overview: the All Widgets dashboard with stat cards and the cost trend, and the dashboard switcher top-right.
Before you start
- To view dashboards: a role with
dashboard:view(every built-in role has it). - To build, edit, delete, or set the default: a role with
dashboard:create,dashboard:update, ordashboard:delete(the built-in Editor and Admin roles have all three). - Widget data access: each widget also needs its own policy (for example, Schedule success rate needs
report:view), or it shows a “no access” placeholder.
How it works
Dashboards open on Home → Overview. New orgs need no setup. Until someone sets a default, everyone lands on All Widgets. Members whose role lacks dashboard:view land on Home → Needs attention instead. Use the switcher top-right to move between presets and saved dashboards.
Presets
Four system presets ship out of the box. They’re read-only; clone one to customise.
| Preset | Built for |
|---|---|
| Executive | A leadership view, built from the same widget library. |
| Engineering | A view for the teams running the infrastructure. |
| FinOps | A view for cost owners, including budget health and showback widgets. |
| All Widgets | Every widget, for evaluating the library and composing your own. |
Widget library
Thirteen widget types are available:
stat_cards · cost_trend · cloud_spend · cost_reports · top_costly · recommendations · quick_insights · budget_health · showback · schedule_execution · upcoming_actions · schedule_activity · schedule_success_rate.
Each widget declares a default size and the sizes it allows. Some are singletons (you can only add one). Every widget is permission-gated: if your role lacks the widget’s required policy, it renders a “no access” placeholder so the layout stays coherent for everyone else.
The two schedule widgets are designed as a pair. Schedule activity is a tabbed card showing past runs and upcoming actions; Schedule success rate shows how many scheduled firings succeeded, failed, or were missed across the organisation. Drop them next to each other and they render as one row, split two-thirds to one-third.
Build a dashboard
Start from scratch or clone a preset
Create a new dashboard, or clone Executive / Engineering / FinOps / All Widgets and edit from there. Presets themselves can’t be edited or deleted.
Add and arrange widgets
Add widgets from the library drawer (already-added singletons are disabled), drag to reorder, and pick a size per widget: Wide (full), Standard (half), or Compact (third). Slots are fixed; there’s no free-form resize.
Name it
Names are unique per org. A duplicate name returns an error instead of creating a second dashboard.
Set the org default (optional)
Set any dashboard (a preset or a saved one) as the organisation default in one click. Everyone lands on it when they open Home → Overview.
Permissions
Dashboards use four policies: dashboard:view, dashboard:create, dashboard:update, and dashboard:delete.
| Role | Can |
|---|---|
| Viewer | View dashboards |
| Editor / Admin | View, create, update, delete, and set the org default |
Setting the org default is authorised by dashboard:update. See Scopes for the RBAC model.
Behaviour worth knowing
| Behaviour | Detail |
|---|---|
| Org-shared, not per-user | Everyone in the org sees the same dashboards; there’s no per-user default. |
| Per-widget error containment | A single widget that fails to render falls back to a placeholder instead of taking down the whole dashboard. |
| Forward-compatible layouts | Layouts carry a schema version; an unknown widget type (from a newer release) renders as a placeholder rather than breaking the page. |
| Audited | Every create / update / delete / default-switch is captured in the audit trail; see Scopes for how RBAC and the audit trail work. |
| Caps | Up to 50 dashboards per org and 50 widgets per dashboard; over-limit actions return an error. |
| Deleting the default | Clears the default pointer, so everyone falls back to All Widgets. |
Troubleshooting
A widget shows a no-access placeholder
Your role lacks the policy that widget needs. The rest of the dashboard still renders. Ask an admin to add the policy to your role.
I can't edit or delete a preset
Presets are read-only. Clone the preset, then edit the copy.
Saving returns an error
Either the name is already used by another dashboard in the organisation, or you’ve hit a cap (50 dashboards per org, 50 widgets per dashboard). Rename it, or remove dashboards or widgets you no longer need.
Everyone suddenly lands on All Widgets
The dashboard set as the organisation default was deleted, which clears the default. Set a new default.