# ravivarmakompally9/goldenhour-android architecture

> Architecture diagram of the GitHub repository ravivarmakompally9/goldenhour-android, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ravivarmakompally9/goldenhour-android
- Repository: https://github.com/ravivarmakompally9/goldenhour-android

## Overview

GoldenHour is an Android stroke-screening aid for families: a helper runs measured phone-based checks, then fixed medical rules decide whether to show an alert. The app supports an urgent-help path, family alerts with location, a doctor card, and optional extended checks after a clear result. Its on-device language model adds guarded explanation and language-reading features; it does not make the screening decision. The README documents the main workflow and capabilities; sampled source confirms selected implementation details, while some wiring is represented only at the documented subsystem level.

Main entry points: [`app/src/main/java/com/goldenhour/app/ui/screens/check/CheckFlowViewModel.kt`](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/ui/screens/check/CheckFlowViewModel.kt) (Check flow), [`app/src/main/java/com/goldenhour/app/ui/screens/alert/HighAlertScreen.kt`](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/ui/screens/alert/HighAlertScreen.kt) (Alert and result), [`app/src/main/java/com/goldenhour/app/ui/navigation/GoldenHourRoot.kt`](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/ui/navigation/GoldenHourRoot.kt) (App navigation), [`app/src/main/java/com/goldenhour/app/alerts/FamilyAlerter.kt`](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/alerts/FamilyAlerter.kt) (Family alerts)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["App entry"]
  node_activity["Main activity<br/>[MainActivity.kt]"]
  node_tile["Quick-settings tile"]
  node_root["App navigation<br/>[GoldenHourRoot.kt]"]
end

subgraph group_screening["Screening"]
  node_checkflow["Check flow"]
  node_face["Smile check<br/>[FaceCheck.kt]"]
  node_landmarker["Face analysis"]
  node_speech["Speech check<br/>[SpeechCheck.kt]"]
  node_arm["Arm check<br/>[ArmCheck.kt]"]
  node_extended["Eyes and balance<br/>[CheckModule.kt]"]
  node_rules["Fixed decision rules<br/>[Decide.kt]"]
end

subgraph group_response["Help and follow-up"]
  node_alertscreen["Alert and result<br/>[HighAlertScreen.kt]"]
  node_caller["Emergency caller<br/>[EmergencyCaller.kt]"]
  node_family["Family alerts<br/>[FamilyAlerter.kt]"]
  node_location["Location lookup<br/>[LocationFinder.kt]"]
  node_doctor["Doctor card and QR<br/>[QrRenderer.kt]"]
  node_voicecaller["Voice-agent caller"]
end

subgraph group_support["App support"]
  node_sessions["Check history<br/>[Session.kt]"]
  node_store[("Local data store<br/>[JsonStore.kt]")]
  node_hospital["Nearby hospitals"]
  node_ai["On-device language AI<br/>[Explainer.kt]"]
  node_model["On-device model<br/>[OnDeviceModel.kt]"]
end

subgraph group_agent["Family-call service"]
  node_receiver["Call receiver<br/>[server.py]"]
  node_agent["Family-call agent<br/>[agent.py]"]
end

node_helper(("Family helper"))
node_sms(("Family phones"))
node_sip(("Linphone / SIP"))

node_helper -->|"opens app"| node_activity
node_helper -->|"starts checks"| node_tile
node_tile -->|"launches check"| node_activity
node_activity -->|"sets content"| node_root
node_root -->|"routes check"| node_checkflow
node_checkflow -->|"runs check"| node_face
node_checkflow -->|"runs check"| node_speech
node_checkflow -->|"runs check"| node_arm
node_face -->|"analyzes frames"| node_landmarker
node_checkflow -->|"offers extended tests"| node_extended
node_checkflow -->|"evaluates results"| node_rules
node_checkflow -->|"records session"| node_sessions
node_sessions -->|"persists data"| node_store
node_checkflow -->|"shows outcome"| node_alertscreen
node_alertscreen -->|"requests call"| node_caller
node_caller -->|"opens dialer"| node_helper
node_alertscreen -->|"starts alert"| node_family
node_family -->|"gets location"| node_location
node_family -->|"sends SMS"| node_sms
node_alertscreen -->|"opens doctor card"| node_doctor
node_root -->|"supports hospital lookup"| node_hospital
node_checkflow -.->|"requests guarded reading"| node_ai
node_ai -.->|"generates text"| node_model
node_alertscreen -.->|"optionally requests calls"| node_voicecaller
node_voicecaller -.->|"posts alert"| node_receiver
node_receiver -.->|"dispatches call"| node_agent
node_agent -.->|"places call"| node_sip

click node_activity "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/MainActivity.kt"
click node_tile "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/entry/StrokeCheckTileService.kt"
click node_root "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/ui/navigation/GoldenHourRoot.kt"
click node_checkflow "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/ui/screens/check/CheckFlowViewModel.kt"
click node_face "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/checks/face/FaceCheck.kt"
click node_landmarker "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/checks/face/FaceLandmarkerEngine.kt"
click node_speech "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/checks/speech/SpeechCheck.kt"
click node_arm "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/checks/arm/ArmCheck.kt"
click node_extended "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/checks/CheckModule.kt"
click node_rules "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/domain/Decide.kt"
click node_sessions "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/domain/Session.kt"
click node_store "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/data/JsonStore.kt"
click node_alertscreen "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/ui/screens/alert/HighAlertScreen.kt"
click node_caller "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/alerts/EmergencyCaller.kt"
click node_family "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/alerts/FamilyAlerter.kt"
click node_location "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/alerts/LocationFinder.kt"
click node_doctor "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/card/QrRenderer.kt"
click node_hospital "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/data/HospitalsRepository.kt"
click node_ai "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/llm/Explainer.kt"
click node_model "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/llm/OnDeviceModel.kt"
click node_voicecaller "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/alerts/VoiceAgentCaller.kt"
click node_receiver "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/voice-agent/src/server.py"
click node_agent "https://github.com/ravivarmakompally9/goldenhour-android/blob/main/voice-agent/src/agent.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_activity,node_tile,node_root toneBlue
class node_checkflow,node_face,node_landmarker,node_speech,node_arm,node_extended,node_rules toneAmber
class node_alertscreen,node_caller,node_family,node_location,node_doctor,node_voicecaller toneMint
class node_sessions,node_store,node_hospital,node_ai,node_model toneRose
class node_receiver,node_agent,node_helper,node_sms,node_sip toneIndigo
```

## Components

### App entry

- [Main activity](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/MainActivity.kt): `app/src/main/java/com/goldenhour/app/MainActivity.kt`
- [Quick-settings tile](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/entry/StrokeCheckTileService.kt): `app/src/main/java/com/goldenhour/app/entry/StrokeCheckTileService.kt`
- [App navigation](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/ui/navigation/GoldenHourRoot.kt): `app/src/main/java/com/goldenhour/app/ui/navigation/GoldenHourRoot.kt`

### Screening

- [Check flow](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/ui/screens/check/CheckFlowViewModel.kt): `app/src/main/java/com/goldenhour/app/ui/screens/check/CheckFlowViewModel.kt`
- [Smile check](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/checks/face/FaceCheck.kt): `app/src/main/java/com/goldenhour/app/checks/face/FaceCheck.kt`
- [Face analysis](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/checks/face/FaceLandmarkerEngine.kt): `app/src/main/java/com/goldenhour/app/checks/face/FaceLandmarkerEngine.kt`
- [Speech check](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/checks/speech/SpeechCheck.kt): `app/src/main/java/com/goldenhour/app/checks/speech/SpeechCheck.kt`
- [Arm check](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/checks/arm/ArmCheck.kt): `app/src/main/java/com/goldenhour/app/checks/arm/ArmCheck.kt`
- [Eyes and balance](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/checks/CheckModule.kt): `app/src/main/java/com/goldenhour/app/checks/CheckModule.kt`
- [Fixed decision rules](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/domain/Decide.kt): `app/src/main/java/com/goldenhour/app/domain/Decide.kt`

### Help and follow-up

- [Alert and result](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/ui/screens/alert/HighAlertScreen.kt): `app/src/main/java/com/goldenhour/app/ui/screens/alert/HighAlertScreen.kt`
- [Emergency caller](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/alerts/EmergencyCaller.kt): `app/src/main/java/com/goldenhour/app/alerts/EmergencyCaller.kt`
- [Family alerts](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/alerts/FamilyAlerter.kt): `app/src/main/java/com/goldenhour/app/alerts/FamilyAlerter.kt`
- [Location lookup](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/alerts/LocationFinder.kt): `app/src/main/java/com/goldenhour/app/alerts/LocationFinder.kt`
- [Doctor card and QR](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/card/QrRenderer.kt): `app/src/main/java/com/goldenhour/app/card/QrRenderer.kt`
- [Voice-agent caller](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/alerts/VoiceAgentCaller.kt): `app/src/main/java/com/goldenhour/app/alerts/VoiceAgentCaller.kt`

### App support

- [Check history](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/domain/Session.kt): `app/src/main/java/com/goldenhour/app/domain/Session.kt`
- [Local data store](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/data/JsonStore.kt): `app/src/main/java/com/goldenhour/app/data/JsonStore.kt`
- [Nearby hospitals](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/data/HospitalsRepository.kt): `app/src/main/java/com/goldenhour/app/data/HospitalsRepository.kt`
- [On-device language AI](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/llm/Explainer.kt): `app/src/main/java/com/goldenhour/app/llm/Explainer.kt`
- [On-device model](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/app/src/main/java/com/goldenhour/app/llm/OnDeviceModel.kt): `app/src/main/java/com/goldenhour/app/llm/OnDeviceModel.kt`

### Family-call service

- [Call receiver](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/voice-agent/src/server.py): `voice-agent/src/server.py`
- [Family-call agent](https://github.com/ravivarmakompally9/goldenhour-android/blob/main/voice-agent/src/agent.py): `voice-agent/src/agent.py`

### Other components

- **Family helper**
- **Family phones**
- **Linphone / SIP**

## Connections

- Family helper → Main activity: opens app
- Family helper → Quick-settings tile: starts checks
- Quick-settings tile → Main activity: launches check
- Main activity → App navigation: sets content
- App navigation → Check flow: routes check
- Check flow → Smile check: runs check
- Check flow → Speech check: runs check
- Check flow → Arm check: runs check
- Smile check → Face analysis: analyzes frames
- Check flow → Eyes and balance: offers extended tests
- Check flow → Fixed decision rules: evaluates results
- Check flow → Check history: records session
- Check history → Local data store: persists data
- Check flow → Alert and result: shows outcome
- Alert and result → Emergency caller: requests call
- Emergency caller → Family helper: opens dialer
- Alert and result → Family alerts: starts alert
- Family alerts → Location lookup: gets location
- Family alerts → Family phones: sends SMS
- Alert and result → Doctor card and QR: opens doctor card
- App navigation → Nearby hospitals: supports hospital lookup
- Check flow → On-device language AI: requests guarded reading
- On-device language AI → On-device model: generates text
- Alert and result → Voice-agent caller: optionally requests calls
- Voice-agent caller → Call receiver: posts alert
- Call receiver → Family-call agent: dispatches call
- Family-call agent → Linphone / SIP: places call
