Quantified Self & DIY Health Dashboards
GarminDB, Apple Health Auto Export, Grafana — building your own health-data lake.
For the homelab health-data hoarder: this is the canonical 2026 stack for pulling everything off the wearables / scales / CGMs / labs into a single SQL-or-time-series store you control, then dashboarding it. None of the consumer apps quite show what you can build yourself.
Sister sections: Apple Watch, Garmin, Wearable Aggregation, Diabetes & CGM Tools, Health Records & FHIR, Health Data Privacy, Home Assistant Add-ons, Prometheus Stack, Self-Hosted Personal Apps, Notes & Wiki.
The canonical 2026 pipeline
Per-source exporters
Apple Health / Apple Watch
- ★ ★ Apple Health Auto Export — paid iOS; scheduled Health → CSV / JSON to iCloud Drive / Dropbox / REST endpoint; the iOS export workhorse.
- ★ HealthFit — paid; Apple Health → FIT / TCX / GPX → Strava / TrainingPeaks / Garmin Connect.
- Apple Health → ZIP export (Settings → Profile → Export) — manual but free; XML + workout GPX.
- QS Access (free) — bulk CSV exports.
- Apple Shortcuts — automate "log my mood" / "if HRV < X message me" workflows.
Garmin
- ★ ★ GarminDB (FOSS Python) — pulls every activity / step / sleep / HR / weight / body-battery into a local SQLite mirror.
garminconnect-python— unofficial API client.- Garmin Connect → manual
.fitexport — per-activity.
Strava
- stravalib (Python) — official API client.
- Strava bulk export (Settings → My Account → Download Your Information) — manual.
- rStrava (R) — for the R-using QS crowd.
Oura / Whoop / Fitbit
oura-python,whoop-python,python-fitbit— OAuth API clients; require active sub for full data.- Health Connect (Android) → consolidated downstream exporter.
Withings / Renpho
python-withings-api— Withings → CSV.- Withings HA integration — pulls weight / BP / sleep into HA.
- See Smart Scales.
CGM (Dexcom / Libre)
- ★ xDrip+ + Nightscout — see Diabetes & CGM Tools.
- Nightscout REST API — all your BG / IOB / COB queryable.
- Tidepool API — pump + CGM unified.
Lab results
- Apple Health Records → Apple Health Auto Export → JSON.
- MyChart manual download → CSV → SQLite.
- See Health Records & FHIR.
Generic BLE sensors
- ★ Theengs Gateway + Theengs Decoder — see BLE & Bluetooth IoT; pull Govee / Xiaomi / Polar / Mi Flora data straight to MQTT.
Storage layer
- ★ ★ SQLite — single-file DB; perfect for personal scale; queryable with Datasette / DB Browser.
- ★ Postgres — for the long-term home lab; SQLAlchemy / Drizzle / Prisma.
- ★ InfluxDB / TimescaleDB — time-series; pairs with Grafana out of the box. See Time Series Databases.
- DuckDB — embedded analytical SQL; brilliant for "ad-hoc analyze 10 years of Garmin data."
- Parquet files in
~/health/— for the data-lake-curious.
Dashboards / front-ends
- ★ ★ Grafana — the QS dashboard default; Prometheus / InfluxDB / Postgres / SQLite (via plugin) sources. See Prometheus Stack.
- ★ Metabase — paid + free OSS edition; better for SQL-first users.
- ★ Datasette — FOSS by Simon Willison; turns SQLite into a queryable, sharable web app; uniquely good for QS.
- Streamlit / Dash — Python; for custom dashboards.
- Observable Notebooks / D3 — for the JS visualization crowd.
- Notion / Obsidian — for narrative + small charts; see Notes & Wiki.
- Apache Superset — OSS BI dashboard.
Home Assistant integration
- ★ Most QS data also makes sense in HA — HRV, sleep, weight, body battery, BG all support automations:
- "Light goes red on the bed light if HRV is low this morning."
- "Notify me if BG > 180 for > 30 min."
- "Sunrise alarm pushes earlier if Whoop strain was high yesterday."
- See Home Assistant Add-ons and HA LLM Integrations.
Notable QS communities / writers
- ★ Marco Altini (HRV4Training) — newsletter; HRV science.
- Bob Troia (Quantified Bob) — long-running QS blog.
- Quantified Self meetup — global community since 2008.
- Mark Wilson's Health Data Lakehouse — mid-2020s QS-pipeline writeup.
- Felix Krause's "I record my entire life" — extreme-end QS.
- r/QuantifiedSelf — Reddit.
Privacy + ergonomics
- ★ Behind Tailscale — see VPN Mesh — your dashboards are accessible from your phone but not the public internet.
- Encrypt the SQLite at rest if it lives on a NAS.
- Backup the DBs — these are the most painful to lose. See Backup & DR.
- Don't expose Datasette publicly — even "anonymized" health data is identifiable.
Patterns to adopt
- ★ Pull only what you'll dashboard. Pulling every HK metric is fun, looking at none of them is the norm. Start with 5 metrics.
- Quarterly review — most QS dashboards are useful for 3 months and ignored for 9. Keep what's still answering questions.
- Correlate across sources — sleep × HRV × workouts × mood × BG is where insight lives. Single-source dashboards are less useful.
- One graph per question — "When did my RHR start drifting up?" → one trend line. Not a 12-panel hellscape.
Anti-patterns
- The 50-metric dashboard — looks impressive, helps no one. Pick 5.
- Daily "review" you skip — if the dashboard isn't open weekly, prune it.
- Self-host as the goal — pulling the data is 20% of value; acting on it is 80%.
- Trusting any single number — sleep stage / body fat / HRV - day 1 — all noisy.
Cost / license honesty
- Apple Health Auto Export, HealthFit, RunGap — paid one-time or low monthly.
- GarminDB, stravalib, oura-python, whoop-python — FOSS.
- Grafana, Datasette, Metabase OSS, InfluxDB — FOSS / community editions.
- All on a Pi 5 / mini-PC — minimal hardware cost.
Pick this if…
- iPhone + Apple Watch: Apple Health Auto Export → SQLite → Datasette + Grafana.
- Garmin + Strava: GarminDB → SQLite → intervals.icu (web hosted) or local Grafana.
- Diabetes: xDrip+ → Nightscout → Grafana.
- Want to share with your doctor: export PDFs from Bearable / Migraine Buddy / Function Health.
- Just want to stop being trapped in vendor apps: start with the on-device aggregator; export quarterly; defer the lake until you actually have queries.
- Already self-hosting Home Assistant: integrate Garmin / Withings / Oura HACS integrations + InfluxDB long-term retention.