lots of stuff, don't truly remember

This commit is contained in:
Blake Ridgway
2026-05-17 20:39:47 -05:00
parent 178ffb3425
commit dc4fe558b7
35 changed files with 3501 additions and 112 deletions

155
TODO.md
View File

@@ -4,37 +4,79 @@
- [x] **User Registration & Login**: Email authentication with JWT tokens
- [x] **User Profile**: Bio, stats, zones (HR/Power), equipment, FTP, weight
- [x] **Password Recovery**: Email-based reset with secure tokens
- [ ] **OAuth Integration**: Google, Apple, Strava, Garmin
- [ ] **Onboarding & Baselines**: Guided setup, baseline tests, auto zone calc
- [x] **Onboarding Wizard**: Guided setup with profile, metrics, equipment, and preferences steps
- [~] **OAuth Integration**: Garmin & Wahoo OAuth implemented; Google, Apple, Strava pending
- [ ] **Account Roles**: Athlete, Coach, Admin; team/org workspaces
- [ ] **Multi-device Sessions**: Seamless handoff across web/mobile
## Workout Planning
- [x] **Workout Scheduling**: Calendar view with monthly navigation, rich workout cards (duration, TSS, zone-colored segment charts, status borders)
- [x] **Templates Library**: 11 built-in templates (Recovery, Endurance, Tempo, Sweet Spot, Threshold, Over-Unders, VO2max, Sprint, Ramp Test) with category browsing
- [x] **Template Scheduling**: Browse and schedule templates directly from calendar Add Workout modal
- [x] **Structured Workout Builder**: Interval builder with warmup/main/cooldown sections, power targets (%FTP), cadence, repeats, rest intervals, and live preview chart
- [x] **Export Structured Workouts**: .zwo (Zwift), Garmin FIT/Workout, Wahoo
- [ ] **AI-Powered Planning**: Generate plans by goal, time, fitness level
- [ ] **Adaptive Scheduling**: Auto-reschedule based on missed sessions, fatigue, weather
- [ ] **Workout Scheduling**: Calendar view, drag-drop, ICS sync (Google/Apple/Outlook)
- [ ] **Goal Setting & Tracking**: SMART goals with real-time progress bars
- [x] **Templates Library**: Plan & session templates (endurance, threshold, VO2, strength)
- [x] **Export Structured Workouts**: .zwo (Zwift), Garmin FIT/Workout, Wahoo, TrainerRoad
- [ ] **Race/Event Planner**: Target events, taper builder, gear checklist
## Workout Tracking
- [ ] **Workout Logging**: Exercises, sets/reps/weight; power, HR, cadence, GPS
- [x] **Workout CRUD**: Create, read, update, delete workouts with calendar integration
- [x] **Device Capture**: File upload (FIT/TCX/GPX activity import with metric extraction)
- [ ] **Tags & Notes**: RPE, mood, conditions, injuries, equipment used
- [x] **Equipment Tracking**: Bike/components mileage auto-tracking, service reminders
- [x] **ZWO Import**: Client-side Zwift workout file parsing
- [x] **Equipment Tracking**: Bike/components mileage auto-tracking, service interval reminders, distance/duration since last service
- [~] **Tags & Notes**: RPE & Notes fields implemented in backend; mood, conditions, injuries, and tag system still pending
- [ ] **Drag-drop Calendar**: Reorder/reschedule workouts by dragging
## Workout Visualization
- [x] **Workout Detail Modal**: Interval chart, auto-generated workout summary, zone distribution, completed metrics, equipment, Garmin/Wahoo push
- [x] **Power Zone System**: 7-zone model (Recovery through Neuromuscular) with color-coded visualization
- [x] **Mini Segment Charts**: Compact zone-colored bars on calendar cards
- [x] **Zone Distribution**: Horizontal stacked bar with time-in-zone breakdown
- [x] **TSS/IF Calculation**: Training Stress Score and Intensity Factor from segment data
## Dashboard
- [x] **Stats Overview**: Total rides, distance, time, elevation gain
- [x] **Calendar Widget**: Compact monthly calendar with workout cards, month navigation
- [x] **Next Workout**: Upcoming workout display with link to calendar
- [x] **Today's Progress**: Completion percentage for daily workouts
- [x] **Profile Display**: Welcome message with first/last name from user profile
- [ ] **Interactive Charts**: Activity trends (CTL/ATL/TSB), power curves
## Advanced Analytics
- [ ] **Interactive Dashboards**: Charts for load (CTL/ATL/TSB), power curves, trends
- [x] **Stats Page**: Summary, weekly, and monthly aggregated statistics
- [x] **Personal Bests**: Personal records tracking
- [ ] **Interactive Dashboards**: Charts for training load, power curves, trends
- [ ] **Progress Insights (AI)**: Automatic highlights, plateau detection, anomaly alerts
- [ ] **Comparisons**: Before/after, season-over-season, segment/time comparisons
- [ ] **Custom Reports**: Export CSV/PDF; shareable report links
## Workout Library
- [x] **Browse Library**: System and user workouts with search, category, type, and difficulty filters
- [x] **Workout Detail Page**: Full workout view with interval chart and segment breakdown
- [x] **Create Custom Workouts**: Interval builder with warmup/main/cooldown structure
- [x] **My Workouts**: User's custom workout collection
- [x] **Favorites**: Save and browse favorite workouts
- [x] **Ratings**: Star rating system with comments
- [ ] **Community Sharing**: Public/private workout sharing
## Training & Coaching
- [x] **Structured Workouts**: Interval builder with targets (%FTP, cadence, repeats)
- [ ] **Coaching & Guidance**: Coach portal, athlete assignments, plan reviews
- [ ] **Virtual Training Rides**: Integrations with Zwift/Rouvy/RGT; video routes
- [ ] **Structured Workouts**: Interval builder with targets (%FTP, %HRR, RPE)
- [ ] **Messaging**: Coachathlete chat, comments on sessions, file attachments
- [ ] **Messaging**: Coach-athlete chat, comments on sessions, file attachments
## Integrations & Data
- [x] **Garmin Connect**: OAuth2 PKCE flow, push workouts, connection management
- [x] **Wahoo Cloud API**: OAuth2 flow, push workouts as plans, connection management
- [x] **Activity Import**: FIT (session metrics), TCX (lap aggregation), GPX (Haversine distance, elevation)
- [x] **Workout Export**: FIT (Garmin-compatible), ZWO (Zwift-compatible)
- [ ] **Strava Sync**: OAuth login + activity sync
- [ ] **TrainingPeaks**: Calendar + workout push
- [x] **Intervals.icu**: Integration (push workouts + sync activities)
- [ ] **COROS, Apple Health, Google Fit**: Wearable sync
- [ ] **Music Integration**: Spotify/Apple Music workout-matched playlists
- [ ] **Public API & Webhooks**: For partners, coaches, clubs
## Nutrition & Recovery
- [ ] **Nutrition Planning**: Meal plans, macros, carb periodization
@@ -54,13 +96,6 @@
- [ ] **Personalized Recommendations (AI)**: Next best workout, videos, articles
- [ ] **Rewards & Incentives**: Points store, partner discounts, raffles
## Integrations & Data
- [~] **Wearable Sync**: Garmin, Wahoo, COROS, Apple Health, Google Fit (Garmin + Wahoo OAuth & push implemented)
- [ ] **Platform Sync**: Strava, TrainingPeaks, Intervals.icu (calendar + workout push)
- [ ] **Music Integration**: Spotify/Apple Music workout-matched playlists
- [~] **Data Import/Export**: FIT/TCX/GPX activity import implemented; CSV/JSON export & bulk import pending
- [ ] **Public API & Webhooks**: For partners, coaches, clubs
## Notifications & Comms
- [ ] **Reminders**: Email, push, SMS; smart timing
- [ ] **Digest Emails**: Weekly plan, monthly progress
@@ -100,7 +135,7 @@
---
## Completed - Phase 1: Authentication & User Management
## Completed - Phase 1: Authentication & User Management
### Infrastructure
- [x] Migrated from Python/Flask to Go with Chi router
@@ -130,37 +165,27 @@
---
## Completed - Phase 2: User Profiles, Equipment & Workouts
## Completed - Phase 2: Profiles, Equipment & Workouts
### Profile & Equipment (completed earlier)
### API Endpoints
- [x] GET/PUT `/api/protected/profile` - Full profile management
- [x] POST/GET/PUT/DELETE `/api/protected/equipment` - Bike/gear CRUD
- [x] GET `/api/protected/zones` - Calculate HR & power training zones
- [x] Equipment tracking (brand, model, weight)
- [x] Equipment usage stats from workouts
### Workouts (completed earlier)
- [x] POST/GET/PUT/DELETE `/api/protected/workouts` - Full workout CRUD
- [x] GET `/api/protected/workouts/month` - Calendar month filtering
- [x] GET `/api/protected/workout-types` - Predefined workout types
- [x] POST `/api/protected/workouts/upload` - ZWO file import & parsing
- [x] Structured workout segments (JSONB) with power/cadence targets
### Stats
- [x] GET `/api/protected/stats/summary` - Overall ride statistics
- [x] GET `/api/protected/stats/weekly` - Weekly aggregated stats
- [x] GET `/api/protected/stats/monthly` - Monthly aggregated stats
- [x] GET `/api/protected/stats/personal-bests` - Personal records
### Workout Templates
- [x] GET `/api/protected/workout-templates` - List predefined templates (with category filter)
- [x] GET `/api/protected/workout-templates/detail` - Get template with full segment data
- [x] GET `/api/protected/workout-templates` - List templates (with category filter)
- [x] GET `/api/protected/workout-templates/detail` - Template with full segments
- [x] POST `/api/protected/workouts/from-template` - Create workout from template
- [x] 11 built-in templates: Recovery, Endurance, Tempo, Sweet Spot, Threshold, Over-Unders, VO2max, Sprint, Ramp Test
---
## Completed - Phase 2.5: Workout Export & Device Integration
## Completed - Phase 2.5: Export & Device Integration
### Workout Export
- [x] GET `/api/protected/workouts/export/fit` - FIT workout file export (Garmin-compatible)
@@ -191,7 +216,7 @@
---
## Completed - Phase 2.6: Activity Import & Equipment Mileage
## Completed - Phase 2.6: Activity Import & Equipment Mileage
### Activity File Import (FIT/TCX/GPX)
- [x] POST `/api/protected/workouts/import` - Import activity files (multipart upload)
@@ -209,11 +234,60 @@
- [x] Distance and duration since last service counters
- [x] POST `/api/protected/equipment/service` - Record service (resets counters)
- [x] GET `/api/protected/equipment/service-status` - Check if equipment needs servicing
- [x] Service status in GET `/api/protected/equipment` response (total_distance, total_rides, etc.)
---
## Next Phase: Phase 3 - OAuth Login & Platform Sync
## Completed - Phase 3: Frontend & Full-Stack Features
### Vue 3 Frontend (Tailwind CSS v4)
- [x] Vue 3 Composition API with `<script setup>`, Pinia stores, Vue Router 4
- [x] Responsive dark/light mode UI with Tailwind CSS
- [x] Docker/Podman containerized with Nginx serving
### Dashboard
- [x] Stats overview cards (rides, distance, time, elevation)
- [x] Compact calendar widget with monthly navigation and workout cards
- [x] Next workout display with today's progress bar
- [x] Profile-aware welcome message (first/last name)
- [x] Workout detail modal from calendar clicks
### Calendar & Workout Management
- [x] Full monthly calendar with TrainingPeaks-style workout cards
- [x] Rich cards: duration, TSS badge, zone-colored mini segment chart, title, status borders
- [x] Add Workout modal with Manual and From Template tabs
- [x] Template browser with category filtering, detail preview (IntervalDisplay), and direct scheduling
- [x] Workout builder (IntervalBuilder) in manual tab with warmup/main/cooldown, power targets, cadence, repeats, presets, live chart preview
- [x] Structure-to-segments conversion for API submission
- [x] File upload support (FIT/TCX/GPX activity import, ZWO workout import)
### Workout Detail & Visualization
- [x] IntervalDisplay chart (section-colored bars, height = power, width = time)
- [x] Auto-generated workout summary text (detects repeat patterns)
- [x] Zone distribution (stacked bar + time-in-zone legend)
- [x] MiniSegmentChart for calendar cells
- [x] 7-zone power model with hex color mapping
- [x] TSS and IF calculation from segments
- [x] Garmin/Wahoo push buttons with connection status
### Workout Library
- [x] Browse system + user workouts with search, filters (type, category, difficulty)
- [x] Workout detail page with interval chart
- [x] Create/edit custom workouts with interval builder
- [x] My Workouts and Favorites collections
- [x] Star rating with comments
### Other Pages
- [x] Equipment management with service tracking, mileage display, record service
- [x] Training zones page (HR & power zones)
- [x] Stats page (summary, weekly, monthly, personal bests)
- [x] Templates browser page with category filter and scheduling
- [x] Onboarding wizard (profile, metrics, equipment, preferences steps)
- [x] Settings: Garmin/Wahoo connections page with OAuth flow
- [x] User profile editor
---
## Next Phase: Phase 4 - OAuth Login & Platform Sync
### OAuth Login
- [ ] Google OAuth 2.0 (sign in with Google)
@@ -223,4 +297,9 @@
### Platform Sync
- [ ] Strava activity sync (import completed rides)
- [ ] TrainingPeaks calendar sync
- [ ] Intervals.icu integration
- [x] Intervals.icu integration (push workouts + sync activities)
### Calendar Enhancements
- [ ] Drag-and-drop workout rescheduling
- [ ] ICS sync (Google Calendar / Apple Calendar / Outlook)
- [ ] Week view and day view options