No description
  • Python 99.1%
  • Nix 0.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-05-19 12:58:39 -05:00
data Add development environment config 2026-04-15 13:34:21 -05:00
secrets Add development environment config 2026-04-15 13:34:21 -05:00
src/health Add CGM collection from Nightscout 2026-04-24 20:59:23 -05:00
.gitignore Add cycling plot and workout upload scripts 2026-04-28 16:10:24 -05:00
.python-version Add development environment config 2026-04-15 13:34:21 -05:00
DESIGN.md Add CGM collection from Nightscout 2026-04-24 20:59:23 -05:00
devenv.lock Update devenv 2026-05-19 12:58:39 -05:00
devenv.nix Add duckdb CLI to dev environment 2026-04-15 15:07:19 -05:00
devenv.yaml Add development environment config 2026-04-15 13:34:21 -05:00
plot_cycling_comparison.py Add cycling plot and workout upload scripts 2026-04-28 16:10:24 -05:00
pyproject.toml Add cycling plot and workout upload scripts 2026-04-28 16:10:24 -05:00
README.md Split docs into README and DESIGN 2026-04-15 13:19:38 -05:00
upload_vo2max_workout.py Add cycling plot and workout upload scripts 2026-04-28 16:10:24 -05:00
uv.lock Add cycling plot and workout upload scripts 2026-04-28 16:10:24 -05:00

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.