Files
rideaware-api/TODO.md

11 KiB
Raw Blame History

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: Coachathlete 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/fit library 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/fit decoder (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/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