Overview
We partnered to overhaul a task-management module's accuracy and performance, aligning every dashboard count, badge, and list around a single source of truth while slashing payload sizes and response times across list, kanban, and card views.
Challenges
- Home-dashboard task summary cards showed inaccurate, misleading counts that teams couldn't trust for daily planning.
- Card badges and the items shown inside card tabs didn't match, leaving users second-guessing which number was real.
- It was unclear whether active, overdue, upcoming, completed, assigned, and created counts followed the same rules, creating ambiguity across every metric.
- Due dates displayed incorrectly because of unsafe frontend date construction, causing day-shift and timezone drift.
- Overdue and status behavior was inconsistent because the logic lived in multiple places instead of one source of truth.
- Task lists were slow because every tenant task was returned at once with no pagination.
- Dashboard responses were heavy, using full task-detail serialization for small card lists that didn't need it.
- Kanban boards lagged because every column serialized full nested task details, including comments, history, and attachments.
- Repeated, redundant count queries in the home-view endpoint and full frontend reloads added avoidable database and network overhead.
- Inclusion and exclusion rules for project-type tasks were undocumented, so nobody could say what a given count was actually measuring.
Solution highlights
- Built an accurate home-dashboard task summary card with consistent, clearly defined count definitions.
- Delivered server-provided counts for active, overdue, completed, upcoming, assigned, and created task states.
- Established consistent base query rules shared by both the summary counts and the visible task lists so numbers always reconcile.
- Introduced lightweight, card-specific, list, and kanban serializers so dashboard and board views render fast without heavy payloads.
- Added server-side pagination for large task lists and optimized count aggregation to cut repeated database queries.
- Standardized overdue and status calculation from a single backend source of truth, with consistent due-date serialization for safe frontend display.
- Updated the frontend display to eliminate timezone and day-shift issues in due dates.
- Added optional short-lived caching for expensive task stats and repeated card requests where real-time precision isn't required.
- Wrote validation tests and manual regression coverage for dashboard counts, role-based results, due dates, and the card, list, kanban, and detail screens, plus documentation of what each metric includes and excludes.
Outcomes
- Teams can now trust dashboard counts because tab badges and task lists draw from the same dataset and semantics.
- The confusing gap between visible list length and full badge counts is gone, so what users see matches what the badge says.
- Due dates display correctly and consistently, free of timezone and local-midnight parsing drift.
- Overdue and status indicators behave the same everywhere because they come from one backend source of truth.
- Dashboard, list, and kanban views load faster thanks to lightweight serializers and a single small dashboard request.
- Large task lists stay responsive at scale through server-side pagination instead of returning every task at once.
- Database overhead drops because redundant count queries are consolidated and aggregation is optimized.
- Existing tenant, member, role, and task-type rules are fully preserved while performance improves and detail pages keep their full task data.
- Clear acceptance criteria and regression checks mean performance changes won't silently break task detail or assignment flows, and every metric's meaning is documented.