The Kanban Board
The Kanban board at /dashboard/tasks is the home base for any ops manager. It surfaces every open task in your subaccount, color-coded by priority, with SLA badges that count down to breach. Most ops teams put this on a wall monitor during the morning standup.
Columns
The board has five live columns plus an off-board terminal state:
| Column | What lives here |
|---|---|
| Created | New tasks not yet assigned to a technician |
| Assigned | Tasks claimed by or pushed to a specific tech, but work hasn't started |
| In Progress | A tech has pressed Start and captured a "before" photo |
| Resolved | The tech has finished work and uploaded an "after" photo — waiting for sign-off |
| Verified | An ops_manager or lead_tech has approved the work. Vehicle is back to available. |
Tasks that have been verified for more than 7 days drop off the board and live in Closed, reachable from the filter bar. Cancelled tasks move directly to the off-board state and surface in the audit log.
What each card shows
A card is built for at-a-glance reading at standup:
- Vehicle number in large type — for example
V-0042 - Task type as an icon (wrench, battery, broom, etc.)
- Priority chip (gray, blue, orange, red)
- Assignee avatar, or blank if unclaimed
- Age — how long since
created_at - SLA indicator — a yellow warning when within 25% of breach, a red dot once breached
Tap a card to open the side drawer, which holds the full task detail without leaving the board.
Filters and views
Use the filter bar to focus the board:
- Status — multi-select; defaults to all live states
- Type — for example, narrow to just
battery_swapduring a charging push - Priority — show only
criticalduring a triage session - Assignee — see a single tech's queue
- Vehicle — pull every task ever opened against one machine
- Date range — useful when reviewing the last 7 or 30 days
The three view tabs (Kanban, Table, Map) all respect the same filter state. Map view is the fastest way to spot a cluster of low-battery tasks in a single zone, which usually means rebalancing pressure rather than a maintenance problem.
SLA badges
Each card carries an SLA indicator driven by tasks.sla_due_at. The cron at /api/cron/task-sla-check runs every 15 minutes and records breaches in task_sla_breaches. The UI uses three states:
- Green — more than 25% of the SLA window remaining
- Yellow — within 25% of the deadline (at-risk)
- Red — past the SLA deadline (breached)
When a task breaches, the assignee and the ops_manager both receive a push notification, and critical tasks also fire a Slack webhook if you have one configured.
Drag-and-drop and bulk actions
The board's primary write path is the side-drawer action buttons (Assign, Start, Resolve, Verify), not drag-and-drop. State transitions are guarded server-side, so dragging a card to Verified when it has not yet been Resolved would 409 anyway.
For batch work, use the bulk action toolbar that appears once you check two or more cards:
- Bulk Assign — push 50 low-battery tasks to one chargehand
- Bulk Close — wrap up a shift's worth of
deploytasks in one click - Bulk Reschedule — push all pending scheduled-maintenance tasks back a day
The side drawer
Click any card to open the side drawer with:
- Vehicle photo and last-known location
- Full timeline with every status change, comment, and assignee swap
- Photos grouped by phase (before, during, after) with signed URLs that expire after one hour
- Parts logged against the task with unit costs
- Labor logged against the task with minutes and hourly rate
- Comments — internal-only discussion thread
- Action buttons gated by your role
To see the same detail in a full page, click the title to land on /dashboard/tasks/[id].
Pro tip
Save the Kanban with your daily standup filter (status = Created + Assigned + In Progress, sorted by priority) as a browser bookmark. Most ops managers open it as the first tab of the morning.