# aniqhariz/thalyn architecture

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

- Interactive diagram: https://gitdiagram.com/aniqhariz/thalyn
- Repository: https://github.com/aniqhariz/thalyn

## Overview

THALYN is an offline Android companion for thalassemia care. Users record biomarkers, medication adherence and transfusion events; review dashboards and clinical insights; and maintain a medical profile, document vault and doctor-ready summary. The app also supports local reminders, calendar integration, bilingual presentation and JSON backup/restore. The graph follows documented UI and clinical references; unsampled view-model-to-storage wiring is not asserted.

Main entry points: [`app/src/main/java/com/thalyn/app/ui/ThalynApp.kt`](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/ThalynApp.kt) (App navigation), [`app/src/main/java/com/thalyn/app/ui/monitoring/MonitoringScreen.kt`](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/monitoring/MonitoringScreen.kt) (Biomarker trends), [`app/src/main/java/com/thalyn/app/ui/home/HomeScreen.kt`](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/home/HomeScreen.kt) (Home dashboard), [`app/src/main/java/com/thalyn/app/ui/treatment/TreatmentScreen.kt`](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/treatment/TreatmentScreen.kt) (Medication care)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["App experience"]
  node_app["App navigation<br/>[ThalynApp.kt]"]
end

subgraph group_tracking["Health tracking"]
  node_home["Home dashboard<br/>[HomeScreen.kt]"]
  node_home_vm["Home state<br/>[HomeViewModel.kt]"]
  node_monitoring["Biomarker trends"]
  node_monitoring_vm["Monitoring state"]
  node_treatment["Medication care<br/>[TreatmentScreen.kt]"]
  node_treatment_vm["Treatment state"]
  node_transfusion["Transfusion tracker"]
  node_transfusion_vm["Transfusion state"]
end

subgraph group_clinical["Clinical guidance"]
  node_clinical_rules["Clinical thresholds<br/>[ClinicalRules.kt]"]
  node_ferritin["Ferritin insights"]
  node_health_insights["Health insights"]
  node_health_sheet["Insight presentation"]
end

subgraph group_records["Personal records"]
  node_profile["Medical profile<br/>[ProfileScreen.kt]"]
  node_summary["Doctor summary"]
  node_summary_vm["Summary state"]
  node_vault["Medical vault"]
  node_backup["Backup and restore<br/>[BackupManager.kt]"]
  node_pdf["PDF summary export"]
end

subgraph group_platform["Local platform"]
  node_database[("Local health database<br/>[ThalynDatabase.kt]")]
  node_repositories["Data repositories<br/>[Repositories.kt]"]
  node_notifications["Local reminders"]
  node_localization["English and Indonesian<br/>[ThalynStrings.kt]"]
end

node_user(("Person"))
node_android["Android device"]

node_user -->|"uses"| node_app
node_app -->|"routes to"| node_home
node_app -->|"routes to"| node_monitoring
node_app -->|"routes to"| node_treatment
node_app -->|"routes to"| node_transfusion
node_app -->|"routes to"| node_profile
node_app -->|"routes to"| node_summary_vm
node_app -->|"selects strings"| node_localization
node_home -->|"observes state"| node_home_vm
node_home -->|"navigates to"| node_monitoring
node_monitoring -->|"observes state"| node_monitoring_vm
node_monitoring -->|"shows insights"| node_health_sheet
node_health_sheet -->|"uses rules"| node_clinical_rules
node_ferritin -->|"classifies with"| node_clinical_rules
node_treatment -->|"observes state"| node_treatment_vm
node_transfusion -.->|"observes state"| node_transfusion_vm
node_treatment -->|"opens calendar"| node_android
node_profile -->|"opens vault"| node_vault
node_summary_vm -.->|"builds summary"| node_summary
node_user -->|"exports or imports"| node_backup
node_user -->|"exports summary"| node_pdf
node_user -->|"sets reminders"| node_notifications
node_notifications -->|"schedules alarms"| node_android
node_user -->|"keeps records locally"| node_database
node_database -.->|"provides persistence"| node_repositories

click node_app "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/ThalynApp.kt"
click node_home "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/home/HomeScreen.kt"
click node_home_vm "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/home/HomeViewModel.kt"
click node_monitoring "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/monitoring/MonitoringScreen.kt"
click node_monitoring_vm "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/monitoring/MonitoringViewModel.kt"
click node_treatment "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/treatment/TreatmentScreen.kt"
click node_treatment_vm "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/treatment/TreatmentViewModel.kt"
click node_transfusion "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/transfusion/TransfusionScreen.kt"
click node_transfusion_vm "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/transfusion/TransfusionViewModel.kt"
click node_clinical_rules "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/domain/clinical/ClinicalRules.kt"
click node_ferritin "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/domain/clinical/FerritinInsightEngine.kt"
click node_health_insights "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/domain/clinical/HealthInsightEngine.kt"
click node_health_sheet "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/clinical/HealthInsightSheet.kt"
click node_profile "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/profile/ProfileScreen.kt"
click node_summary "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/domain/summary/DoctorSummaryBuilder.kt"
click node_summary_vm "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/summary/DoctorSummaryViewModel.kt"
click node_vault "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/vault/MedicalVaultViewModel.kt"
click node_backup "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/data/backup/BackupManager.kt"
click node_pdf "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/data/export/PdfSummaryRenderer.kt"
click node_database "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/data/database/ThalynDatabase.kt"
click node_repositories "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/data/repository/Repositories.kt"
click node_notifications "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/notification/NotificationScheduler.kt"
click node_localization "https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/domain/localization/ThalynStrings.kt"

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_app toneBlue
class node_home,node_home_vm,node_monitoring,node_monitoring_vm,node_treatment,node_treatment_vm,node_transfusion,node_transfusion_vm toneAmber
class node_clinical_rules,node_ferritin,node_health_insights,node_health_sheet toneMint
class node_profile,node_summary,node_summary_vm,node_vault,node_backup,node_pdf toneRose
class node_database,node_repositories,node_notifications,node_localization,node_user,node_android toneIndigo
```

## Components

### App experience

- [App navigation](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/ThalynApp.kt): `app/src/main/java/com/thalyn/app/ui/ThalynApp.kt`

### Health tracking

- [Home dashboard](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/home/HomeScreen.kt): `app/src/main/java/com/thalyn/app/ui/home/HomeScreen.kt`
- [Home state](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/home/HomeViewModel.kt): `app/src/main/java/com/thalyn/app/ui/home/HomeViewModel.kt`
- [Biomarker trends](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/monitoring/MonitoringScreen.kt): `app/src/main/java/com/thalyn/app/ui/monitoring/MonitoringScreen.kt`
- [Monitoring state](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/monitoring/MonitoringViewModel.kt): `app/src/main/java/com/thalyn/app/ui/monitoring/MonitoringViewModel.kt`
- [Medication care](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/treatment/TreatmentScreen.kt): `app/src/main/java/com/thalyn/app/ui/treatment/TreatmentScreen.kt`
- [Treatment state](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/treatment/TreatmentViewModel.kt): `app/src/main/java/com/thalyn/app/ui/treatment/TreatmentViewModel.kt`
- [Transfusion tracker](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/transfusion/TransfusionScreen.kt): `app/src/main/java/com/thalyn/app/ui/transfusion/TransfusionScreen.kt`
- [Transfusion state](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/transfusion/TransfusionViewModel.kt): `app/src/main/java/com/thalyn/app/ui/transfusion/TransfusionViewModel.kt`

### Clinical guidance

- [Clinical thresholds](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/domain/clinical/ClinicalRules.kt): `app/src/main/java/com/thalyn/app/domain/clinical/ClinicalRules.kt`
- [Ferritin insights](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/domain/clinical/FerritinInsightEngine.kt): `app/src/main/java/com/thalyn/app/domain/clinical/FerritinInsightEngine.kt`
- [Health insights](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/domain/clinical/HealthInsightEngine.kt): `app/src/main/java/com/thalyn/app/domain/clinical/HealthInsightEngine.kt`
- [Insight presentation](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/clinical/HealthInsightSheet.kt): `app/src/main/java/com/thalyn/app/ui/clinical/HealthInsightSheet.kt`

### Personal records

- [Medical profile](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/profile/ProfileScreen.kt): `app/src/main/java/com/thalyn/app/ui/profile/ProfileScreen.kt`
- [Doctor summary](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/domain/summary/DoctorSummaryBuilder.kt): `app/src/main/java/com/thalyn/app/domain/summary/DoctorSummaryBuilder.kt`
- [Summary state](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/summary/DoctorSummaryViewModel.kt): `app/src/main/java/com/thalyn/app/ui/summary/DoctorSummaryViewModel.kt`
- [Medical vault](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/ui/vault/MedicalVaultViewModel.kt): `app/src/main/java/com/thalyn/app/ui/vault/MedicalVaultViewModel.kt`
- [Backup and restore](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/data/backup/BackupManager.kt): `app/src/main/java/com/thalyn/app/data/backup/BackupManager.kt`
- [PDF summary export](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/data/export/PdfSummaryRenderer.kt): `app/src/main/java/com/thalyn/app/data/export/PdfSummaryRenderer.kt`

### Local platform

- [Local health database](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/data/database/ThalynDatabase.kt): `app/src/main/java/com/thalyn/app/data/database/ThalynDatabase.kt`
- [Data repositories](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/data/repository/Repositories.kt): `app/src/main/java/com/thalyn/app/data/repository/Repositories.kt`
- [Local reminders](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/notification/NotificationScheduler.kt): `app/src/main/java/com/thalyn/app/notification/NotificationScheduler.kt`
- [English and Indonesian](https://github.com/aniqhariz/thalyn/blob/main/app/src/main/java/com/thalyn/app/domain/localization/ThalynStrings.kt): `app/src/main/java/com/thalyn/app/domain/localization/ThalynStrings.kt`

### Other components

- **Person**
- **Android device**

## Connections

- Person → App navigation: uses (evidence: `README.md`)
- App navigation → Home dashboard: routes to (evidence: `app/src/main/java/com/thalyn/app/ui/ThalynApp.kt`)
- App navigation → Biomarker trends: routes to (evidence: `app/src/main/java/com/thalyn/app/ui/ThalynApp.kt`)
- App navigation → Medication care: routes to (evidence: `app/src/main/java/com/thalyn/app/ui/ThalynApp.kt`)
- App navigation → Transfusion tracker: routes to (evidence: `app/src/main/java/com/thalyn/app/ui/ThalynApp.kt`)
- App navigation → Medical profile: routes to (evidence: `app/src/main/java/com/thalyn/app/ui/ThalynApp.kt`)
- App navigation → Summary state: routes to (evidence: `app/src/main/java/com/thalyn/app/ui/ThalynApp.kt`)
- App navigation → English and Indonesian: selects strings (evidence: `app/src/main/java/com/thalyn/app/ui/ThalynApp.kt`)
- Home dashboard → Home state: observes state (evidence: `app/src/main/java/com/thalyn/app/ui/home/HomeScreen.kt`)
- Home dashboard → Biomarker trends: navigates to (evidence: `app/src/main/java/com/thalyn/app/ui/home/HomeScreen.kt`)
- Biomarker trends → Monitoring state: observes state (evidence: `app/src/main/java/com/thalyn/app/ui/monitoring/MonitoringScreen.kt`)
- Biomarker trends → Insight presentation: shows insights (evidence: `app/src/main/java/com/thalyn/app/ui/monitoring/MonitoringScreen.kt`)
- Insight presentation → Clinical thresholds: uses rules (evidence: `app/src/main/java/com/thalyn/app/ui/clinical/HealthInsightSheet.kt`)
- Ferritin insights → Clinical thresholds: classifies with (evidence: `app/src/main/java/com/thalyn/app/domain/clinical/FerritinInsightEngine.kt`)
- Medication care → Treatment state: observes state (evidence: `app/src/main/java/com/thalyn/app/ui/treatment/TreatmentScreen.kt`)
- Transfusion tracker → Transfusion state: observes state (evidence: `app/src/main/java/com/thalyn/app/ui/transfusion/TransfusionScreen.kt`)
- Medication care → Android device: opens calendar (evidence: `app/src/main/java/com/thalyn/app/ui/treatment/TreatmentScreen.kt`)
- Medical profile → Medical vault: opens vault (evidence: `app/src/main/java/com/thalyn/app/ui/profile/ProfileScreen.kt`)
- Summary state → Doctor summary: builds summary (evidence: `app/src/main/java/com/thalyn/app/ui/summary/DoctorSummaryViewModel.kt`)
- Person → Backup and restore: exports or imports (evidence: `README.md`)
- Person → PDF summary export: exports summary (evidence: `README.md`)
- Person → Local reminders: sets reminders (evidence: `README.md`)
- Local reminders → Android device: schedules alarms (evidence: `README.md`)
- Person → Local health database: keeps records locally (evidence: `README.md`)
- Local health database → Data repositories: provides persistence
