Dashboard
Overview
The Dashboard is the primary landing page after login, providing an at-a-glance view of putting performance and a comprehensive session history table.
Core Features
All-Time Stats Summary
Displayed in a grid of stat cards:
Makes: Total putts made
Misses: Total putts missed
Accuracy: Make percentage (makes / total putts × 100)
Fastest 21: Best time to make 21 consecutive putts (in seconds)
Dynamic Display: Stats section hides when:
A session is expanded for detailed view
User scrolls down in the session table
Session History Table
Table Columns:
Details: Expandable button to show session breakdown
Session #: Privacy-friendly daily session number (newest = highest)
Type: Session category (Practice, Duel, League, etc.)
Duration: Session length in minutes
Makes: Total successful putts
Misses: Total unsuccessful putts
Streak: Best consecutive makes in session
Fastest 21: Time to complete 21 consecutive makes
PPM: Putts Per Minute
MPM: Makes Per Minute
Max 60s: Maximum makes in any 60-second period
Pagination:
21 sessions per page (industry-standard golf number)
Standard pagination controls
Maintains expanded state across page changes
Pagination embedded inside session-list-container
Session Row Expansion
When a session is expanded:
Displays detailed category breakdown
Shows make/miss analysis by distance and angle
Performance metrics visualization
Scroll-to-view automatic positioning
Dynamic height adjustment for optimal viewing
Data Management
Refresh Button: Manual data synchronization
Career Stats Link: Navigate to comprehensive player statistics
Daily Session Numbering: Privacy-first numbering system
Sessions numbered per day (1, 2, 3...)
Newest sessions get highest numbers
Prevents exposure of total session count
Key Insights
Performance Optimization
Paginated data loading (21 sessions per page)
Memoized calculations for session numbers
Scroll event throttling
Conditional rendering for large datasets
Session Numbering Algorithm
Privacy Features
Session numbers reset daily
No global session count exposed
Time-based privacy protection
State Management
expandedSessionId: Tracks which session is currently expandedisScrolling: Monitors scroll state for UI optimizationcurrentPage: Manages pagination statesessionsLoading: Loading state for async data fetching
Responsive Behavior
Desktop: Full table with all columns
Tablet: Maintains table structure with adjusted spacing
Mobile: Optimized column widths and stacking
Last updated