iamNurse App

App Architecture
Overview

A complete breakdown of the iamNurse mobile platform — structure, services, features, and tech stack.

FlutterFramework
iOS + AndroidPlatforms
v2.0.6Current Version
Firebase + RESTBackend
🦺

What iamNurse Is

Product purpose and core concept

iamNurse is a personal emergency health ID platform. Users build a medical summary — allergies, medications, chronic conditions, hospitalizations, emergency contacts — that nurses and ER providers can access instantly via QR code scan, NFC wristband tap, or a shared PDF link. No provider login required.

eLife Technologies pairs the app with a physical eLife wristband and e-card product. Scanning the wristband or card opens the wearer's live medical summary. This makes the hardware the primary emergency access point.

Emergency Medical ID NFC Wristband QR Health Record Subscription SaaS Physical Hardware
Patient / User
Builds profile, manages health summary, subscribes for premium, connects wristband
Provider / Nurse
Looks up patient summary by ID or QR scan — no account required
⚙️

Platform & Tech Stack

Framework, targets, and state management

Flutter
Dart SDK 2.19.4–3.0
Cross-platform UI framework. Single codebase targets iOS, Android, macOS, Web, Windows, and Linux.
Hooks Riverpod
v2.3.2
State management via notifier/state classes. Each feature has its own notifier and state files.
Hive
v2.2.3 + hive_flutter
Local encrypted key-value storage for session data, cached summaries, and offline access.
iOS (App Store) Android (Play Store) macOS Web Windows Linux
Branch note: The main branch is the empty default Flutter scaffold. All real code lives on prod. The dev branch is one commit behind prod.
🏗️

System Architecture

Data flow and service layers

Flutter AppFirebase AuthCloud FirestorePrimary auth + NoSQL data sync
Flutter AppREST API (HTTP)Custom BackendCore app data API — separate from Firebase
Flutter AppFirebase StorageProfile photos and uploaded health documents
Flutter AppCloud FunctionsServer-side logic — PDF generation, triggers, workflows
eLife WristbandNFC ManagerPatient SummaryPhysical hardware tap opens live health record
Apple WatchWatchOS CommunicatorwatchOSCommunicator.dart companion sync
☁️

Backend & Third-Party Services

Every external integration

Firebase Auth
firebase_auth ^5.3.2
Email/password, Google Sign-In, Apple Sign-In. Core identity layer.
Cloud Firestore
cloud_firestore ^5.4.5
Primary NoSQL database for users, submissions, health records, and access tokens.
Firebase Storage
firebase_storage ^12.3.5
Binary file storage for profile photos and scanned health documents.
Cloud Functions
cloud_functions ^5.1.4
Server-side logic — PDF generation, triggered workflows, backend processing.
FCM Push
firebase_messaging ^15.1.4
Firebase Cloud Messaging for push notifications on iOS and Android.
RevenueCat
purchases_flutter ^8.2.1
Cross-platform in-app subscription management. Handles iOS App Store and Google Play billing, entitlement gating, and receipt validation.
Google Sign-In
google_sign_in ^6.1.6
OAuth2 Google account authentication.
Sign in with Apple
sign_in_with_apple ^6.1.0
Apple ID auth (required for App Store apps that offer any social login).
NFC Manager
nfc_manager ^3.3.0
Read/write NFC tags on the physical eLife wristband and e-card products.
Local Auth
local_auth ^2.2.0
Face ID and Touch ID for app lock and passcode bypass.
Google Places SDK
flutter_google_places_sdk ^0.3.10
Address autocomplete for profile and emergency contact forms.
📄

Document & PDF Stack

Health record generation, scanning, and sharing

Syncfusion PDF
syncfusion_flutter_pdf ^25.2.6
Primary PDF builder for the medical summary. Renders the full health record with branding.
PDF + Printing
pdf ^3.10.4 / printing ^5.11.1
Secondary PDF rendering and system print/share dialog integration.
Document Scanner
flutter_document_scanner ^1.1.2
In-app camera document scanning. Captures physical health documents (insurance cards, prescriptions).
Image Cropper / Picker
image_picker ^1.0.4 / image_cropper ^8.0.2
Camera and gallery access for profile photos and document capture.
QR Flutter + Barcode
qr_flutter ^4.1.0 / simple_barcode_scanner ^0.2.3
Generate QR codes tied to patient summaries; scan via camera for provider lookup.
Share Plus
share_plus ^10.1.2
Native share sheet to send the medical summary PDF to family, providers, or messages.
📱

Feature Areas & Screen Map

All app modules and the full route list

Feature ModuleWhat It DoesUser Type
authenticationEmail/password, Google, Apple Sign-In, email verification, PIN passcode, forgot/reset password, biometric lockBoth
onboarding3-screen new user walkthrough before account creationPatient
firstTimeFlowPost-signup guided setup before dashboard accessPatient
dashboardHome screen (new vs returning user variants), personal info, settings, security/PIN managementPatient
subscription_and_evaluation_summary3-step health eval (allergies, meds, conditions, hospitalizations, providers); subscription paywall; wristband setupPatient
summaryFull medical summary PDF generation, download, share via native share sheetBoth
eLifeTagsConnect and manage physical eLife NFC wristbands and e-cards; view connected hardwarePatient
family_accessShare medical summary access with family members via contacts; view all shared summariesPatient
aiSymptomsAI-powered symptom checker screenPatient
healthDocumentsUpload, scan (camera), and manage health documents (insurance cards, prescriptions, test results)Patient
providerViewProvider entry screen, patient lookup by summary ID or scanned QR/barcode — no login requiredProvider
  1. Splash → Starting → Onboarding → Login As (Patient or Provider)
  2. Patient Auth: Login → Signup → Email Verification → Welcome
  3. Security: Verify Password → Create New Password → Reset Password → App Passcode
  4. First run: First Time Flow → Dashboard Home
  5. Health Evaluation: Summary Eval Step 1 → Step 2 → Step 3 → Submitted → In Review
  6. Update flow: Update Eval 1 → Update Eval 2 → Update Eval 3 → Updated Submission
  7. Features: Medical PDF, eLife Tags, Unique Wristband, Add Card, Subscription Confirmed
  8. Family: All Shared Summaries → Add Member Summary Access
  9. Settings: Settings, Security Settings, Personal Info
  10. Provider Path: Provider Entry → Search by ID → Search by Document ID → Provider Settings
🗃️

Data Models

Core data structures (Hive-generated .g.dart files where noted)

UserModel / user.dart
User profile and account data
submission.dart
Health evaluation submission
Allergy (+ .g.dart)
Allergy records with Hive codegen
ChronicDisease (+ .g.dart)
Chronic condition records
Hospitalization (+ .g.dart)
Past hospitalization history
Medication (+ .g.dart)
Current medications list
Provider (+ .g.dart)
Healthcare provider contacts
EmergencyContact
Emergency contact list
HealthDocumentModel
Uploaded document metadata
BarcodeModel / BarcodeGroupModel
NFC/QR tag data structures
SummaryShareModel
Shared summary access token
stateIDModel
US state ID reference

Key Observations & Gaps

Notable findings from the codebase review

Wrong default branch
main = empty scaffold. All production code is on prod. Anyone cloning defaults gets a blank counter app.
Dual backend (Firebase + REST)
App calls both Firestore and a separate HTTP REST API. Data ownership between the two is unclear.
Old Dart SDK constraint
SDK pinned at 2.19.4-3.0 (Flutter 2.x era). Blocks upgrading to Flutter 3.x and null safety improvements.
No test coverage
Only the default boilerplate widget_test.dart exists. No unit, integration, or feature tests.
RevenueCat is correct
Cross-platform subscription management is handled through RevenueCat, not raw App Store / Play billing.
Strong feature completeness
v2.0.6 on prod has auth, health eval, NFC hardware, PDF, family sharing, AI symptoms, and provider lookup.