Portal Community

What Is the Dashboard?

The Personal Dashboard is the default landing page when you open WorkDesk. It presents a customizable grid of widgets — each showing a focused piece of information or a quick action. Unlike the Inbox or History sections (which are fixed in structure), the Dashboard is entirely under your control.

Sample Dashboard Layout

Pending Tasks
7
in your inbox right now
Completed Today
3
tasks resolved
Overdue
1
requires immediate action
Recent Workflows

Expense Approval Flow — Completed  |  HR Onboarding — Running  |  Budget Review — Suspended

Quick Launch
Start Leave Request Start Purchase Order

Key Dashboard Concepts

ConceptDescription
Widget GridResponsive CSS grid — widgets snap to column positions. Supports 1/2/3-column span.
Widget Types5 built-in types: PendingTasksCount, RecentWorkflows, MetricsTile, QuickLaunch, AnnouncementBanner
Edit ModeToggle to enable drag handles, resize grips, and the "Remove" button on each widget
Widget PickerSlide-in panel listing all available widget types — click to add to dashboard
Layout PersistenceSaved as JSON per-user in the backend — survives logout, browser close, device change
Admin TemplatesPer-role default layouts applied on first login before user customization

Dashboard API

// Load dashboard layout for current user
GET /api/workdesk/dashboard
Authorization: Bearer {token}

// Response
{
  "userId": "usr-001",
  "templateId": "tmpl-finance-mgr",   // null if user has customized
  "widgets": [
    { "id": "w1", "type": "PendingTasksCount", "col": 0, "row": 0, "w": 1, "h": 1, "config": {} },
    { "id": "w2", "type": "RecentWorkflows",   "col": 1, "row": 0, "w": 2, "h": 1, "config": {} },
    { "id": "w3", "type": "QuickLaunch",       "col": 0, "row": 1, "w": 1, "h": 1,
      "config": { "shortcuts": [
        { "label": "Start Leave Request", "workflowId": "wf-leave-001" }
      ]}
    }
  ],
  "lastModified": "2026-05-20T09:00:00Z"
}

// Save updated layout
PUT /api/workdesk/dashboard
Content-Type: application/json
{ /* same shape as response */ }