11 KiB
11 KiB
TODO Features
User Management
- User Registration & Login: Email authentication with JWT tokens
- User Profile: Bio, stats, zones (HR/Power), equipment, FTP, weight
- 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
- Templates Library: Plan & session templates (endurance, threshold, VO2, strength)
- 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
- Device Capture: File upload (FIT/TCX/GPX activity import with metric extraction)
- Tags & Notes: RPE, mood, conditions, injuries, equipment used
- 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
- Migrated from Python/Flask to Go with Chi router
- Restructured project with clean architecture (
cmd/,internal/,pkg/) - PostgreSQL + GORM ORM setup with migrations
- Docker/Podman containerization with multi-stage builds
Authentication
- User signup with validation (username, email, password strength)
- User login with JWT tokens (access + refresh)
- Password hashing with bcrypt
- Protected routes with Bearer token authentication
- Password reset flow with email tokens
User Profiles
- User model with relationships (Profile, PasswordReset, Sessions)
- User profile with stats (HR zones, FTP, weight, total rides, distance, time)
- Email service integration (Resend) for notifications
- Automatic profile creation on user signup
Code Quality
- Repository pattern for data access
- Service layer for business logic
- Auth middleware for protected routes
- Error handling and validation
- Environment configuration with .env
Completed - Phase 2: User Profiles, Equipment & Workouts ✅
Profile & Equipment (completed earlier)
- GET/PUT
/api/protected/profile- Full profile management - POST/GET/PUT/DELETE
/api/protected/equipment- Bike/gear CRUD - GET
/api/protected/zones- Calculate HR & power training zones - Equipment tracking (brand, model, weight)
- Equipment usage stats from workouts
Workouts (completed earlier)
- POST/GET/PUT/DELETE
/api/protected/workouts- Full workout CRUD - GET
/api/protected/workouts/month- Calendar month filtering - GET
/api/protected/workout-types- Predefined workout types - POST
/api/protected/workouts/upload- ZWO file import & parsing - Structured workout segments (JSONB) with power/cadence targets
Stats
- GET
/api/protected/stats/summary- Overall ride statistics - GET
/api/protected/stats/weekly- Weekly aggregated stats - GET
/api/protected/stats/monthly- Monthly aggregated stats - GET
/api/protected/stats/personal-bests- Personal records
Workout Templates
- GET
/api/protected/workout-templates- List predefined templates (with category filter) - GET
/api/protected/workout-templates/detail- Get template with full segment data - POST
/api/protected/workouts/from-template- Create workout from template - 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
- GET
/api/protected/workouts/export/fit- FIT workout file export (Garmin-compatible) - GET
/api/protected/workouts/export/zwo- ZWO file export (Zwift-compatible) - Segment-to-FIT mapping (warmup/steady/interval/cooldown/ramp/freeride)
- Power targets converted from %FTP to absolute watts for device display
github.com/muktihari/fitlibrary integration for FIT encoding
OAuth Infrastructure
- OAuthConnection model with AES-256-GCM token encryption
- OAuthState model for CSRF protection during OAuth flows
- Shared OAuth service (state management, PKCE, token exchange, auto-refresh)
- OAuth config loader from environment variables
Garmin Connect Integration
- GET
/api/protected/garmin/auth- OAuth2 PKCE flow initiation - GET
/api/garmin/callback- OAuth callback handler - POST
/api/protected/workouts/push/garmin- Push workout to Garmin Connect - GET
/api/protected/garmin/status- Connection status check - DELETE
/api/protected/garmin/disconnect- Revoke connection
Wahoo Cloud API Integration
- GET
/api/protected/wahoo/auth- OAuth2 flow initiation - GET
/api/wahoo/callback- OAuth callback handler - POST
/api/protected/workouts/push/wahoo- Push workout as Wahoo plan - GET
/api/protected/wahoo/status- Connection status check - DELETE
/api/protected/wahoo/disconnect- Revoke connection
Completed - Phase 2.6: Activity Import & Equipment Mileage ✅
Activity File Import (FIT/TCX/GPX)
- POST
/api/protected/workouts/import- Import activity files (multipart upload) - FIT activity parser using
muktihari/fitdecoder (session-level metrics) - TCX activity parser (lap aggregation, trackpoint elevation gain)
- GPX activity parser (Haversine distance, elevation gain, extension parsing)
- Extracts: duration, distance, avg/max power, avg/max HR, elevation gain, calories, cadence
- Can create new completed workout or update existing planned workout with actual data
- Supports optional equipment_id assignment on import
Equipment Mileage & Service Tracking
- Auto-increment equipment mileage when activities are imported with equipment assigned
- Total distance (km), total duration (seconds), total rides tracked per equipment
- Service interval configuration (distance-based and/or duration-based)
- Distance and duration since last service counters
- POST
/api/protected/equipment/service- Record service (resets counters) - GET
/api/protected/equipment/service-status- Check if equipment needs servicing - Service status in GET
/api/protected/equipmentresponse (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