GovOPlaN Dashboard

Repository type: module (platform).

Configurable dashboard module for GovOPlaN.

The module owns the /dashboard route when installed. Core keeps only a minimal fallback home for installations where this module is absent.

Opening the route and using its personal-layout API requires the grantable dashboard:dashboard:read tenant permission. The dashboard_user role template contains this permission; widgets retain their own provider-specific access checks.

Modules contribute widgets through the dashboard.widgets WebUI capability. Personal widget layouts are stored by the backend for each tenant, account, and active View. Configure mode supports adding, removing, ordering, sizing, and widget-specific settings. Existing browser-only layouts are used as a migration fallback until the first server save.

The Dashboard's Active interface modules metric and widget count only tenant-enabled modules whose WebUI is loaded in the current browser session. The Administration module catalogue has a different operator-facing scope: it also includes discovered backend-only and headless module manifests. The two figures therefore need not match.

Widget providers can declare supported sizes and a small configuration schema:

{
  id: "example.summary",
  surfaceId: "example.dashboard.summary",
  title: "Example summary",
  supportedSizes: ["small", "medium", "wide"],
  defaultConfiguration: { limit: 10, showDetails: true },
  configurationFields: [
    { id: "limit", label: "Rows", kind: "number", min: 1, max: 50 },
    { id: "showDetails", label: "Show details", kind: "boolean" }
  ],
  render: ({ configuration }) => <ExampleWidget configuration={configuration} />
}

Every widget needs a matching View surface. The Dashboard catalogue filters contributions through the effective View before rendering them, while saved placements remain intact when a View or module temporarily hides a widget.

S
Description
No description provided
Readme
254 KiB
Languages
TypeScript 48.6%
Python 47.3%
CSS 4.1%