# TODO Features ## User Management - [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 - [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 - [ ] **Goal Setting & Tracking**: SMART goals with real-time progress bars - [ ] **Race/Event Planner**: Target events, taper builder, gear checklist ## Workout Tracking - [x] **Workout CRUD**: Create, read, update, delete workouts with calendar integration - [x] **Device Capture**: File upload (FIT/TCX/GPX activity import with metric extraction) - [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 - [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 - [ ] **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 - [ ] **Nutrition Tracking**: Food log, barcode/manual entry, hydration tracking - [ ] **Recovery Optimization**: Sleep/HRV import, readiness score, rest day prompts - [ ] **Injury Prevention & Management**: Screeners, red-flag alerts, return-to-ride flow - [ ] **Supplement & Allergy Flags**: Notes and reminders in plan builder ## Community & Social - [ ] **Social Sharing**: One-click share to Strava/social with privacy controls - [ ] **Community Forum**: Topics, groups/clubs, moderation tools - [ ] **Leaderboards**: Global, club, event, and route/segment leaderboards - [ ] **Challenges & Streaks**: Time-boxed events, badges, streak protection ## Gamification & Engagement - [ ] **Achievements & Badges**: Milestones (consistency, PRs, climbing, streaks) - [ ] **Personalized Recommendations (AI)**: Next best workout, videos, articles - [ ] **Rewards & Incentives**: Points store, partner discounts, raffles ## Notifications & Comms - [ ] **Reminders**: Email, push, SMS; smart timing - [ ] **Digest Emails**: Weekly plan, monthly progress - [ ] **Real-time Alerts**: Overtraining risk, missed session, weather hazard ## Accessibility & Internationalization - [ ] **A11y**: WCAG 2.2 AA, keyboard nav, screen reader labels - [ ] **Localization**: i18n framework, units (imperial/metric), timezones - [ ] **Color-blind Safe Palettes**: Analytics & maps ## Mobile & Apps - [ ] **PWA Offline Mode**: Log workouts offline; sync when online - [ ] **Native App Shell**: Background sync, notifications, wearables bridge ## Security, Privacy & Compliance - [ ] **Privacy Controls**: Public/private by item, club privacy, anonymized leaderboards - [ ] **Data Protection**: Encryption at rest/in transit, secrets rotation - [ ] **Compliance**: GDPR/CCPA requests (export/delete), age gating, COPPA checks - [ ] **Audit Logs**: Admin and coach actions ## Admin, Billing & Ops - [ ] **Admin Console**: User management, feature flags, content moderation - [ ] **Subscriptions**: Free/Pro/Coach tiers, trials, coupons, taxes (Stripe) - [ ] **Telemetry & Observability**: Metrics, tracing, error reporting, uptime SLOs - [ ] **Scalability**: Queueing for imports/exports, background jobs - [ ] **Backups & DR**: Automated backups, restore drills, RTO/RPO defined ## Content & Library - [ ] **Exercise Library**: Strength/mobility videos with cues and progressions - [ ] **Knowledge Base**: Articles on training, nutrition, recovery - [ ] **Route Library**: GPX planner/import, elevation profiles, weather overlays ## Possible Future Features - [ ] **Virtual Reality (VR) Integration**: Immersive rides with real-time metrics - [ ] **Augmented Reality (AR) Integration**: HUD overlays during rides - [ ] **Machine Learning (ML) Integration**: Injury risk models, plan optimization, weather-aware ETA and fueling estimates --- ## Completed - Phase 1: Authentication & User Management ### Infrastructure - [x] Migrated from Python/Flask to Go with Chi router - [x] Restructured project with clean architecture (`cmd/`, `internal/`, `pkg/`) - [x] PostgreSQL + GORM ORM setup with migrations - [x] Docker/Podman containerization with multi-stage builds ### Authentication - [x] User signup with validation (username, email, password strength) - [x] User login with JWT tokens (access + refresh) - [x] Password hashing with bcrypt - [x] Protected routes with Bearer token authentication - [x] Password reset flow with email tokens ### User Profiles - [x] User model with relationships (Profile, PasswordReset, Sessions) - [x] User profile with stats (HR zones, FTP, weight, total rides, distance, time) - [x] Email service integration (Resend) for notifications - [x] Automatic profile creation on user signup ### Code Quality - [x] Repository pattern for data access - [x] Service layer for business logic - [x] Auth middleware for protected routes - [x] Error handling and validation - [x] Environment configuration with .env --- ## Completed - Phase 2: Profiles, Equipment & Workouts ### 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] 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] 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 - [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 --- ## Completed - Phase 2.5: Export & Device Integration ### Workout Export - [x] GET `/api/protected/workouts/export/fit` - FIT workout file export (Garmin-compatible) - [x] GET `/api/protected/workouts/export/zwo` - ZWO file export (Zwift-compatible) - [x] Segment-to-FIT mapping (warmup/steady/interval/cooldown/ramp/freeride) - [x] Power targets converted from %FTP to absolute watts for device display - [x] `github.com/muktihari/fit` library integration for FIT encoding ### OAuth Infrastructure - [x] OAuthConnection model with AES-256-GCM token encryption - [x] OAuthState model for CSRF protection during OAuth flows - [x] Shared OAuth service (state management, PKCE, token exchange, auto-refresh) - [x] OAuth config loader from environment variables ### Garmin Connect Integration - [x] GET `/api/protected/garmin/auth` - OAuth2 PKCE flow initiation - [x] GET `/api/garmin/callback` - OAuth callback handler - [x] POST `/api/protected/workouts/push/garmin` - Push workout to Garmin Connect - [x] GET `/api/protected/garmin/status` - Connection status check - [x] DELETE `/api/protected/garmin/disconnect` - Revoke connection ### Wahoo Cloud API Integration - [x] GET `/api/protected/wahoo/auth` - OAuth2 flow initiation - [x] GET `/api/wahoo/callback` - OAuth callback handler - [x] POST `/api/protected/workouts/push/wahoo` - Push workout as Wahoo plan - [x] GET `/api/protected/wahoo/status` - Connection status check - [x] DELETE `/api/protected/wahoo/disconnect` - Revoke connection --- ## 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) - [x] FIT activity parser using `muktihari/fit` decoder (session-level metrics) - [x] TCX activity parser (lap aggregation, trackpoint elevation gain) - [x] GPX activity parser (Haversine distance, elevation gain, extension parsing) - [x] Extracts: duration, distance, avg/max power, avg/max HR, elevation gain, calories, cadence - [x] Can create new completed workout or update existing planned workout with actual data - [x] Supports optional equipment_id assignment on import ### Equipment Mileage & Service Tracking - [x] Auto-increment equipment mileage when activities are imported with equipment assigned - [x] Total distance (km), total duration (seconds), total rides tracked per equipment - [x] Service interval configuration (distance-based and/or duration-based) - [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 --- ## Completed - Phase 3: Frontend & Full-Stack Features ### Vue 3 Frontend (Tailwind CSS v4) - [x] Vue 3 Composition API with `