iDoc
A personal sexual-health record app — STI test tracking, birth-control history, and a one-tap summary of what others will see
A Flutter personal health-record app: a user logs STI/STD lab test results, birth-control methods and disease-prevention/surgery history, all summarized on a dedicated 'Preview' screen framed as "what others will see" — the app's central value proposition, not a generic patient dashboard. Firebase-backed, with email and SMS phone verification and Firestore-synced records.



Source is private. The three-record health data model and the two-step phone and email verification gate are explained below.
About this project
The app is organized around three record types, each with its own add/edit/delete flow synced to Cloud Firestore: lab test results (nine real STI/STD tests — HIV antibody, HIV combined antigen/antibody, HIV NAT, Hepatitis C antibody, Syphilis screen, Chlamydia, Gonorrhea, RPR titer, and a SARS-CoV-2/COVID-19 test — each with its own graded result options, e.g. Reactive/Non-Reactive or Negative/Intermediate/Positive), birth-control methods (separate male and female method lists — vasectomy on one side; tubal ligation, IUD, hormonal ring, implant, injections, oral, patch on the other), and a disease-prevention/surgery history log. A dedicated Preview screen then compiles all three into a single read-only report of what others will see.
Account creation is a two-step verification gate: Firebase email/password sign-up is followed by a live SMS phone-verification flow (country-code picker, OTP entry screen, a resend timer) and the app blocks entry until the email address is verified too. Profile photos are wired end-to-end too — camera/gallery picker uploads to Firebase Storage and the resulting URL is written back onto the user's Firestore document, not just held as a local file path. The whole app also blocks screenshots at launch (screenshot/screen-recording blocked app-wide), a deliberate choice appropriate for an app whose entire purpose is a personal health record.
My part was UI work to the design spec and part of the lab-result flow.
Key features
- Three synced personal health records: STI/STD lab test results (9 real test types with graded result options), birth-control methods (separate male/female lists), and a disease-prevention/surgery history log — each with its own Firestore-backed add/edit/delete flow
- A dedicated "Preview" screen — what others will see — that compiles all three records into a single shareable report; the app's central feature, not a generic dashboard
- Two-step account verification: Firebase email/password sign-up gated by a live SMS phone-verification flow (country-code picker, OTP entry, resend timer) and an email-verification check before the main app is reachable
- Profile photo upload wired end-to-end — camera/gallery picker to Firebase Storage, URL written back to the user's Firestore document
- App-wide screenshot/screen-recording protection applied at launch, appropriate for an app whose whole purpose is sensitive personal health data
- Localized into English, German and Spanish via GetX translations
More in Healthcare



MediTech
Field-sales order app for medicine distribution
A Flutter field-sales app for medicine distribution: sales reps browse a medicine catalog, take store-by-store orders with quantity, discount and bonus fields, and sync a local SQLite ledger to Firebase for backup and recovery.



Doktoraku
A personal health-tracking app — multi-metric dashboards, body-system browsing, and doctor-appointment booking
A Flutter personal health-tracking app: blood glucose, blood pressure, weight, food, exercise, mood and sleep each get their own fl_chart/echarts-based analytics screen across a 10-tab dashboard, alongside a 'Health Avatar' screen for browsing records by anatomical body system and a clinic/doctor appointment-booking flow with government/private clinic selection. Built as a UI-first prototype.
~/sherazi.dev$./say-hello
Say hello.
Questions about a case study, one of the packages, AI tooling or Flutter in general are always welcome.
// or browse the packages on pub.dev(opens in a new tab)