Dashboards¶
Dashboards render dbt results as charts, leaderboards, and KPIs. Store configuration files under dashboards/*.yaml inside your configuration roots (e.g. .kiket/analytics/dashboards, with legacy support for .kiket/dashboards).
Schema overview¶
Dashboard files use the following structure:
model_version: "1.0"
dashboard:
id: delivery-health
name: Delivery Health
description: Cycle time and throughput metrics.
widgets:
- id: cycle-time-trend
type: timeseries
title: Cycle Time (Days)
query: fct_cycle_time
query_config:
model: fct_cycle_time
filters:
project_id: ":project_id"
parameters:
- name: project_id
type: integer
required: true
order_by:
- completed_on
visualization:
x: completed_on
y: avg_cycle_days
- id: throughput-kpi
type: kpi
title: Issues Completed (Last 7 Days)
query: fct_throughput
query_config:
model: fct_throughput
filters:
project_id: ":project_id"
parameters:
- name: project_id
type: integer
required: true
options:
window: 7d
alerts:
- query: fct_cycle_time
condition: avg_cycle_days > 5
notify_roles:
- manager
query_config:
model: fct_cycle_time
filters:
project_id: ":project_id"
parameters:
- name: project_id
type: integer
required: true
Required keys¶
| Key | Description |
|---|---|
model_version |
Schema version (currently 1.0). |
dashboard.id |
Stable identifier used in URLs and APIs. |
dashboard.name |
Display name. |
dashboard.widgets |
Array of widget definitions. |
Widgets¶
Each widget definition supports the following properties:
| Key | Required | Notes |
|---|---|---|
id |
➖ | Helpful for testing and telemetry. |
type |
✅ | e.g. timeseries, kpi, leaderboard, table. |
title |
✅ | Widget heading. |
query |
✅ | Friendly identifier for the dbt model (shown in UI). |
query_config |
➖ | Execution details (model name, filters, parameters, order). |
visualization |
➖ | Options for x/y axes, grouping, formatting. |
options |
➖ | Miscellaneous settings (rolling windows, limits, etc.). |
query_config defaults to selecting all columns from the model and filtering by project_id. Override it when you need custom filters, ordering, or column lists.
Alerts¶
Alerts provide lightweight monitoring. Each alert can define:
| Key | Required | Notes |
|---|---|---|
query |
✅ | dbt model to evaluate. |
condition |
✅ | Expression evaluated against the aggregated result (e.g. avg_cycle_days > 5). |
notify_roles |
➖ | Roles to notify via the built-in notification system (manager, executive, etc.). |
query_config |
➖ | Overrides for model/filters (same schema as widget query_config). |
Publishing workflow¶
- Commit the dashboard YAML to your definition repository.
- After the next configuration sync, the dashboard appears in Analytics → Dashboards.
- Update or remove dashboards by editing the YAML file and syncing again.
Viewing dashboards in Kiket¶
- Project dashboards are available at
/projects/:project_id/dashboards. - Use the sidebar to switch between dashboards; widgets refresh with the latest dbt data after every analytics run.
- The command palette (Cmd/Ctrl + K) now lists analytics shortcuts so you can jump to dashboards or queue a manual refresh without leaving the current view.
- Alerts defined in the YAML file display beneath the widget grid to highlight conditions that require attention.
Best practices¶
- Keep widget IDs unique per dashboard for reliable telemetry.
- Pair dashboards with dbt tests to catch breaking changes in upstream models.
- Use descriptive titles and meaningful descriptions so teams understand intent.
- Prefer
query_configfilters over ad-hoc SQL to maintain tenancy guarantees. - For shared dashboards, place them in template repositories so new projects inherit them automatically.
Extension dashboards¶
When a dashboard ships inside an extension bundle (extensions/<name>/.kiket/analytics/dashboards), Kiket automatically:
- Binds every widget/alert to the extension’s managed schema (
analytics_ext_<org>_<extension>_<installation_id>), so queries cannot read from shared marts. - Rejects schema-qualified models (e.g.,
public.fct_usage) to prevent cross-tenant access. - Stores the extension installation metadata alongside each widget, enabling auditing and CLI diagnostics.
Extension authors simply reference their dbt models by name (e.g., query: completed_requests); the runtime injects the correct schema at execution time.
Dashboards provide a consistent, configuration-driven way to surface the dbt analytics fabric across your organisation.