feat: add team-wise standup activity heatmap
Overview
This MR introduces a visual "Member Activity Heatmap" within a new Analytics tab. It allows leads to track team consistency and identifying gaps in standup submissions over a rolling 30-day period.
Key Changes
-
Analytics Component: Built a new
TeamAnalyticsview using a grid-based heatmap layout. -
Data Transformation: - Implemented a utility to aggregate individual standup records into daily team-total counts.
- Added logic to map these counts to a 4-step color intensity scale (0/4, 1/4, 2/4, 3/4, 4/4).
- Navigation: Added a "Status" vs "Analytics" toggle in the header.
- Styling: Consistent with the existing StandupTracker UI, utilizing a blue-scale theme for activity intensity.
Technical Implementation
-
Performance: Used
useMemoto process the heatmap values to ensure smooth tab switching and avoid re-calculating data on every render. -
Responsiveness: Added
overflow-x-autoto the heatmap container to support mobile and tablet viewing of the 30-day range.
Testing Steps
- Navigate to the Analytics tab.
- Confirm that the Y-axis correctly lists all active teams.
- Verify that a date with 4 team uploads shows the darkest blue intensity.
- Verify that the "Refresh" button correctly re-fetches and updates the heatmap grid.