A health data pipeline, running live in production.
Apple Watch biometrics flow through idempotent ingestion, a raw → clean → derived lakehouse pattern, and non-destructive validation — then surface as recovery & momentum scores. No mock data. This page reads a live Postgres view.
· Live Postgres view· Zero UI metric logic· Open source
LIVEv_health_derived
—
recovery
awaiting sync
readiness score, derived in SQL
—
Momentum
—
Steps · 7d avg
—
Sleep · 7d avg
last sync —
Architecture
How a heartbeat becomes a metric
Watch
HealthKit
→
Export
Auto Export
→
Ingest
Edge Function
→
Validate
range flags
→
Derive
window fns
→
Dashboard
read-only
RAW immutable source · CLEAN range-validated · DERIVED computed in Postgres
16
Health Metrics
3
Data Layers
19
Validation Checks
24/7
Apple Watch Sync
100%
Server-Side Logic
What makes it production-grade
Engineering decisions, not a toy tracker
Idempotent Ingestion
Date is the primary key. POST the same day a hundred times — you still get one clean record. Safe for retries, backfills and re-exports.
upsertdate keyno duplicates
Raw / Clean / Derived
Three layers as Postgres tables & views. Raw is untouched, clean is range-validated, derived is computed-only. The UI reads derived and nothing else.
separationimmutable rawread-only UI
Non-Destructive Validation
19 field-level range checks across every biometric. Out-of-range values are flagged in quality_flags[] — never rejected. Data is always preserved.
quality flagsnever rejectclinical ranges
Pipeline Observability
Every stage monitored: SLA freshness per source, an event audit trail, anomaly detection across 6 signals, and live status indicators.
SLA trackingevent loganomalies
Explainable Metrics
A weighted 5-metric momentum score and a rule-based recovery readiness — both with full contribution breakdowns. No black-box.
weighted scoringlineageexplainable
Live Schema Inspector
Toggle between raw, clean and derived layers live. Inspect every field, type, value and quality flag — lineage traces each metric step by step.
Signing in unlocks routine tracking, mood & energy logging, the completion heatmap and the full data inspector. Visitors can explore the Dashboard, Pipeline & About freely.
Dashboard · Pipeline · Aboutpublic
Today · Records · Data · Notesowner
Routine, mood & energy writesowner
Sign In
Owner access — Pawan Yandapalli
✗ Incorrect username or password
Visitors can browse Pipeline, Dashboard & About without signing in.
Connect GitHub Storage
Your data saves privately to your GitHub repo. You only need to do this once.
Once deployed, paste your Heroku URL here to enable live Apple Watch sync.
📱 Install Health OS — add to your home screen for instant access
TODAY
Maintenance▾
Grace
🎯
Today's Focus
Loading...
💡
Health Intelligence
Analyzing your health data...
Recovery
—
Momentum
—
Streak
0
→ days
7-Day Avg
0%
→ vs prior week
Today
0%
0 / 0 tasks
Mood Today
Energy Today
⌚ Apple Watch
No Apple Watch reading for this day yet
Readings sync automatically from Apple Watch → Health Auto Export → Supabase. Seed demo data or finish sync setup from the control panel.
Steps
—
goal: 10k
Distance
—
km walked
Flights
—
climbed
Stand Hours
—
goal: 12h
Workout
—
goal: 30min
Calories
—
active energy
Weight
—
Apple Health
Body Fat
—
% body fat
Heart Rate
—
resting avg
HRV
—
ms variability
Blood O₂
—
SpO2
Resp Rate
—
breaths/min
Blood Pressure
—
mmHg
Sleep
—
goal: 7–9h
Mindful
—
minutes
VO₂ Max
—
fitness level
ready
Live · reading v_health_derived
Health Overview
Rolling 7-day averages Apple Watch · public view
🔒 Sign in to unlock personal routine, mood tracking, the completion heatmap & full analytics
Recovery Score · Last 7 Days
HRV Trend · 7 Days
Sleep · 7 Days
Health Intelligence
Last 30 days
30-Day Momentum
30 days ago
Today
Category Breakdown
Mood & Energy (7 days)
MOOD
ENERGY
Most Missed → Fix
Trend Signals
Weight Trend (from Apple Health)
No weight data yet — connect Apple Watch to auto-sync.
Completion Heatmap
LessMore
Personal Records
Correlation Engine
Patterns discovered from your data. Updates as you log more days.
Data Pipeline
Live view of the health data flow — Apple Watch → Backend → Dashboard
SLA / Freshness Monitor
Each data source has a freshness SLA. Green = within SLA, yellow = degraded, red = breached.
Anomaly Detection
Statistical flags on unusual readings vs your 14-day baseline.
Event Log last 20 events
Data Inspector
Raw → Clean → Derived pipeline transparency
Schema Inspector
Raw data — exactly as received from Health Auto Export, no mutation
Data Lineage
Select a metric to trace how it was computed, step by step.
API Reference read-only
Health OS
A personal health data system built as a data engineering portfolio project. Every design decision prioritises data correctness, observability, and pipeline transparency.
Architecture
Data Engineering Principles Applied
Tech Stack
Health Consistency Heatmap
GitHub-style contribution graph — each cell = one day of health data.
LessMore
Daily Notes
Log how you feel. Patterns show up over time.
today's note
Past Notes
● Owner · Pipeline control
Pipeline Setup
Live status of every stage, copy-paste assets, and one-click demo data — no docs required.
Live status
Database schemachecking…
Data in pipelinechecking…
Last syncchecking…
Ingest functionchecking…
Demo data
Writes 30 days of realistic biometrics straight to health_daily (you're signed in, so it's allowed). The dashboard, hero and scores fill instantly. Clearing removes only rows tagged seed.
1 Schema · one-time
Supabase → SQL Editor → New query → paste → Run. Creates the tables, the clean/derived views and row-level security. Already done? The status above is green.
2 Ingest function · one-time
Supabase → Edge Functions → Deploy a function → name it ingest → paste → Deploy. Then add a secret INGEST_KEY (any long random string). No CLI needed.
3 Connect your phone
Function URL — paste into Health Auto Export
Request header — name : value
In Health Auto Export → Automations → Add → REST API: set the URL above, add the header with your INGEST_KEY value, Format JSON, Aggregate Daily, Schedule hourly. Tap Run Automation once, then hit Re-check here.