# abraham-ny/aorta architecture

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

- Interactive diagram: https://gitdiagram.com/abraham-ny/aorta
- Repository: https://github.com/abraham-ny/aorta

## Overview

Aorta is an Android device-activity and notification history app. MainActivity starts continuous monitoring and presents activity, notification, and settings screens; captured events are stored locally, then filtered, reviewed, exported, and summarized. The tree and excerpts support the core monitor, system-event receiver, SQLite store, and major UI capabilities. Notification capture, screenshot handling details, and some settings/export wiring are only partially sampled, so those internal links are omitted where ownership is uncertain.

Main entry points: [`app/src/main/java/com/vitalsoft/aorta/database/DatabaseHelper.java`](https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/database/DatabaseHelper.java) (SQLite event store), [`app/src/main/java/com/vitalsoft/aorta/services/MonitoringService.java`](https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/services/MonitoringService.java) (Usage monitor), [`app/src/main/java/com/vitalsoft/aorta/fragments/ActivityTimelineFragment.java`](https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/fragments/ActivityTimelineFragment.java) (Activity timeline), [`app/src/main/java/com/vitalsoft/aorta/fragments/NotificationHistoryFragment.java`](https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/fragments/NotificationHistoryFragment.java) (Notification history)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_capture["Event capture"]
  node_monitor["Usage monitor"]
  node_system_receiver["System event receiver"]
  node_notif_listener["Notification listener"]
  node_app_utils["App metadata utilities<br/>[AppUtils.java]"]
end

subgraph group_storage["Local event store"]
  node_activity_model["Activity events<br/>[ActivityEvent.java]"]
  node_notification_model["Notification events"]
  node_database[("SQLite event store")]
end

subgraph group_review["History and insights"]
  node_main["Main screen<br/>[MainActivity.java]"]
  node_activity_history["Activity timeline"]
  node_activity_adapter["Activity list renderer"]
  node_notification_history["Notification history"]
  node_notification_adapter["Notification list renderer"]
  node_statistics["Usage statistics"]
  node_app_info["App and data info"]
end

subgraph group_controls["Settings and export"]
  node_settings["Tracking settings"]
  node_export["Data export<br/>[ExportUtils.java]"]
end

node_user(("Device user"))
node_android(("Android system"))

node_user -->|"opens app"| node_main
node_main -->|"starts service"| node_monitor
node_android -->|"usage and media changes"| node_monitor
node_monitor -->|"resolves app names"| node_app_utils
node_monitor -->|"writes activity"| node_database
node_android -->|"broadcasts events"| node_system_receiver
node_system_receiver -->|"writes activity"| node_database
node_system_receiver -->|"starts on boot"| node_monitor
node_android -->|"delivers notifications"| node_notif_listener
node_activity_history -->|"loads and deletes"| node_database
node_activity_history -->|"renders filtered events"| node_activity_adapter
node_activity_history -->|"exports selection"| node_export
node_notification_history -->|"loads and deletes"| node_database
node_notification_history -->|"renders filtered events"| node_notification_adapter
node_notification_history -->|"exports selection"| node_export
node_statistics -->|"queries aggregates"| node_database
node_app_info -->|"reads counts and size"| node_database
node_settings -->|"reads and updates settings"| node_database
node_settings -->|"requests export"| node_export
node_database -->|"maps activity rows"| node_activity_model
node_database -->|"maps notification rows"| node_notification_model

click node_main "https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/activities/MainActivity.java"
click node_monitor "https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/services/MonitoringService.java"
click node_system_receiver "https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/receivers/SystemEventReceiver.java"
click node_notif_listener "https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/services/AortaNotificationListener.java"
click node_activity_model "https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/models/ActivityEvent.java"
click node_notification_model "https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/models/NotificationEvent.java"
click node_database "https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/database/DatabaseHelper.java"
click node_activity_history "https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/fragments/ActivityTimelineFragment.java"
click node_activity_adapter "https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/adapters/ActivityEventAdapter.java"
click node_notification_history "https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/fragments/NotificationHistoryFragment.java"
click node_notification_adapter "https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/adapters/NotificationEventAdapter.java"
click node_statistics "https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/activities/StatisticsActivity.java"
click node_app_info "https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/activities/AppInfoActivity.java"
click node_settings "https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/fragments/SettingsFragment.java"
click node_export "https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/utils/ExportUtils.java"
click node_app_utils "https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/utils/AppUtils.java"

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_monitor,node_system_receiver,node_notif_listener,node_app_utils,node_user toneBlue
class node_activity_model,node_notification_model,node_database toneAmber
class node_main,node_activity_history,node_activity_adapter,node_notification_history,node_notification_adapter,node_statistics,node_app_info toneMint
class node_settings,node_export toneRose
class node_android toneIndigo
```

## Components

### Event capture

- [Usage monitor](https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/services/MonitoringService.java): `app/src/main/java/com/vitalsoft/aorta/services/MonitoringService.java`
- [System event receiver](https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/receivers/SystemEventReceiver.java): `app/src/main/java/com/vitalsoft/aorta/receivers/SystemEventReceiver.java`
- [Notification listener](https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/services/AortaNotificationListener.java): `app/src/main/java/com/vitalsoft/aorta/services/AortaNotificationListener.java`
- [App metadata utilities](https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/utils/AppUtils.java): `app/src/main/java/com/vitalsoft/aorta/utils/AppUtils.java`

### Local event store

- [Activity events](https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/models/ActivityEvent.java): `app/src/main/java/com/vitalsoft/aorta/models/ActivityEvent.java`
- [Notification events](https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/models/NotificationEvent.java): `app/src/main/java/com/vitalsoft/aorta/models/NotificationEvent.java`
- [SQLite event store](https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/database/DatabaseHelper.java): `app/src/main/java/com/vitalsoft/aorta/database/DatabaseHelper.java`

### History and insights

- [Main screen](https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/activities/MainActivity.java): `app/src/main/java/com/vitalsoft/aorta/activities/MainActivity.java`
- [Activity timeline](https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/fragments/ActivityTimelineFragment.java): `app/src/main/java/com/vitalsoft/aorta/fragments/ActivityTimelineFragment.java`
- [Activity list renderer](https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/adapters/ActivityEventAdapter.java): `app/src/main/java/com/vitalsoft/aorta/adapters/ActivityEventAdapter.java`
- [Notification history](https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/fragments/NotificationHistoryFragment.java): `app/src/main/java/com/vitalsoft/aorta/fragments/NotificationHistoryFragment.java`
- [Notification list renderer](https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/adapters/NotificationEventAdapter.java): `app/src/main/java/com/vitalsoft/aorta/adapters/NotificationEventAdapter.java`
- [Usage statistics](https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/activities/StatisticsActivity.java): `app/src/main/java/com/vitalsoft/aorta/activities/StatisticsActivity.java`
- [App and data info](https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/activities/AppInfoActivity.java): `app/src/main/java/com/vitalsoft/aorta/activities/AppInfoActivity.java`

### Settings and export

- [Tracking settings](https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/fragments/SettingsFragment.java): `app/src/main/java/com/vitalsoft/aorta/fragments/SettingsFragment.java`
- [Data export](https://github.com/abraham-ny/aorta/blob/main/app/src/main/java/com/vitalsoft/aorta/utils/ExportUtils.java): `app/src/main/java/com/vitalsoft/aorta/utils/ExportUtils.java`

### Other components

- **Device user**
- **Android system**

## Connections

- Device user → Main screen: opens app
- Main screen → Usage monitor: starts service
- Android system → Usage monitor: usage and media changes
- Usage monitor → App metadata utilities: resolves app names
- Usage monitor → SQLite event store: writes activity
- Android system → System event receiver: broadcasts events
- System event receiver → SQLite event store: writes activity
- System event receiver → Usage monitor: starts on boot
- Android system → Notification listener: delivers notifications
- Activity timeline → SQLite event store: loads and deletes
- Activity timeline → Activity list renderer: renders filtered events
- Activity timeline → Data export: exports selection
- Notification history → SQLite event store: loads and deletes
- Notification history → Notification list renderer: renders filtered events
- Notification history → Data export: exports selection
- Usage statistics → SQLite event store: queries aggregates
- App and data info → SQLite event store: reads counts and size
- Tracking settings → SQLite event store: reads and updates settings
- Tracking settings → Data export: requests export
- SQLite event store → Activity events: maps activity rows
- SQLite event store → Notification events: maps notification rows
