# amand4ngol/reverie architecture

> Architecture diagram of the GitHub repository amand4ngol/reverie, 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/amand4ngol/reverie
- Repository: https://github.com/amand4ngol/reverie

## Overview

Reverie is a Flutter digital-memory app for capturing and organizing photos and videos, creating journal entries, revisiting memories, and backing up selected content to Google Drive. The main user workflow spans media capture and gallery organization, optional journal creation, then later browsing through albums, flashbacks, or recaps; backup is a separate preservation path. The README documents additional media analysis, editing, search, and translation capabilities. Source excerpts cover only platform runners, so feature-level wiring beyond the documented capabilities is not verified.

Main entry points: [`lib/main.dart`](https://github.com/amand4ngol/reverie/blob/main/lib/main.dart) (Flutter app), [`lib/features/journal/pages/journal_screen.dart`](https://github.com/amand4ngol/reverie/blob/main/lib/features/journal/pages/journal_screen.dart) (Journal entries), [`lib/features/backupdrive/pages/backup_screen.dart`](https://github.com/amand4ngol/reverie/blob/main/lib/features/backupdrive/pages/backup_screen.dart) (Backup controls), [`lib/features/backupdrive/provider/backup_provider.dart`](https://github.com/amand4ngol/reverie/blob/main/lib/features/backupdrive/provider/backup_provider.dart) (Backup state)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App entry"]
  node_app_entry["Flutter app<br/>[main.dart]"]
  node_onboarding["Onboarding"]
  node_permissions["Media permissions"]
end

subgraph group_media["Media memories"]
  node_camera["Camera capture<br/>[camera_screen.dart]"]
  node_gallery["Gallery and albums<br/>[gallery_page.dart]"]
  node_media_detail["Media detail"]
  node_media_ops["Media operations"]
  node_search["Media search"]
  node_flashbacks["Flashbacks"]
  node_recap["Monthly recap<br/>[recap_screen.dart]"]
  node_category_store[("Category database")]
end

subgraph group_journal["Journal"]
  node_journal["Journal entries"]
  node_journal_state["Journal state"]
  node_translation["Entry translation"]
end

subgraph group_backup["Backup and settings"]
  node_backup_ui["Backup controls<br/>[backup_screen.dart]"]
  node_backup_state["Backup state"]
  node_drive_service["Google Drive service"]
end

node_person(("User"))
node_google_drive(("Google Drive"))

node_person -->|"opens"| node_app_entry
node_app_entry -->|"presents"| node_onboarding
node_person -->|"captures"| node_camera
node_person -->|"browses"| node_gallery
node_person -->|"views and edits"| node_media_detail
node_person -->|"searches"| node_search
node_person -->|"revisits"| node_flashbacks
node_person -->|"browses"| node_recap
node_person -->|"writes"| node_journal
node_journal -->|"manages entries"| node_journal_state
node_person -->|"translates entries"| node_translation
node_person -->|"selects backup"| node_backup_ui
node_backup_ui -->|"starts backup"| node_backup_state
node_backup_state -->|"requests transfer"| node_drive_service
node_drive_service -->|"backs up and restores"| node_google_drive

click node_app_entry "https://github.com/amand4ngol/reverie/blob/main/lib/main.dart"
click node_onboarding "https://github.com/amand4ngol/reverie/blob/main/lib/features/onboarding/pages/onboarding_screen.dart"
click node_permissions "https://github.com/amand4ngol/reverie/blob/main/lib/features/permissions/provider/permission_provider.dart"
click node_camera "https://github.com/amand4ngol/reverie/blob/main/lib/features/camera/camera_screen.dart"
click node_gallery "https://github.com/amand4ngol/reverie/blob/main/lib/features/gallery/pages/gallery_page.dart"
click node_media_detail "https://github.com/amand4ngol/reverie/blob/main/lib/features/gallery/pages/mediadetail/media_detail_view.dart"
click node_media_ops "https://github.com/amand4ngol/reverie/blob/main/lib/features/gallery/provider/photo_operations_provider.dart"
click node_search "https://github.com/amand4ngol/reverie/blob/main/lib/features/gallery/pages/smart_search_screen.dart"
click node_flashbacks "https://github.com/amand4ngol/reverie/blob/main/lib/features/gallery/pages/flashbacks/flashbacks_screen.dart"
click node_recap "https://github.com/amand4ngol/reverie/blob/main/lib/features/gallery/pages/recap/recap_screen.dart"
click node_category_store "https://github.com/amand4ngol/reverie/blob/main/lib/features/gallery/database/category_database.dart"
click node_journal "https://github.com/amand4ngol/reverie/blob/main/lib/features/journal/pages/journal_screen.dart"
click node_journal_state "https://github.com/amand4ngol/reverie/blob/main/lib/features/journal/providers/journal_provider.dart"
click node_translation "https://github.com/amand4ngol/reverie/blob/main/lib/features/journal/providers/translation_provider.dart"
click node_backup_ui "https://github.com/amand4ngol/reverie/blob/main/lib/features/backupdrive/pages/backup_screen.dart"
click node_backup_state "https://github.com/amand4ngol/reverie/blob/main/lib/features/backupdrive/provider/backup_provider.dart"
click node_drive_service "https://github.com/amand4ngol/reverie/blob/main/lib/services/google_drive_service.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_entry,node_onboarding,node_permissions,node_person toneBlue
class node_camera,node_gallery,node_media_detail,node_media_ops,node_search,node_flashbacks,node_recap,node_category_store toneAmber
class node_journal,node_journal_state,node_translation toneMint
class node_backup_ui,node_backup_state,node_drive_service toneRose
class node_google_drive toneIndigo
```

## Components

### App entry

- [Flutter app](https://github.com/amand4ngol/reverie/blob/main/lib/main.dart): `lib/main.dart`
- [Onboarding](https://github.com/amand4ngol/reverie/blob/main/lib/features/onboarding/pages/onboarding_screen.dart): `lib/features/onboarding/pages/onboarding_screen.dart`
- [Media permissions](https://github.com/amand4ngol/reverie/blob/main/lib/features/permissions/provider/permission_provider.dart): `lib/features/permissions/provider/permission_provider.dart`

### Media memories

- [Camera capture](https://github.com/amand4ngol/reverie/blob/main/lib/features/camera/camera_screen.dart): `lib/features/camera/camera_screen.dart`
- [Gallery and albums](https://github.com/amand4ngol/reverie/blob/main/lib/features/gallery/pages/gallery_page.dart): `lib/features/gallery/pages/gallery_page.dart`
- [Media detail](https://github.com/amand4ngol/reverie/blob/main/lib/features/gallery/pages/mediadetail/media_detail_view.dart): `lib/features/gallery/pages/mediadetail/media_detail_view.dart`
- [Media operations](https://github.com/amand4ngol/reverie/blob/main/lib/features/gallery/provider/photo_operations_provider.dart): `lib/features/gallery/provider/photo_operations_provider.dart`
- [Media search](https://github.com/amand4ngol/reverie/blob/main/lib/features/gallery/pages/smart_search_screen.dart): `lib/features/gallery/pages/smart_search_screen.dart`
- [Flashbacks](https://github.com/amand4ngol/reverie/blob/main/lib/features/gallery/pages/flashbacks/flashbacks_screen.dart): `lib/features/gallery/pages/flashbacks/flashbacks_screen.dart`
- [Monthly recap](https://github.com/amand4ngol/reverie/blob/main/lib/features/gallery/pages/recap/recap_screen.dart): `lib/features/gallery/pages/recap/recap_screen.dart`
- [Category database](https://github.com/amand4ngol/reverie/blob/main/lib/features/gallery/database/category_database.dart): `lib/features/gallery/database/category_database.dart`

### Journal

- [Journal entries](https://github.com/amand4ngol/reverie/blob/main/lib/features/journal/pages/journal_screen.dart): `lib/features/journal/pages/journal_screen.dart`
- [Journal state](https://github.com/amand4ngol/reverie/blob/main/lib/features/journal/providers/journal_provider.dart): `lib/features/journal/providers/journal_provider.dart`
- [Entry translation](https://github.com/amand4ngol/reverie/blob/main/lib/features/journal/providers/translation_provider.dart): `lib/features/journal/providers/translation_provider.dart`

### Backup and settings

- [Backup controls](https://github.com/amand4ngol/reverie/blob/main/lib/features/backupdrive/pages/backup_screen.dart): `lib/features/backupdrive/pages/backup_screen.dart`
- [Backup state](https://github.com/amand4ngol/reverie/blob/main/lib/features/backupdrive/provider/backup_provider.dart): `lib/features/backupdrive/provider/backup_provider.dart`
- [Google Drive service](https://github.com/amand4ngol/reverie/blob/main/lib/services/google_drive_service.dart): `lib/services/google_drive_service.dart`

### Other components

- **User**
- **Google Drive**

## Connections

- User → Flutter app: opens
- Flutter app → Onboarding: presents
- User → Camera capture: captures
- User → Gallery and albums: browses
- User → Media detail: views and edits
- User → Media search: searches
- User → Flashbacks: revisits
- User → Monthly recap: browses
- User → Journal entries: writes
- Journal entries → Journal state: manages entries
- User → Entry translation: translates entries
- User → Backup controls: selects backup
- Backup controls → Backup state: starts backup
- Backup state → Google Drive service: requests transfer
- Google Drive service → Google Drive: backs up and restores
