226 lines
11 KiB
Markdown
226 lines
11 KiB
Markdown
# 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
|
||
- [ ] **OAuth Integration**: Google, Apple, Strava, Garmin
|
||
- [ ] **Onboarding & Baselines**: Guided setup, baseline tests, auto zone calc
|
||
- [ ] **Account Roles**: Athlete, Coach, Admin; team/org workspaces
|
||
- [ ] **Multi-device Sessions**: Seamless handoff across web/mobile
|
||
|
||
## Workout Planning
|
||
- [ ] **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] **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
|
||
|
||
## Advanced Analytics
|
||
- [ ] **Interactive Dashboards**: Charts for load (CTL/ATL/TSB), 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
|
||
|
||
## Training & Coaching
|
||
- [ ] **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**: Coach–athlete chat, comments on sessions, file attachments
|
||
|
||
## 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
|
||
|
||
## 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
|
||
- [ ] **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: User Profiles, Equipment & Workouts ✅
|
||
|
||
### Profile & Equipment (completed earlier)
|
||
- [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] 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 ✅
|
||
|
||
### 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
|
||
- [x] Service status in GET `/api/protected/equipment` response (total_distance, total_rides, etc.)
|
||
|
||
---
|
||
|
||
## Next Phase: Phase 3 - OAuth Login & Platform Sync
|
||
|
||
### OAuth Login
|
||
- [ ] Google OAuth 2.0 (sign in with Google)
|
||
- [ ] Apple Sign-In
|
||
- [ ] Strava OAuth (sign in + activity sync)
|
||
|
||
### Platform Sync
|
||
- [ ] Strava activity sync (import completed rides)
|
||
- [ ] TrainingPeaks calendar sync
|
||
- [ ] Intervals.icu integration |