Skip to content

Dashboards — composable widget grids for analytics, ops, and IoT

Granit Dashboards turn a declarative DashboardDefinition into a tenant-importable catalogue entry. The same primitive composes analytics dashboards (KPI tiles + charts over MetricDefinition / QueryDefinition), operational dashboards (status banners, alarm tables), and — once the IoT module ships — real-time device dashboards.

LayerTypeLives inMutabilityPersistence
Catalogue entryDashboardDefinitionGranit.Dashboards.Abstractions (declarative)Immutable — codeNone — assembly only
Tenant-composed dashboardDashboard aggregateGranit.Dashboards (runtime)Mutable — admin actionsGranit.Dashboards.EntityFrameworkCore
Edit mode (frontend only)live widget grid@granit/react-dashboards (front)Mutable — drag/dropDOM, persisted via the runtime API

Read ADR-038 for the design rationale.

  • Directorysrc/
    • DirectoryGranit.Dashboards.Abstractions/ Declarative contracts (DashboardDefinition, WidgetDefinition, …)
    • DirectoryGranit.Dashboards/ Runtime + DI registry. Future: Dashboard aggregate, real-time hub
    • DirectoryGranit.Dashboards.EntityFrameworkCore/ Persistence layer for the Dashboard aggregate
    • DirectoryGranit.Analytics/ Analytics-flavoured widget catalogue (Kpi, Chart, Table, Pivot)
    • DirectoryGranit.IoT.Dashboards/ Future — IoT widget catalogue (gauges, camera feeds, alarm lights)
PackageRoleReference from
Granit.Dashboards.AbstractionsPure declarations — DashboardDefinition, WidgetDefinition, layout / size / time-window / action / view / alias / filter / datasource records, registry interface, three presentation widgets (Markdown / Image / Text)Any module that declares dashboards or widgets
Granit.DashboardsIDashboardDefinitionRegistry impl, AddGranitDashboards() + AddDashboardDefinition<T>() DI, IVariableSubstituter runtimeHosts that expose dashboards
Granit.Dashboards.EntityFrameworkCorePersisted Dashboard aggregate + EF configurationsHosts that persist tenant-composed dashboards
Granit.AnalyticsKpi / Chart / Table / Pivot widget records that bind to MetricDefinition / QueryDefinitionModules declaring analytics dashboards