# yashbellam/mindfield architecture

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

## Overview

Mind Field is an Android journal for creating and browsing entries, with search, calendar/history, PIN-based locking, encrypted local storage, file backup, and optional Google Drive sync. The main workflow is to unlock the app, create or edit entries, and persist them locally; users can then search or browse those entries, export/import backups, or synchronize them through Drive. The graph follows documented dependencies and SOURCE INDEX references. The README is empty, and several feature implementations were not sampled, so some subsystem links are omitted rather than inferred.

Main entry points: [`app/src/main/java/com/mindfield/data/repository/EntryRepository.kt`](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/data/repository/EntryRepository.kt) (Entry repository), [`app/src/main/java/com/mindfield/MindFieldApplication.kt`](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/MindFieldApplication.kt) (App services), [`app/src/main/java/com/mindfield/ui/entries/EntryListScreen.kt`](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/entries/EntryListScreen.kt) (Entry browsing), [`app/src/main/java/com/mindfield/sync/DriveSyncManager.kt`](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/sync/DriveSyncManager.kt) (Sync coordination)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App and navigation"]
  node_activity["Activity routing<br/>[MainActivity.kt]"]
  node_application["App services"]
end

subgraph group_journal["Journal experience"]
  node_entry_ui["Entry browsing<br/>[EntryListScreen.kt]"]
  node_entry_vm["Entry list state"]
  node_editor["Entry editor<br/>[EditorScreen.kt]"]
  node_editor_vm["Editor state<br/>[EditorViewModel.kt]"]
  node_search["Entry search<br/>[SearchViewModel.kt]"]
  node_calendar["Calendar browsing<br/>[CalendarScreen.kt]"]
  node_calendar_vm["Calendar state"]
  node_settings["Settings<br/>[SettingsScreen.kt]"]
  node_settings_vm["Settings state"]
  node_lock_ui["Lock screens<br/>[LockScreen.kt]"]
end

subgraph group_storage["Local data and security"]
  node_lock_manager["Lock lifecycle<br/>[LockManager.kt]"]
  node_vault["Passphrase vault<br/>[PassphraseVault.kt]"]
  node_database[("Encrypted database")]
  node_entry_repo["Entry repository<br/>[EntryRepository.kt]"]
  node_entry_dao["Entry queries<br/>[EntryDao.kt]"]
  node_mapping_dao["Drive mapping queries"]
  node_entry_model["Journal records<br/>[Entry.kt]"]
  node_mapping_model["Drive mappings"]
end

subgraph group_cloud["Backup and sync"]
  node_backup["File backup<br/>[BackupManager.kt]"]
  node_auth["Google authorization"]
  node_sync_manager["Sync coordination"]
  node_drive_client["Drive file access<br/>[DriveSyncClient.kt]"]
  node_sync_worker["Background sync<br/>[DriveSyncWorker.kt]"]
end

node_user(("Journal user"))
node_google_drive[("Google Drive")]

node_user -->|"opens app"| node_activity
node_activity -->|"routes to"| node_entry_ui
node_activity -->|"routes to"| node_editor
node_activity -->|"routes to"| node_lock_ui
node_activity -->|"routes to"| node_settings
node_application -->|"opens and configures"| node_database
node_application -->|"provides"| node_entry_repo
node_application -->|"registers"| node_lock_manager
node_application -->|"provides"| node_vault
node_application -->|"provides"| node_sync_manager
node_entry_ui -->|"uses"| node_entry_vm
node_entry_ui -->|"uses"| node_search
node_entry_ui -->|"opens"| node_calendar
node_entry_ui -->|"opens"| node_editor
node_editor -->|"uses"| node_editor_vm
node_calendar -->|"uses"| node_calendar_vm
node_settings -->|"uses"| node_settings_vm
node_lock_ui -.->|"unlocks through"| node_lock_manager
node_lock_manager -->|"unwraps credentials"| node_vault
node_lock_manager -->|"opens database"| node_application
node_database -->|"provides"| node_entry_dao
node_database -->|"provides"| node_mapping_dao
node_entry_repo -->|"queries and writes"| node_entry_dao
node_entry_repo -->|"reads mappings"| node_mapping_dao
node_entry_dao -->|"stores"| node_entry_model
node_mapping_dao -->|"stores"| node_mapping_model
node_entry_vm -.->|"uses"| node_entry_repo
node_editor_vm -.->|"uses"| node_entry_repo
node_search -->|"searches entries"| node_entry_repo
node_search -->|"stores recent searches"| node_entry_ui
node_calendar_vm -->|"queries entries"| node_entry_repo
node_backup -->|"reads entries"| node_entry_repo
node_backup -->|"imports transactionally"| node_database
node_sync_worker -->|"runs sync"| node_sync_manager
node_sync_manager -->|"reads and updates"| node_entry_repo
node_sync_manager -->|"dispatches file operations"| node_drive_client
node_sync_manager -->|"uses authorization"| node_auth
node_sync_manager -->|"tracks remote files"| node_mapping_model
node_drive_client -->|"refreshes access"| node_auth
node_drive_client -->|"reads and writes files"| node_google_drive
node_auth -.->|"authorizes access"| node_google_drive

click node_activity "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/MainActivity.kt"
click node_application "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/MindFieldApplication.kt"
click node_entry_ui "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/entries/EntryListScreen.kt"
click node_entry_vm "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/entries/EntryListViewModel.kt"
click node_editor "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/editor/EditorScreen.kt"
click node_editor_vm "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/editor/EditorViewModel.kt"
click node_search "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/search/SearchViewModel.kt"
click node_calendar "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/calendar/CalendarScreen.kt"
click node_calendar_vm "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/calendar/CalendarViewModel.kt"
click node_settings "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/settings/SettingsScreen.kt"
click node_settings_vm "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/settings/SettingsViewModel.kt"
click node_lock_ui "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/lock/LockScreen.kt"
click node_lock_manager "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/security/LockManager.kt"
click node_vault "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/security/PassphraseVault.kt"
click node_database "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/data/MindFieldDatabase.kt"
click node_entry_repo "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/data/repository/EntryRepository.kt"
click node_entry_dao "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/data/dao/EntryDao.kt"
click node_mapping_dao "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/data/dao/DriveFileMappingDao.kt"
click node_entry_model "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/data/model/Entry.kt"
click node_mapping_model "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/data/model/DriveFileMapping.kt"
click node_backup "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/data/BackupManager.kt"
click node_auth "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/sync/GoogleAuthManager.kt"
click node_sync_manager "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/sync/DriveSyncManager.kt"
click node_drive_client "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/sync/DriveSyncClient.kt"
click node_sync_worker "https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/sync/DriveSyncWorker.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_activity,node_application,node_user toneBlue
class node_entry_ui,node_entry_vm,node_editor,node_editor_vm,node_search,node_calendar,node_calendar_vm,node_settings,node_settings_vm,node_lock_ui,node_google_drive toneAmber
class node_lock_manager,node_vault,node_database,node_entry_repo,node_entry_dao,node_mapping_dao,node_entry_model,node_mapping_model toneMint
class node_backup,node_auth,node_sync_manager,node_drive_client,node_sync_worker toneRose
```

## Components

### App and navigation

- [Activity routing](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/MainActivity.kt): `app/src/main/java/com/mindfield/MainActivity.kt`
- [App services](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/MindFieldApplication.kt): `app/src/main/java/com/mindfield/MindFieldApplication.kt`

### Journal experience

- [Entry browsing](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/entries/EntryListScreen.kt): `app/src/main/java/com/mindfield/ui/entries/EntryListScreen.kt`
- [Entry list state](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/entries/EntryListViewModel.kt): `app/src/main/java/com/mindfield/ui/entries/EntryListViewModel.kt`
- [Entry editor](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/editor/EditorScreen.kt): `app/src/main/java/com/mindfield/ui/editor/EditorScreen.kt`
- [Editor state](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/editor/EditorViewModel.kt): `app/src/main/java/com/mindfield/ui/editor/EditorViewModel.kt`
- [Entry search](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/search/SearchViewModel.kt): `app/src/main/java/com/mindfield/ui/search/SearchViewModel.kt`
- [Calendar browsing](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/calendar/CalendarScreen.kt): `app/src/main/java/com/mindfield/ui/calendar/CalendarScreen.kt`
- [Calendar state](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/calendar/CalendarViewModel.kt): `app/src/main/java/com/mindfield/ui/calendar/CalendarViewModel.kt`
- [Settings](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/settings/SettingsScreen.kt): `app/src/main/java/com/mindfield/ui/settings/SettingsScreen.kt`
- [Settings state](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/settings/SettingsViewModel.kt): `app/src/main/java/com/mindfield/ui/settings/SettingsViewModel.kt`
- [Lock screens](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/ui/lock/LockScreen.kt): `app/src/main/java/com/mindfield/ui/lock/LockScreen.kt`

### Local data and security

- [Lock lifecycle](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/security/LockManager.kt): `app/src/main/java/com/mindfield/security/LockManager.kt`
- [Passphrase vault](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/security/PassphraseVault.kt): `app/src/main/java/com/mindfield/security/PassphraseVault.kt`
- [Encrypted database](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/data/MindFieldDatabase.kt): `app/src/main/java/com/mindfield/data/MindFieldDatabase.kt`
- [Entry repository](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/data/repository/EntryRepository.kt): `app/src/main/java/com/mindfield/data/repository/EntryRepository.kt`
- [Entry queries](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/data/dao/EntryDao.kt): `app/src/main/java/com/mindfield/data/dao/EntryDao.kt`
- [Drive mapping queries](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/data/dao/DriveFileMappingDao.kt): `app/src/main/java/com/mindfield/data/dao/DriveFileMappingDao.kt`
- [Journal records](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/data/model/Entry.kt): `app/src/main/java/com/mindfield/data/model/Entry.kt`
- [Drive mappings](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/data/model/DriveFileMapping.kt): `app/src/main/java/com/mindfield/data/model/DriveFileMapping.kt`

### Backup and sync

- [File backup](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/data/BackupManager.kt): `app/src/main/java/com/mindfield/data/BackupManager.kt`
- [Google authorization](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/sync/GoogleAuthManager.kt): `app/src/main/java/com/mindfield/sync/GoogleAuthManager.kt`
- [Sync coordination](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/sync/DriveSyncManager.kt): `app/src/main/java/com/mindfield/sync/DriveSyncManager.kt`
- [Drive file access](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/sync/DriveSyncClient.kt): `app/src/main/java/com/mindfield/sync/DriveSyncClient.kt`
- [Background sync](https://github.com/yashbellam/mindfield/blob/main/app/src/main/java/com/mindfield/sync/DriveSyncWorker.kt): `app/src/main/java/com/mindfield/sync/DriveSyncWorker.kt`

### Other components

- **Journal user**
- **Google Drive**

## Connections

- Journal user → Activity routing: opens app (evidence: `app/src/main/java/com/mindfield/MainActivity.kt`)
- Activity routing → Entry browsing: routes to (evidence: `app/src/main/java/com/mindfield/MainActivity.kt`)
- Activity routing → Entry editor: routes to (evidence: `app/src/main/java/com/mindfield/MainActivity.kt`)
- Activity routing → Lock screens: routes to (evidence: `app/src/main/java/com/mindfield/MainActivity.kt`)
- Activity routing → Settings: routes to (evidence: `app/src/main/java/com/mindfield/MainActivity.kt`)
- App services → Encrypted database: opens and configures (evidence: `app/src/main/java/com/mindfield/MindFieldApplication.kt`)
- App services → Entry repository: provides (evidence: `app/src/main/java/com/mindfield/MindFieldApplication.kt`)
- App services → Lock lifecycle: registers (evidence: `app/src/main/java/com/mindfield/MindFieldApplication.kt`)
- App services → Passphrase vault: provides (evidence: `app/src/main/java/com/mindfield/MindFieldApplication.kt`)
- App services → Sync coordination: provides (evidence: `app/src/main/java/com/mindfield/MindFieldApplication.kt`)
- Entry browsing → Entry list state: uses (evidence: `app/src/main/java/com/mindfield/ui/entries/EntryListScreen.kt`)
- Entry browsing → Entry search: uses (evidence: `app/src/main/java/com/mindfield/ui/entries/EntryListScreen.kt`)
- Entry browsing → Calendar browsing: opens (evidence: `app/src/main/java/com/mindfield/ui/entries/EntryListScreen.kt`)
- Entry browsing → Entry editor: opens (evidence: `app/src/main/java/com/mindfield/ui/entries/EntryListScreen.kt`)
- Entry editor → Editor state: uses (evidence: `app/src/main/java/com/mindfield/ui/editor/EditorScreen.kt`)
- Calendar browsing → Calendar state: uses (evidence: `app/src/main/java/com/mindfield/ui/calendar/CalendarScreen.kt`)
- Settings → Settings state: uses (evidence: `app/src/main/java/com/mindfield/ui/settings/SettingsScreen.kt`)
- Lock screens → Lock lifecycle: unlocks through
- Lock lifecycle → Passphrase vault: unwraps credentials (evidence: `app/src/main/java/com/mindfield/security/LockManager.kt`)
- Lock lifecycle → App services: opens database (evidence: `app/src/main/java/com/mindfield/security/LockManager.kt`)
- Encrypted database → Entry queries: provides (evidence: `app/src/main/java/com/mindfield/data/MindFieldDatabase.kt`)
- Encrypted database → Drive mapping queries: provides (evidence: `app/src/main/java/com/mindfield/data/MindFieldDatabase.kt`)
- Entry repository → Entry queries: queries and writes (evidence: `app/src/main/java/com/mindfield/data/repository/EntryRepository.kt`)
- Entry repository → Drive mapping queries: reads mappings (evidence: `app/src/main/java/com/mindfield/data/repository/EntryRepository.kt`)
- Entry queries → Journal records: stores (evidence: `app/src/main/java/com/mindfield/data/dao/EntryDao.kt`)
- Drive mapping queries → Drive mappings: stores (evidence: `app/src/main/java/com/mindfield/data/dao/DriveFileMappingDao.kt`)
- Entry list state → Entry repository: uses (evidence: `app/src/main/java/com/mindfield/ui/entries/EntryListViewModel.kt`)
- Editor state → Entry repository: uses (evidence: `app/src/main/java/com/mindfield/ui/editor/EditorViewModel.kt`)
- Entry search → Entry repository: searches entries (evidence: `app/src/main/java/com/mindfield/ui/search/SearchViewModel.kt`)
- Entry search → Entry browsing: stores recent searches (evidence: `app/src/main/java/com/mindfield/ui/search/SearchViewModel.kt`)
- Calendar state → Entry repository: queries entries (evidence: `app/src/main/java/com/mindfield/ui/calendar/CalendarViewModel.kt`)
- File backup → Entry repository: reads entries (evidence: `app/src/main/java/com/mindfield/data/BackupManager.kt`)
- File backup → Encrypted database: imports transactionally (evidence: `app/src/main/java/com/mindfield/data/BackupManager.kt`)
- Background sync → Sync coordination: runs sync (evidence: `app/src/main/java/com/mindfield/sync/DriveSyncWorker.kt`)
- Sync coordination → Entry repository: reads and updates (evidence: `app/src/main/java/com/mindfield/sync/DriveSyncManager.kt`)
- Sync coordination → Drive file access: dispatches file operations (evidence: `app/src/main/java/com/mindfield/sync/DriveSyncManager.kt`)
- Sync coordination → Google authorization: uses authorization (evidence: `app/src/main/java/com/mindfield/sync/DriveSyncManager.kt`)
- Sync coordination → Drive mappings: tracks remote files (evidence: `app/src/main/java/com/mindfield/sync/DriveSyncManager.kt`)
- Drive file access → Google authorization: refreshes access (evidence: `app/src/main/java/com/mindfield/sync/DriveSyncClient.kt`)
- Drive file access → Google Drive: reads and writes files (evidence: `app/src/main/java/com/mindfield/sync/DriveSyncClient.kt`)
- Google authorization → Google Drive: authorizes access
