How ravivarmakompally9/goldenhour-android works
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: CheckFlowViewModel.kt Check flow · HighAlertScreen.kt Alert and result · GoldenHourRoot.kt App navigation · FamilyAlerter.kt Family alerts
Components 26
App entry
- Main activity
app/src/main/java/com/goldenhour/app/MainActivity.kt - Quick-settings tile
app/src/main/java/com/goldenhour/app/entry/StrokeCheckTileService.kt - App navigation
app/src/main/java/com/goldenhour/app/ui/navigation/GoldenHourRoot.kt
Screening
- Check flow
app/src/main/java/com/goldenhour/app/ui/screens/check/CheckFlowViewModel.kt - Smile check
app/src/main/java/com/goldenhour/app/checks/face/FaceCheck.kt - Face analysis
app/src/main/java/com/goldenhour/app/checks/face/FaceLandmarkerEngine.kt - Speech check
app/src/main/java/com/goldenhour/app/checks/speech/SpeechCheck.kt - Arm check
app/src/main/java/com/goldenhour/app/checks/arm/ArmCheck.kt - Eyes and balance
app/src/main/java/com/goldenhour/app/checks/CheckModule.kt - Fixed decision rules
app/src/main/java/com/goldenhour/app/domain/Decide.kt
Help and follow-up
- Alert and result
app/src/main/java/com/goldenhour/app/ui/screens/alert/HighAlertScreen.kt - Emergency caller
app/src/main/java/com/goldenhour/app/alerts/EmergencyCaller.kt - Family alerts
app/src/main/java/com/goldenhour/app/alerts/FamilyAlerter.kt - Location lookup
app/src/main/java/com/goldenhour/app/alerts/LocationFinder.kt - Doctor card and QR
app/src/main/java/com/goldenhour/app/card/QrRenderer.kt - Voice-agent caller
app/src/main/java/com/goldenhour/app/alerts/VoiceAgentCaller.kt
App support
- Check history
app/src/main/java/com/goldenhour/app/domain/Session.kt - Local data store
app/src/main/java/com/goldenhour/app/data/JsonStore.kt - Nearby hospitals
app/src/main/java/com/goldenhour/app/data/HospitalsRepository.kt - On-device language AI
app/src/main/java/com/goldenhour/app/llm/Explainer.kt - On-device model
app/src/main/java/com/goldenhour/app/llm/OnDeviceModel.kt
Family-call service
- Call receiver
voice-agent/src/server.py - Family-call agent
voice-agent/src/agent.py
Other components
- Family helper
- Family phones
- Linphone / SIP
Connections 27
- 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