No description
- Python 99.1%
- Nix 0.9%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Devices like the Enduro 3 write breathing rate to FIT record frames as enhanced_respiration_rate, not respiration_rate, so every parse returned NULL and the records table never got the per-second respiration stream. Fall back through both names, matching the existing enhanced_altitude/enhanced_speed pattern. Re-parsing local FIT files (--reparse-fit) backfills the column for all strap-recorded activities. Claude-Session: https://claude.ai/code/session_0156CSv44peU1uTF73r6qbbx |
||
| data | ||
| secrets | ||
| src/health | ||
| .gitignore | ||
| .python-version | ||
| DESIGN.md | ||
| devenv.lock | ||
| devenv.nix | ||
| devenv.yaml | ||
| plot_cycling_comparison.py | ||
| pyproject.toml | ||
| README.md | ||
| upload_vo2max_workout.py | ||
| uv.lock | ||
Health & Training Data
Personal health and training data pipeline built on Garmin data, stored in DuckDB.
Data Sources
Garmin Connect API
Daily health and wellness metrics:
- Heart rate, HRV, sleep, stress, steps
- Body battery, respiration, SpO2
- Weight and body composition
- Training readiness, training status, endurance score, max metrics
- Activity summaries
Garmin FIT Files
Per-second activity recordings from the device:
- GPS position, altitude, speed, distance
- Heart rate, power, cadence
- Temperature, respiration rate
- Lap splits, HR zone distributions
- Beat-to-beat HRV intervals
Setup
Requires devenv. From the project root:
devenv shell
This provides Python 3.13, uv, and all dependencies.
Usage
Authentication (required once):
python login.py
Collect data (first run with start date):
python collect.py --start 2026-01-01
Subsequent runs (fetches missing days automatically):
python collect.py
See DESIGN.md for schema, collection details, and design decisions.