A personal health analytics dashboard that automatically syncs and visualizes iPhone Health data exported via the Health Auto Export app.
- Automated Data Sync: Downloads new health data files from Google Drive
- Rich Visualizations: Interactive charts showing trends and patterns
- Key Metrics Tracking: Steps, sleep, heart rate, energy, and more
- Responsive Design: Works on desktop and mobile devices
- Dark Theme: Easy on the eyes for daily monitoring
- Daily steps count
- Sleep duration (last night)
- Resting heart rate
- Active energy burned
- Steps Trend: 30-day line chart showing daily step counts
- Sleep Breakdown: 14-day stacked bar chart (deep, REM, core, awake)
- Heart Metrics: Dual-axis chart for resting HR and HRV
- Blood Oxygen: SpO2 trend over time
- Data Collection: iPhone Health Auto Export app automatically exports daily health data to Google Drive
- Data Sync: The
scripts/sync.shscript downloads new files and processes them - Data Processing:
scripts/process.jsaggregates raw JSON files into dashboard format - Visualization: Static HTML dashboard loads the processed data and renders interactive charts
- Node.js (for data processing)
- Google Drive API access via
gogCLI - Health Auto Export app configured on iPhone
- Clone this repository
- Set up environment variables:
export GOG_KEYRING_PASSWORD="$GOG_KEYRING_PASSWORD" # set in your shell profile export GOG_ACCOUNT="your-google-account@gmail.com"
- Run initial sync:
./scripts/sync.sh
- Open
index.htmlin a web browser
Set up a cron job to run the sync script regularly:
# Run every hour
0 * * * * cd /path/to/health-dashboard && ./scripts/sync.sh >> logs/sync.log 2>&1Health data is stored in data/dashboard.json with the following structure:
{
"lastUpdated": "2026-02-02T06:42:26.018Z",
"data": [
{
"date": "2026-02-01",
"steps": 1514,
"distance": 0,
"activeEnergy": 349,
"exerciseMinutes": 2,
"restingHR": 71,
"avgHRV": 25,
"avgSpO2": 94,
"sleepTotal": 5.69,
"sleepDeep": 0.53,
"sleepREM": 1.18,
"sleepCore": 3.99,
"sleepAwake": 1.22,
"sleepStart": "2026-01-31 22:56:10 +0200",
"sleepEnd": "2026-02-01 05:50:58 +0200",
"respiratoryRate": 20.6,
"walkingSpeed": 2.86
}
]
}- Push to GitHub repository
- Enable GitHub Pages in repository settings
- The GitHub Actions workflow will automatically deploy updates
The dashboard is a static site that can be deployed anywhere:
- Copy
index.htmlanddata/folder to your web server - Ensure the
data/dashboard.jsonfile is accessible - No build process required
health-dashboard/
├── data/
│ ├── raw/ # Raw health JSON files from Google Drive
│ └── dashboard.json # Processed data for dashboard
├── scripts/
│ ├── sync.sh # Data sync script
│ └── process.js # Data processing script
├── .github/workflows/
│ └── pages.yml # GitHub Pages deployment
├── index.html # Main dashboard
├── README.md
└── .gitignore
This is a personal health dashboard, but feel free to fork and adapt for your own use case. The architecture is designed to be modular and extensible.
MIT License - feel free to use and modify as needed.