Today
Entry 91 of 91 · streak 12 days
Mood 7d
Sleep 7d
Pain 7d
Adherence 30d
Duloxetine 60mg
Log
Mood
1 very low · 5 very good
Energy
1 depleted · 5 charged
Sleep last night
hours
Widespread pain
0 none · 10 worst
Fatigue
0 none · 10 worst
Factors
tap what applied today
Medication
taken today
Written to entries · synced to mobile
Trends
Last 90 days · 90 of 90 days logged
Mood, daily and 7-day average
Daily entry
7-day average
Sleep duration · bars below 6h marked
Pain calendar · darker is worse
What moves your days
Every factor tested against every outcome, at same-day and next-day lag. Ranked by effect size × evidence.
These are correlations inside one person's log, not clinical findings. The engine reports the sample it used so you and your clinician can judge it — it never claims a cause.
Ask your record
Plain questions, answered from your own 90 days, your clinical record and what your care team has told you — every number traced to the rows it came from.
Care team
Messages with the people treating you, and the record they work from. Everything here is context your assistant can read.
Clinical record
Maintained by your clinicians. The assistant reads it, never edits it.
Clinician summary
Generated for Dr. Neri · covering 27 May – 24 Aug 2026
Period at a glance
Narrative
Flags for review
One record, two clients
Web and mobile read and write the same Postgres rows. Row-level security scopes every query to the signed-in patient.
Connection
- Project ref
- euwrnfzkrcilnjbctqxj
- REST URL
- https://euwrnfzkrcilnjbctqxj.supabase.co
- Publishable key
- sb_publishable_MimjRJUvm8-WzccAUj6l3g_91RcDPBE
- Region
- eu-central-1
- Demo patient
- 11111111-1111-4111-8111-111111111111
Tables
Same call, both clients
// web (React) and mobile (Expo / React Native) share this module import { createClient } from '@supabase/supabase-js' export const db = createClient( 'https://euwrnfzkrcilnjbctqxj.supabase.co', 'sb_publishable_MimjRJUvm8-WzccAUj6l3g_91RcDPBE' ) // last 90 days with every tracked value, one round trip export async function loadTimeline(patientId) { const { data } = await db .from('entries') .select('entry_date, mood, energy, sleep_hours, sleep_quality, note, entry_values(value, taken, trackables(slug,label,kind))') .eq('patient_id', patientId) .order('entry_date', { ascending: false }) .limit(90) return data } // a mobile check-in the web dashboard sees on next fetch export async function logToday(patientId, mood, sleepHours) { return db.from('entries').upsert({ patient_id: patientId, entry_date: new Date().toISOString().slice(0,10), mood, sleep_hours: sleepHours, source: 'mobile' }, { onConflict: 'patient_id,entry_date' }) }
This deployment is live: signing in calls auth.signInWithPassword against the project above, and every chart on this page is rendered from rows pulled over the REST API at that moment. Saving an entry writes back. The publishable key is safe in the client — row-level security is what scopes the data.