- Add AdminOverview page with stats cards and recent activity
- Add UsageStats page with charts and heatmap
- Active users chart with daily/weekly/monthly toggle
- Action breakdown with pie and bar charts
- Peak times heatmap (24h x 7d)
- Update admin navigation with Overview and Statistics links
- Add ActivityStream page with paginated activity list
- Add user, action type, and date range filters
- Implement auto-refresh every 30 seconds (pauses with filters)
- Add "New activity" indicator for real-time updates
- Add export modal with date range picker for CSV download
- Update admin navigation to dropdown with Users and Activity links
- Add AdminRoute component for admin-only route protection
- Add admin navigation link (visible only to admins)
- Create UserList page with pagination, search, and filters
- Create UserDetail page with enable/disable and promote/demote
- Add confirmation dialogs for destructive actions
- Prevent self-modification (cannot disable/demote yourself)
- All admin routes protected with AdminRoute wrapper
- Create AuthContext and AuthProvider for auth state management
- Create useAuth hook for easy access to auth state
- Create ProtectedRoute component to guard authenticated routes
- Create Login page with Google sign-in button and error handling
- Create useActivityTracker hook for frontend activity logging
- Update App.jsx to protect all routes and add user display/logout
- Update main.jsx to wrap app with AuthProvider
- Add credentials: 'include' to all API fetch calls
- Install react-router-dom for client-side routing
- Overview accessible at /
- Available Units accessible at /units
- Analytics accessible at /analytics
- Unknown routes redirect to overview
- Update page title to Towers Tracking
- Add alphabetical sorting as default with multiple sort options
- Fix bedroom filter to properly handle studios (0 BR)
- Update bedroom filter options to Studio, 1 BR, 2 BR
- Add time range selector (1M, 1Y, All) for unit price history charts
- Fetch full price history on demand when viewing unit details
- Add comprehensive analytics page with monthly trends, seasonality,
plan performance, and historical price comparisons
- Display last scrape time from backend instead of frontend refresh time