# zeroex-0x/annua architecture

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

- Interactive diagram: https://gitdiagram.com/zeroex-0x/annua
- Repository: https://github.com/zeroex-0x/annua

## Overview

Annua is a private, on-device Android reminder app. Its user-facing workflow is managing birthdays and events, viewing them in a calendar, and receiving scheduled notifications or alarms; it also supports backups, themes, sound selection, and optional update checks. The README documents these capabilities but the sampled source covers only the Android sound helper, so internal Dart call relationships are not verified; dashed edges mark those uncertain integrations.

Main entry points: [`lib/main.dart`](https://github.com/zeroex-0x/annua/blob/main/lib/main.dart) (Annua app), [`lib/screens/reminder_screen.dart`](https://github.com/zeroex-0x/annua/blob/main/lib/screens/reminder_screen.dart) (Reminder settings), [`lib/screens/settings_screen.dart`](https://github.com/zeroex-0x/annua/blob/main/lib/screens/settings_screen.dart) (App settings), [`lib/screens/calendar_screen.dart`](https://github.com/zeroex-0x/annua/blob/main/lib/screens/calendar_screen.dart) (Calendar view)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App experience"]
  node_app["Annua app<br/>[main.dart]"]
  node_home["Home screen<br/>[home_screen.dart]"]
  node_calendar["Calendar view"]
end

subgraph group_events["Event management"]
  node_event["Event details"]
  node_form["Event editor"]
  node_event_model["Event model<br/>[event.dart]"]
end

subgraph group_reminders["Reminders"]
  node_reminder_screen["Reminder settings"]
  node_notifications["Alert scheduling<br/>[notifications.dart]"]
  node_native_sound["System sound picker<br/>[MainActivity.kt]"]
end

subgraph group_support["Local data and settings"]
  node_storage[("Local storage<br/>[storage.dart]")]
  node_backup["Backup and restore<br/>[backup.dart]"]
  node_settings["App settings"]
  node_theme["Theme preferences<br/>[theme.dart]"]
  node_updater["Update checker<br/>[updater.dart]"]
end

node_person(("App user"))

node_person -->|"uses"| node_app
node_app -.->|"opens"| node_home
node_app -.->|"shows"| node_calendar
node_person -->|"views dates"| node_calendar
node_person -.->|"manages events"| node_form
node_person -.->|"views details"| node_event
node_person -->|"sets timing"| node_reminder_screen
node_reminder_screen -.->|"configures alerts"| node_notifications
node_settings -.->|"picks sounds"| node_native_sound
node_person -->|"exports or imports"| node_backup
node_person -->|"customizes"| node_settings
node_person -->|"checks updates"| node_updater

click node_app "https://github.com/zeroex-0x/annua/blob/main/lib/main.dart"
click node_home "https://github.com/zeroex-0x/annua/blob/main/lib/screens/home_screen.dart"
click node_calendar "https://github.com/zeroex-0x/annua/blob/main/lib/screens/calendar_screen.dart"
click node_event "https://github.com/zeroex-0x/annua/blob/main/lib/screens/event_detail_screen.dart"
click node_form "https://github.com/zeroex-0x/annua/blob/main/lib/screens/event_form_screen.dart"
click node_event_model "https://github.com/zeroex-0x/annua/blob/main/lib/models/event.dart"
click node_reminder_screen "https://github.com/zeroex-0x/annua/blob/main/lib/screens/reminder_screen.dart"
click node_notifications "https://github.com/zeroex-0x/annua/blob/main/lib/services/notifications.dart"
click node_native_sound "https://github.com/zeroex-0x/annua/blob/main/android_native/MainActivity.kt"
click node_storage "https://github.com/zeroex-0x/annua/blob/main/lib/services/storage.dart"
click node_backup "https://github.com/zeroex-0x/annua/blob/main/lib/services/backup.dart"
click node_settings "https://github.com/zeroex-0x/annua/blob/main/lib/screens/settings_screen.dart"
click node_theme "https://github.com/zeroex-0x/annua/blob/main/lib/theme.dart"
click node_updater "https://github.com/zeroex-0x/annua/blob/main/lib/services/updater.dart"

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,node_home,node_calendar,node_person toneBlue
class node_event,node_form,node_event_model toneAmber
class node_reminder_screen,node_notifications,node_native_sound toneMint
class node_storage,node_backup,node_settings,node_theme,node_updater toneRose
```

## Components

### App experience

- [Annua app](https://github.com/zeroex-0x/annua/blob/main/lib/main.dart): `lib/main.dart`
- [Home screen](https://github.com/zeroex-0x/annua/blob/main/lib/screens/home_screen.dart): `lib/screens/home_screen.dart`
- [Calendar view](https://github.com/zeroex-0x/annua/blob/main/lib/screens/calendar_screen.dart): `lib/screens/calendar_screen.dart`

### Event management

- [Event details](https://github.com/zeroex-0x/annua/blob/main/lib/screens/event_detail_screen.dart): `lib/screens/event_detail_screen.dart`
- [Event editor](https://github.com/zeroex-0x/annua/blob/main/lib/screens/event_form_screen.dart): `lib/screens/event_form_screen.dart`
- [Event model](https://github.com/zeroex-0x/annua/blob/main/lib/models/event.dart): `lib/models/event.dart`

### Reminders

- [Reminder settings](https://github.com/zeroex-0x/annua/blob/main/lib/screens/reminder_screen.dart): `lib/screens/reminder_screen.dart`
- [Alert scheduling](https://github.com/zeroex-0x/annua/blob/main/lib/services/notifications.dart): `lib/services/notifications.dart`
- [System sound picker](https://github.com/zeroex-0x/annua/blob/main/android_native/MainActivity.kt): `android_native/MainActivity.kt`

### Local data and settings

- [Local storage](https://github.com/zeroex-0x/annua/blob/main/lib/services/storage.dart): `lib/services/storage.dart`
- [Backup and restore](https://github.com/zeroex-0x/annua/blob/main/lib/services/backup.dart): `lib/services/backup.dart`
- [App settings](https://github.com/zeroex-0x/annua/blob/main/lib/screens/settings_screen.dart): `lib/screens/settings_screen.dart`
- [Theme preferences](https://github.com/zeroex-0x/annua/blob/main/lib/theme.dart): `lib/theme.dart`
- [Update checker](https://github.com/zeroex-0x/annua/blob/main/lib/services/updater.dart): `lib/services/updater.dart`

### Other components

- **App user**

## Connections

- App user → Annua app: uses (evidence: `README.md`)
- Annua app → Home screen: opens
- Annua app → Calendar view: shows
- App user → Calendar view: views dates (evidence: `README.md`)
- App user → Event editor: manages events
- App user → Event details: views details
- App user → Reminder settings: sets timing (evidence: `README.md`)
- Reminder settings → Alert scheduling: configures alerts
- App settings → System sound picker: picks sounds
- App user → Backup and restore: exports or imports (evidence: `README.md`)
- App user → App settings: customizes (evidence: `README.md`)
- App user → Update checker: checks updates (evidence: `README.md`)
