Skip to main content

Documentation Index

Fetch the complete documentation index at: https://grantmaster.dev/llms.txt

Use this file to discover all available pages before exploring further.

Widget Dashboard

StatusUpdatedCovered Files
🟢 Stable2026-02-22src/components/widgets/, src/shared/platform/dashboardPresetService.ts, src/features/dashboard/

Overview

The Widget Dashboard provides a role-aware, tab-organized analytics surface with 85 lazy-loaded widgets across 8 categories. Each user role sees a curated default layout, and users can customize their dashboards by reordering, hiding, or adding widgets from the widget library.

Dashboard Tabs (8)

TabCategoryWidget CountAudience
PersonalPERSONAL15All roles — daily briefing, shortcuts, notifications
ProjectsPROJECTS7Project lifecycle, deliverables, risk
FinanceFINANCE13Budgets, costs, revenue, cash flow
GrantsGRANTS12Pipeline, applications, funders, benchmarks
UsersUSERS11Team capacity, staffing, utilization, HR
MissionMISSION9Impact, SDGs, strategic alignment, donor stewardship
ComplianceCOMPLIANCE10Audit, regulations, policies, risk
PlatformPLATFORM7Cross-org intelligence (SuperAdmin only)
Total: 84 widgets

Widget Categories

Personal (15)

Daily briefing widgets shown on the Personal tab:
Widget IDDescription
action-itemsPending tasks requiring attention
ai-insights-feedAI-generated insights and recommendations
cost-savingsAI-identified cost optimization opportunities
deadline-summaryUpcoming deadlines summary
my-deadlinesPersonal deadline tracker
notification-previewRecent notification preview
organization-health-scorecardOverall org health metrics
pending-journalsUnsubmitted journal entries
pending-tasksTasks assigned to user
personal-contractCurrent employment contract summary
quick-actionsShortcut buttons for common actions
quick-time-entryInline time entry form
recent-activityActivity feed
time-reclaimedAI time savings tracker
upcoming-deadlinesCalendar-style deadline view

Finance (13)

Widget IDDescription
budget-compositionBudget breakdown by category
budget-healthBudget utilization health indicators
budget-modification-trackerBudget amendment history
budget-utilizationSpend vs. budget progress bars
burn-rate-comparisonActual vs. planned burn rates
cash-flow-forecastProjected cash flow timeline
donor-revenue-concentrationRevenue diversification analysis
fund-drawdown-scheduleGrant fund drawdown timeline
indirect-cost-recoveryIDC recovery tracking
key-metricsGeneric KPI display (library-only)
operating-reserve-monthsOperating reserve runway
overhead-ratioAdministrative overhead percentage
restricted-unrestricted-fundsFund restriction breakdown

Grants (12)

Widget IDDescription
active-grant-mapGeographic map of active grants
benchmarkingCross-org performance benchmarks
funder-relationship-healthFunder engagement scoring
grant-application-calendarUpcoming application deadlines
grant-closeout-checklistCloseout task tracker
grant-health-matrixMulti-dimensional grant health
grant-milestone-trackerMilestone progress timeline
grant-revenue-pipelineRevenue pipeline forecast
grant-success-rateHistorical win/loss rates
predictive-closeout-riskAI closeout risk prediction
proposal-win-rateProposal success analytics
reporting-burden-heatmapReport workload distribution

Users (11), Mission (9), Compliance (10), Platform (7)

See src/components/widgets/index.ts for the full registry of all 84 widgets.

Preset Service

File: src/shared/platform/dashboardPresetService.ts

Architecture

┌──────────────────────────────────────────────────┐
│  computePreset(role, tabId, widgets, filter)     │
│                                                  │
│  1. Get curated order for role + tab             │
│  2. Apply category filter                        │
│  3. Place curated widgets first                  │
│  4. Append remaining (specialty tabs only)        │
│  5. Return { visibleOrder, hidden }              │
└──────────────────────────────────────────────────┘

Tab Behavior

TabDefault Behavior
PersonalOnly curated widgets shown; others available in library
Specialty (all other tabs)All category widgets shown; curated ones ordered first

Curated Orders

Each tab has role-specific curated widget orders (5 roles × 8 tabs = 40 configurations):
RolePersonalProjectsFinanceGrantsUsers
SuperAdmin97131211
Admin97111011
Manager84369
Member62121
Auditor43434

Reserved Library Widgets

Some widgets are excluded from default layouts and only available through the widget library:
  • key-metrics — Generic KPI placeholder

Widget Lazy Loading

All widgets use dynamic imports via WIDGET_LOADER_MAP for code splitting:
export const WIDGET_LOADER_MAP: Record<string, () => Promise<any>> = {
  'budget-health': () => import('./finance/BudgetHealthWidget'),
  'grant-success-rate': () => import('./grants/GrantSuccessRateWidget'),
  // ... 84 entries total
};
Each widget module exports a default component and a metadata object describing its dimensions, category, and configuration.

Widget Sizing

Widgets declare their preferred size via metadata:
SizeGrid Behavior
COMPACT1×1 grid cell — small metric cards
WIDE2×1 — horizontal charts and tables
TALL1×2 — vertical lists and timelines
CHART2×2 — full charts and complex visualizations
The preset service orders larger widgets (TALL/CHART) before COMPACT for dense grid packing.

Key Files Reference

FilePurpose
src/components/widgets/index.tsWidget registry — 85 lazy-loaded widgets
src/shared/platform/dashboardPresetService.tsPreset computation, curated orders, category filters
src/features/dashboard/Dashboard page, tab navigation, customization UI
src/shared/platform/widget.contracts.tsWidgetInstance, WidgetCategory, WidgetDefinition types
docs/engineering/frontend/widget-system.mdWidget authoring guide and metadata schema