Dashboard
A customisable widget board for operational KPIs, pipeline, schedule, and returns — with live updates and optional shared layouts.
Overview
The dashboard is the first screen you see after logging in. It is a customisable widget board grouped into sections (Overview, Rentals, Schedule, Returns, and Plugins when applicable). Each card pulls live operational data you are permitted to see.
Route: /dashboard

Widget board
Widgets are cards on the board — KPI strips, tables, charts, schedule timelines, mini boards, calendars, activity feeds, and quick-action shortcuts. Your starting layout depends on your role (see Role-based defaults); after that, the board is yours to arrange.
Customise
Click Customise to enter edit mode. The edit bar shows three actions — + Add widget, Add group, and Reset to default — plus a right-aligned drag/resize hint on the same row. While customising you can:
| Action | How |
|---|---|
| Add a widget | + Add widget opens the widget catalogue modal (domain filters + search). Click a widget to place it in the targeted group (first free grid cell). |
| Add a group | Add group inserts a new section; empty groups show a dashed placeholder in edit mode. |
| Remove a widget | Use the × control on the card. |
| Place | Drag a card onto any cell in its group's 12-column grid. White space is allowed and kept — widgets are not auto-compacted. Drag stays within the group (use + Widget on another group to place there). |
| Resize | Use the S / M / L controls on each card (only sizes the widget allows are enabled). L is full width (12 cols) × 2 rows; S and M keep their column spans at one row. |
| Delete a group | Trash icon, then Confirm? on the second click. Deletes the group and its widgets (they are not moved elsewhere). The last remaining group cannot be deleted. |
| Reset | Reset to default (confirm on the second click) restores the empty board scaffolding and exits customise mode. |
| Manage boards | Use the Manage tab to rename, reorder, duplicate, delete, or publish shares — board publishing is not on the edit bar. |
Click Done when you are finished. Layout changes save as you go.
Widgets you are not permitted to view never appear in the catalogue and are omitted from shared or default layouts.
Per-widget range and comparison
Some widgets expose their own date-range and comparison controls in the card header (outside customise mode):
| Control | Purpose |
|---|---|
| Range pills | Switch the widget's reporting window (for example TODAY, WEEK, MONTH, CUSTOM on KPI cards, or 7D / 30D / 90D / MTD on revenue trend). Activity density uses BUSINESS / ME. |
| Comparison | On widgets that support it (for example revenue trend), cycle Compare → vs prior (and off again) to overlay a prior-period comparison. |
Range choices are saved on that widget instance. Point-in-time metrics such as on-hire and overdue remain current regardless of range.
Drill-downs and quick actions
Where a widget has a drill-down, a link in the card header opens the related list (rentals, invoices, and so on). The Quick actions widget offers one-tap shortcuts — New Rental, Add Account, Create Invoice, Add catalogue item — each shown only when you have permission to create that record.
Widget catalogue
Core widgets (add from the catalogue modal). Permission is the Gate ability required; schedule/returns tables also accept warehouse dispatch.view / returns.view.
| Widget | Renderer | Permission | Notes |
|---|---|---|---|
| KPI cards | stat | — | Range: today / week / month / custom |
| Rental pipeline | stat | rentals.access | Open quotes, live orders, due soon, shortages |
| Recent rentals | table | rentals.access | Latest with state and value |
| Quick actions | actions | — | Create shortcuts |
| Rental status | stat | rentals.access | Counts by lifecycle state |
| Open quotations | table | rentals.access | Awaiting decision |
| Live orders | table | rentals.access | Active non-complete orders |
| Movement timeline | schedule | rentals.access or dispatch/returns.view | Dispatches and returns strip |
| Due to dispatch | table | rentals.access or dispatch.view | Starts within 7 days |
| Due back | table | rentals.access or returns.view | Returns within 7 days |
| Due back today | table | rentals.access or returns.view | Due today |
| Overdue returns | table | rentals.access or returns.view | Past due |
| Recently returned | table | rentals.access or returns.view | Last 7 days |
| Recent activity | feed | — | Action log |
| Revenue trend | chart | invoices.access | Line + trendline; 7d/30d/90d/mtd; vs prior |
| Orders & quotes created | chart | rentals.access | Dual line + order trendline |
| Conversion rate trend | chart | rentals.access | Orders/quotes % over time |
| Revenue mix | chart | invoices.access | Hire / services / sales pie |
| Rental value by state | chart | rentals.access | Doughnut (traffic-light colours) |
| Top customers by revenue | chart | invoices.access | Bar chart |
| Open pipeline | breakdown | rentals.access | Value by state |
| Top rentals | list | rentals.access | Ranked by value |
| Debtor snapshot | breakdown | invoices.access | Overdue by age band |
| Payment behaviour | chart | invoices.access | Days-to-pay trend + late payers |
| Credit utilisation | list | invoices.access | Accounts near credit limit |
| Activity density | heatmap | — | Business or me (12 months) |
| Dispatch board | board-mini | dispatch.view | Stage counts, attention, totals |
| Returns board | board-mini | returns.view | Stage counts, attention, totals |
| My activities | calendar | — | Personal month + upcoming |
| Pipeline funnel | breakdown | rentals.access | Draft→quote→order→complete + conversion % |
| Pipeline value over time | chart | rentals.access | Stacked bar by state |
| Win / loss trend | chart | rentals.access | New orders vs lost quotes |
| Aging quotations | table | rentals.access | Idle quotes needing chase |
Plugins may register additional cards via the dashboard.widgets slot.
Role-based defaults
The first time you open the dashboard, Signals picks a starting layout from your role. Owners and the Admin role get the full commercial and operations board. Other seeded roles start with a narrower set:
| Role | Emphasis |
|---|---|
| Admin / Owner | KPIs, pipeline, recent rentals, quick actions; rentals funnel/aging; dispatch & returns mini boards |
| Operations Manager | Execution: KPIs, activity calendar/heatmap, live orders, dispatch/returns mini boards |
| Sales | Commercial charts (revenue, conversion, mix, win/loss, funnel), aging quotes, personal calendar |
| Warehouse | KPIs plus dispatch/returns mini boards and schedule/returns tables (via dispatch/returns permissions) |
| Read Only | Reporting view without quick actions (those shortcuts are create actions) |
Once you save a custom layout, the role preset is no longer applied. Reset to default brings the role preset back.
Guided tour
On first visit, a short guided tour highlights sections, live cards, customise mode, reorder/resize, and reset/replay. Use Replay tour in the header anytime for a refresher. Completing or skipping the tour is remembered for your account.
Live updates
When dashboard-relevant activity happens elsewhere in Signals, the board refreshes its widgets in real time so the figures stay current. Each refresh re-queries data under your own permissions — you only ever see numbers you could load yourself.
Shared dashboards
Administrators with settings access can publish the active personal board as a shared dashboard from Manage dashboards → Publish current board (name + role, then Publish). Already-published shares are listed there with their audience roles and an Unpublish action.
Recipients see shared boards on the tab strip and under Shared with you in the manage modal. Shared dashboards are read-only: customise is disabled, and a Read only badge is shown while one is selected. Switching back to a personal board restores editing.