How jorge-huxley/intervalssync works
Intervals Sync moves rides from iGPSPORT or Bryton to intervals.icu, and can send planned workouts and iGPSPORT profile zones in the reverse direction. Users initiate these workflows through either the Flet GUI or headless CLI; configuration and credentials are collected before the sync logic coordinates vendor and intervals.icu APIs. The README documents optional Dropbox mirroring and zone sync. The sampled excerpts do not expose all GUI/CLI dispatch and orchestration code, so uncertain internal wiring is omitted.
Main entry points: main.py Headless CLI · intervals_icu.py Intervals API helpers · app.py Flet application · core.py iGPSPORT activity sync
Components 23
User interfaces
- Headless CLI
src/intervalssync/cli/main.py - Flet application
src/intervalssync/gui/app.py - Settings view
src/intervalssync/gui/settings_view.py - Sync view
src/intervalssync/gui/sync_view.py - Profile sync UI
src/intervalssync/gui/profile_sync_ui.py
Sync workflows
- iGPSPORT activity sync
src/intervalssync/igpsport/core.py - Bryton activity sync
src/intervalssync/bryton/core.py - iGPSPORT workout upload
src/intervalssync/igpsport/workout.py - Bryton workout upload
src/intervalssync/bryton/workout.py - iGPSPORT profile sync
src/intervalssync/igpsport/profile_sync.py
Service integrations
- Intervals API helpers
src/intervalssync/intervals_icu.py - iGPSPORT API
- Bryton API
src/intervalssync/bryton/api.py - Dropbox client
src/intervalssync/dropbox_client.py
Configuration and storage
- CLI configuration
src/intervalssync/cli/config.py - GUI configuration
src/intervalssync/gui/config.py - Secure credentials
src/intervalssync/gui/secrets.py - Upload checkpoints
src/intervalssync/cli/main.py
Other components
- User
- intervals.icu
- iGPSPORT
- Bryton Active
- Dropbox
Connections 35
- User → Flet application: opens app
- User → Headless CLI: runs commands
- Flet application → Settings view: shows settings
- Flet application → Sync view: shows sync
- Flet application → Profile sync UI: prompts sync
- Settings view → GUI configuration: saves preferences
- Settings view → Secure credentials: stores credentials
- Flet application → Secure credentials: checks credentials
- Headless CLI → CLI configuration: loads config
- Headless CLI → iGPSPORT activity sync: runs sync
- Headless CLI → Bryton activity sync: runs sync
- Headless CLI → iGPSPORT workout upload: uploads workouts
- Headless CLI → Bryton workout upload: uploads workouts
- Headless CLI → iGPSPORT profile sync: syncs zones
- Sync view → iGPSPORT activity sync: starts sync
- Sync view → Bryton activity sync: starts sync
- Profile sync UI → iGPSPORT profile sync: starts sync
- iGPSPORT activity sync → iGPSPORT API: fetches rides
- iGPSPORT activity sync → Intervals API helpers: uploads activities
- Bryton activity sync → Bryton API: fetches rides
- Bryton activity sync → Intervals API helpers: uploads activities
- iGPSPORT workout upload → Intervals API helpers: fetches workouts
- Bryton workout upload → Intervals API helpers: fetches workouts
- iGPSPORT workout upload → iGPSPORT API: creates workouts
- Bryton workout upload → Bryton API: uploads FIT
- iGPSPORT profile sync → Intervals API helpers: reads zones
- iGPSPORT profile sync → iGPSPORT API: updates profile
- iGPSPORT API → iGPSPORT: requests API
- Bryton API → Bryton Active: requests API
- Intervals API helpers → intervals.icu: requests API
- Headless CLI → Upload checkpoints: persists checkpoints
- iGPSPORT activity sync → Dropbox client: optional FIT mirror
- Bryton activity sync → Dropbox client: optional FIT mirror
- Settings view → Dropbox client: connects Dropbox
- Dropbox client → Dropbox: uploads and lists