← Joan Alavedra

Local Health Dashboard

A self-hosted health stack for Fitbit / Pixel Watch devices: a Python fetcher pulls your data from the Google Health API into a local InfluxDB, and Grafana renders it with a scoring layer the stock apps don’t give you. Everything runs on your machine — the only network calls are read-only pulls from your own Google account.

The scoring layer is ported from published, peer-reviewed models (independent implementations from the open-source NOOP project): a 0–100 Recovery score against your personal HRV/resting-HR baselines, Edwards-TRIMP Strain, an illness early-warning that fires when resting HR, HRV, respiration, and skin temperature move together against your own normal range, a rolling sleep-debt ledger, personal vital-range bands instead of population cutoffs, a Nes-2011 fitness age, and an evening forecast of tomorrow morning’s recovery with an honest ± band. A rule-based “today’s read” sentence regenerates hourly from the numbers.

Setup is deliberately boring: docker compose up -d, open the setup page, click Connect Google Health — the OAuth consent runs in your browser, a 28-day backfill queues itself, and the dashboard provisions automatically. Baselines are honest about cold-starts: scores stay silent until enough nights of your own data exist to compare against.