-
-
Mira’s crescent-and-star app icon, provided uncropped at 1024 × 1024.
-
Extra-dark active-attack mode keeps the screen quiet while the attack is recorded. Fictional demo data.
-
Treatment response records show reported relief and time to relief. Fictional demo data.
-
Inspect the counts and coverage behind an association. Patterns do not establish causes. Fictional demo data.
-
Daily context keeps stress, hydration, meals, and other factors optional. Fictional demo data.
-
Calendar history makes attack days and severity easy to review. Fictional demo data.
-
Start a migraine attack in one tap; add details when ready. Fictional demo data.
-
Generate a chronological 30- or 90-day PDF for appointments. Fictional demo data.
-
Rolling pattern insights compare known attack and ordinary days. Fictional demo data.
-
App Store presentation: doctor-ready appointment reports. Actual app screen; fictional demo data.
-
App Store presentation: one-tap attack start with details added later. Actual app screen; fictional demo data.
-
App Store presentation: extra-dark active-attack mode. Actual app screen; fictional demo data.
-
App Store presentation: optional daily context. Actual app screen; fictional demo data.
-
App Store presentation: inspect the evidence behind an association. Actual app screen; fictional demo data.
-
Unframed 1179 × 2556 app capture: Home and the one-tap attack-start control. Fictional demo data.
Inspiration
Migraine tracking should work at the moment someone needs it: when they may be in pain, light-sensitive, nauseated, or struggling to concentrate. Mira starts with a simple principle: record the attack now, and let the details wait.
What it does
Mira is available on the iOS App Store. It is a migraine journal with one-tap attack start. Users can add severity, aura, symptoms, daily context, and treatment response later, then review their history in a timeline and calendar. Optional, read-only Apple Health integration adds daily sleep, activity, and heart-related summaries.
Premium turns accumulated records into rolling pattern insights and chronological doctor-ready PDF reports. Missing answers remain unknown. Patterns describe associations, and each finding is grounded in computed evidence; Mira does not diagnose, assign causes, or recommend treatment.
How it was built
The mobile app uses Expo, React Native, TypeScript, and Expo Router, with SQLite for local records. Supabase provides authentication, PostgreSQL storage, row-level security, synchronization, and server functions. Pattern analysis computes statistics first; language models narrate aggregate findings rather than discovering patterns from raw journal entries.
RevenueCat powers the freemium subscription experience through purchases, restores, and the Premium entitlement. CustomerInfo updates reconcile access in the app, while a webhook mirrors entitlement state to the backend. Core logging, editing, daily context, and history remain free.
Challenges
The central interaction challenge was keeping attack start effortless while still collecting useful records over time. Mira separates immediate onset logging from later detail entry. Another challenge was representing incomplete health information honestly: skipped questions cannot silently become zero or "none," and insights need to explain their data coverage.
Subscription reliability also matters. The purchase flow reconciles fresh entitlement state after StoreKit completes, supports restores, and makes the Premium features discoverable from Insights and Settings.
Accomplishments and lessons
Mira brings attack records, treatment response, daily context, pattern evidence, and appointment reports into one coherent flow. Its strongest design decision is making the first useful action one tap. The implementation reflects two lessons: collecting less at the moment of pain can make a journal more usable, and trustworthy insight starts with careful data handling before any AI narration.
What’s next
Build on the iOS release by improving the experience using real user feedback, continuing device testing, and refining how Mira explains evidence and missing data over time.
Log in or sign up for Devpost to join the conversation.