Skip to content
Meerav29Public

About

A personal health analytics dashboard powered by Apple Health data plus Vertex AI chat. It visualizes sleep, steps, heart rate, and HRV with life events annotated on charts to help users find and understand outlier datapoints in their personal health metrics.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

Somada

A personal health analytics dashboard powered by Apple Health data plus Vertex AI and Claude chat. It visualizes sleep, steps, heart rate, and HRV with life events annotated on charts.


Two ways to use it

Try it — hosted on Vercel

Want to explore without setting anything up? Use the hosted version at somada.app.

  • Sign up with email, upload your export.xml, and your data is parsed entirely in the browser before being saved to your account in Supabase.
  • AI chat (Gemini and Claude) is available out of the box — no API key needed.
  • You can also bring your own Vertex AI or Anthropic key in Settings if you prefer to route chat through your own account.

Data note: each account's health data is stored in its own row in a shared Supabase instance, protected by row-level security so only the signed-in owner can read or write it. If you want your data to never leave your own infrastructure, use the self-hosted path below.


Self-host — full privacy and control

The repo is open source. Fork or clone it and run everything yourself. Your data stays on your own Supabase project and your own Vercel deployment (or any other host).

1. Create the Supabase table

In your Supabase SQL editor, run the files in supabase/migrations/ in order (0001_initial_health_data.sql, then 0002_per_user_health_data.sql). Each user gets their own row protected by row-level security. Optionally run supabase/seed_demo.sql to add the synthetic demo dataset that new accounts browse before uploading their own data.

2. Deploy to Vercel

Fork the repo and import it into Vercel. Set these environment variables in your Vercel project:

Variable Purpose
SUPABASE_URL Supabase project URL
SUPABASE_ANON_KEY Supabase anon public key
VERTEX_API_KEY Server-side Vertex AI key for shared "Somada AI" mode (optional)
VERTEX_MODEL Optional. Defaults to gemini-2.5-flash
ANTHROPIC_API_KEY Server-side Claude key for shared Claude mode (optional)
CLAUDE_MODEL Optional. Defaults to claude-sonnet-4-6

Both AI keys are optional — if you skip them, users can still chat by saving their own key in Settings (BYOK).

3. Create your account

Open your deployed app and sign up with Supabase auth.

4. Upload Apple Health data

On your iPhone:

Health app → profile picture → Export All Health Data

Unzip the export and upload export.xml in the app. Parsing runs in the browser and then saves to your Supabase.

5. Update life events

Edit the LIFE_EVENTS array in index.html (and parse_health.py if using local dev), then re-upload export.xml.


Local development

Run the app entirely on your machine — no Supabase or Vercel account needed.

1. Set env vars

Windows Command Prompt:

set VERTEX_API_KEY=your_key_here
set ANTHROPIC_API_KEY=your_key_here

Windows PowerShell:

$env:VERTEX_API_KEY="your_key_here"
$env:ANTHROPIC_API_KEY="your_key_here"

Or create a .env file:

VERTEX_API_KEY=your_key_here
ANTHROPIC_API_KEY=your_key_here

2. Parse your health data

python parse_health.py export.xml

This creates health_data.json.

3. Start the dashboard

python server.py

Open http://localhost:8080.


New app (work in progress)

A rebuilt frontend lives in web/ (Vite + React + TypeScript) and is served at /app/ next to the classic page, which stays at / until the new app reaches parity. Today it has sign-in (email/password and Google), an app shell, and a dashboard placeholder; charts, upload and chat are still in the classic app.

Develop it with two terminals:

vercel dev                 # serves the Python API on :3000 (needs SUPABASE_* env vars)
npm --prefix web install
npm --prefix web run dev   # http://localhost:5173/app/ (proxies /api to :3000)

Checks: npm --prefix web run lint, typecheck, test, build. The Vercel build assembles both apps with scripts/build-site.mjs.

For Google sign-in on the new app, add https://<your-domain>/app/ (and any preview URLs) to the Redirect URLs in Supabase Authentication settings.

Open it with the trailing slash (/app/).

If the classic page is missing at http://localhost:3000/ under vercel dev, build it first with npm --prefix web run build && node scripts/build-site.mjs.


Features

  • Dashboard views for steps, sleep, resting HR, and HRV
  • Browser-side Apple Health XML parsing — data never touches a server during upload
  • AI chat over your health data using Vertex AI (Gemini) or Claude
  • Bring your own API key (Vertex or Anthropic) via Settings
  • Life-event annotations across charts and AI context

About

A personal health analytics dashboard powered by Apple Health data plus Vertex AI chat. It visualizes sleep, steps, heart rate, and HRV with life events annotated on charts to help users find and understand outlier datapoints in their personal health metrics.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages