# antony-collika/clipnest architecture

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

- Interactive diagram: https://gitdiagram.com/antony-collika/clipnest
- Repository: https://github.com/antony-collika/clipnest

## Overview

ClipNest is an Android clipboard vault and personal notes app. Users capture clipboard text through the app or capture notification, then manage saved cards in the vault; they can also create and edit notes, search content, configure settings, and use AI assistance. The sampled sources show capture persistence, local database setup, file handling, and AI provider resolution. The README is empty, so other product areas are represented only where supported by the source index; several UI and domain relationships remain unverified.

Main entry points: [`app/src/main/java/com/clipnest/MainActivity.kt`](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/MainActivity.kt) (App navigation), [`app/src/main/java/com/clipnest/data/local/AppDatabase.kt`](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/data/local/AppDatabase.kt) (Local database), [`app/src/main/java/com/clipnest/service/TransparentCaptureActivity.kt`](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/service/TransparentCaptureActivity.kt) (Clipboard capture), [`app/src/main/java/com/clipnest/data/repository/AiRepository.kt`](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/data/repository/AiRepository.kt) (AI coordinator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["App entry and capture"]
  node_main["App navigation<br/>[MainActivity.kt]"]
  node_capture["Clipboard capture"]
  node_capture_notify["Capture notification"]
  node_tile["Quick Settings tile"]
end

subgraph group_content["Clipboard and notes"]
  node_clipboard_repo["Clipboard repository"]
  node_database[("Local database<br/>[AppDatabase.kt]")]
  node_clipboard_dao["Clipboard data access<br/>[ClipboardDao.kt]"]
  node_note_dao["Note data access<br/>[NoteDao.kt]"]
  node_topic_dao["Topic data access<br/>[TopicDao.kt]"]
  node_models["Content models"]
  node_notes_ui["Notes interface<br/>[NoteScreen.kt]"]
  node_vault_ui["Clipboard vault<br/>[VaultScreen.kt]"]
  node_backup["Vault backup codec"]
end

subgraph group_editor["Editing and files"]
  node_editor_vm["Editor state<br/>[EditorViewModel.kt]"]
  node_editor_ui["Editor interface<br/>[EditorScreen.kt]"]
  node_native_editor["Native text editor"]
  node_file_manager["Document files<br/>[FileManager.kt]"]
end

subgraph group_ai["AI assistance"]
  node_ai_repo["AI coordinator<br/>[AiRepository.kt]"]
  node_ai_resolver["Provider resolver"]
  node_provider_factory["Provider factory<br/>[ProviderFactory.kt]"]
  node_gemini["Gemini adapter<br/>[GeminiAdapter.kt]"]
  node_vercel["Vercel adapter<br/>[VercelAdapter.kt]"]
  node_ai_service["AI generation API<br/>[generate.ts]"]
end

subgraph group_settings["Settings and security"]
  node_settings_ui["Settings interface<br/>[SettingsScreen.kt]"]
  node_settings_vm["Settings state"]
  node_settings_store[("Preferences store")]
  node_secure_keys["Secure API keys"]
end

node_user(("User"))
node_external_ai(("AI provider"))

node_user -->|"opens"| node_main
node_main -->|"initializes"| node_database
node_main -->|"initializes"| node_settings_store
node_main -->|"creates"| node_clipboard_repo
node_main -->|"configures"| node_capture_notify
node_user -->|"starts capture"| node_capture_notify
node_capture_notify -->|"launches"| node_capture
node_tile -->|"launches"| node_capture
node_capture -->|"saves text"| node_clipboard_repo
node_capture -->|"opens"| node_database
node_clipboard_repo -->|"reads and writes"| node_clipboard_dao
node_database -->|"provides"| node_clipboard_dao
node_database -->|"provides"| node_note_dao
node_database -->|"provides"| node_topic_dao
node_database -->|"stores"| node_models
node_main -->|"shows"| node_notes_ui
node_main -.->|"shows"| node_vault_ui
node_main -->|"shows"| node_editor_ui
node_editor_ui -.->|"uses"| node_editor_vm
node_editor_vm -.->|"controls"| node_native_editor
node_editor_vm -.->|"uses"| node_file_manager
node_main -->|"uses"| node_backup
node_main -->|"shows"| node_settings_ui
node_settings_ui -->|"uses"| node_settings_vm
node_main -->|"creates"| node_settings_vm
node_ai_repo -->|"reads settings"| node_settings_store
node_ai_repo -->|"resolves provider"| node_ai_resolver
node_ai_repo -->|"constructs providers"| node_provider_factory
node_ai_resolver -.->|"selects"| node_gemini
node_ai_resolver -.->|"selects"| node_vercel
node_gemini -->|"reads keys"| node_secure_keys
node_gemini -.->|"requests generation"| node_external_ai
node_vercel -.->|"requests generation"| node_ai_service

click node_main "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/MainActivity.kt"
click node_capture "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/service/TransparentCaptureActivity.kt"
click node_capture_notify "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/service/CaptureNotificationManager.kt"
click node_tile "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/service/ClipboardTileService.kt"
click node_clipboard_repo "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/data/repository/ClipboardRepository.kt"
click node_database "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/data/local/AppDatabase.kt"
click node_clipboard_dao "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/data/local/ClipboardDao.kt"
click node_note_dao "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/data/local/NoteDao.kt"
click node_topic_dao "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/data/local/TopicDao.kt"
click node_models "https://github.com/antony-collika/clipnest/tree/Draft/app/src/main/java/com/clipnest/data/model"
click node_notes_ui "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ui/note/NoteScreen.kt"
click node_vault_ui "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ui/vault/VaultScreen.kt"
click node_editor_vm "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ui/editor/EditorViewModel.kt"
click node_editor_ui "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ui/editor/EditorScreen.kt"
click node_native_editor "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ui/editor/NativeEditorView.kt"
click node_file_manager "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/data/local/FileManager.kt"
click node_backup "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/data/repository/VaultBackupCodec.kt"
click node_settings_ui "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ui/settings/SettingsScreen.kt"
click node_settings_vm "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ui/settings/SettingsViewModel.kt"
click node_settings_store "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/data/local/SettingsDataStore.kt"
click node_secure_keys "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/security/SecureApiKeyStore.kt"
click node_ai_repo "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/data/repository/AiRepository.kt"
click node_ai_resolver "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ai/AiProviderResolver.kt"
click node_provider_factory "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ai/ProviderFactory.kt"
click node_gemini "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ai/GeminiAdapter.kt"
click node_vercel "https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ai/VercelAdapter.kt"
click node_ai_service "https://github.com/antony-collika/clipnest/blob/Draft/api/ai/generate.ts"

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_main,node_capture,node_capture_notify,node_tile,node_user toneBlue
class node_clipboard_repo,node_database,node_clipboard_dao,node_note_dao,node_topic_dao,node_models,node_notes_ui,node_vault_ui,node_backup toneAmber
class node_editor_vm,node_editor_ui,node_native_editor,node_file_manager toneMint
class node_ai_repo,node_ai_resolver,node_provider_factory,node_gemini,node_vercel,node_ai_service toneRose
class node_settings_ui,node_settings_vm,node_settings_store,node_secure_keys,node_external_ai toneIndigo
```

## Components

### App entry and capture

- [App navigation](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/MainActivity.kt): `app/src/main/java/com/clipnest/MainActivity.kt`
- [Clipboard capture](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/service/TransparentCaptureActivity.kt): `app/src/main/java/com/clipnest/service/TransparentCaptureActivity.kt`
- [Capture notification](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/service/CaptureNotificationManager.kt): `app/src/main/java/com/clipnest/service/CaptureNotificationManager.kt`
- [Quick Settings tile](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/service/ClipboardTileService.kt): `app/src/main/java/com/clipnest/service/ClipboardTileService.kt`

### Clipboard and notes

- [Clipboard repository](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/data/repository/ClipboardRepository.kt): `app/src/main/java/com/clipnest/data/repository/ClipboardRepository.kt`
- [Local database](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/data/local/AppDatabase.kt): `app/src/main/java/com/clipnest/data/local/AppDatabase.kt`
- [Clipboard data access](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/data/local/ClipboardDao.kt): `app/src/main/java/com/clipnest/data/local/ClipboardDao.kt`
- [Note data access](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/data/local/NoteDao.kt): `app/src/main/java/com/clipnest/data/local/NoteDao.kt`
- [Topic data access](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/data/local/TopicDao.kt): `app/src/main/java/com/clipnest/data/local/TopicDao.kt`
- [Content models](https://github.com/antony-collika/clipnest/tree/Draft/app/src/main/java/com/clipnest/data/model): `app/src/main/java/com/clipnest/data/model`
- [Notes interface](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ui/note/NoteScreen.kt): `app/src/main/java/com/clipnest/ui/note/NoteScreen.kt`
- [Clipboard vault](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ui/vault/VaultScreen.kt): `app/src/main/java/com/clipnest/ui/vault/VaultScreen.kt`
- [Vault backup codec](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/data/repository/VaultBackupCodec.kt): `app/src/main/java/com/clipnest/data/repository/VaultBackupCodec.kt`

### Editing and files

- [Editor state](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ui/editor/EditorViewModel.kt): `app/src/main/java/com/clipnest/ui/editor/EditorViewModel.kt`
- [Editor interface](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ui/editor/EditorScreen.kt): `app/src/main/java/com/clipnest/ui/editor/EditorScreen.kt`
- [Native text editor](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ui/editor/NativeEditorView.kt): `app/src/main/java/com/clipnest/ui/editor/NativeEditorView.kt`
- [Document files](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/data/local/FileManager.kt): `app/src/main/java/com/clipnest/data/local/FileManager.kt`

### AI assistance

- [AI coordinator](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/data/repository/AiRepository.kt): `app/src/main/java/com/clipnest/data/repository/AiRepository.kt`
- [Provider resolver](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ai/AiProviderResolver.kt): `app/src/main/java/com/clipnest/ai/AiProviderResolver.kt`
- [Provider factory](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ai/ProviderFactory.kt): `app/src/main/java/com/clipnest/ai/ProviderFactory.kt`
- [Gemini adapter](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ai/GeminiAdapter.kt): `app/src/main/java/com/clipnest/ai/GeminiAdapter.kt`
- [Vercel adapter](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ai/VercelAdapter.kt): `app/src/main/java/com/clipnest/ai/VercelAdapter.kt`
- [AI generation API](https://github.com/antony-collika/clipnest/blob/Draft/api/ai/generate.ts): `api/ai/generate.ts`

### Settings and security

- [Settings interface](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ui/settings/SettingsScreen.kt): `app/src/main/java/com/clipnest/ui/settings/SettingsScreen.kt`
- [Settings state](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/ui/settings/SettingsViewModel.kt): `app/src/main/java/com/clipnest/ui/settings/SettingsViewModel.kt`
- [Preferences store](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/data/local/SettingsDataStore.kt): `app/src/main/java/com/clipnest/data/local/SettingsDataStore.kt`
- [Secure API keys](https://github.com/antony-collika/clipnest/blob/Draft/app/src/main/java/com/clipnest/security/SecureApiKeyStore.kt): `app/src/main/java/com/clipnest/security/SecureApiKeyStore.kt`

### Other components

- **User**
- **AI provider**

## Connections

- User → App navigation: opens (evidence: `app/src/main/java/com/clipnest/MainActivity.kt`)
- App navigation → Local database: initializes (evidence: `app/src/main/java/com/clipnest/MainActivity.kt`)
- App navigation → Preferences store: initializes (evidence: `app/src/main/java/com/clipnest/MainActivity.kt`)
- App navigation → Clipboard repository: creates (evidence: `app/src/main/java/com/clipnest/MainActivity.kt`)
- App navigation → Capture notification: configures (evidence: `app/src/main/java/com/clipnest/MainActivity.kt`)
- User → Capture notification: starts capture (evidence: `app/src/main/java/com/clipnest/service/CaptureNotificationManager.kt`)
- Capture notification → Clipboard capture: launches (evidence: `app/src/main/java/com/clipnest/service/CaptureNotificationManager.kt`)
- Quick Settings tile → Clipboard capture: launches (evidence: `app/src/main/java/com/clipnest/service/ClipboardTileService.kt`)
- Clipboard capture → Clipboard repository: saves text (evidence: `app/src/main/java/com/clipnest/service/TransparentCaptureActivity.kt`)
- Clipboard capture → Local database: opens (evidence: `app/src/main/java/com/clipnest/service/TransparentCaptureActivity.kt`)
- Clipboard repository → Clipboard data access: reads and writes (evidence: `app/src/main/java/com/clipnest/data/repository/ClipboardRepository.kt`)
- Local database → Clipboard data access: provides (evidence: `app/src/main/java/com/clipnest/data/local/AppDatabase.kt`)
- Local database → Note data access: provides (evidence: `app/src/main/java/com/clipnest/data/local/AppDatabase.kt`)
- Local database → Topic data access: provides (evidence: `app/src/main/java/com/clipnest/data/local/AppDatabase.kt`)
- Local database → Content models: stores (evidence: `app/src/main/java/com/clipnest/data/local/AppDatabase.kt`)
- App navigation → Notes interface: shows (evidence: `app/src/main/java/com/clipnest/MainActivity.kt`)
- App navigation → Clipboard vault: shows (evidence: `app/src/main/java/com/clipnest/MainActivity.kt`)
- App navigation → Editor interface: shows (evidence: `app/src/main/java/com/clipnest/MainActivity.kt`)
- Editor interface → Editor state: uses
- Editor state → Native text editor: controls
- Editor state → Document files: uses
- App navigation → Vault backup codec: uses (evidence: `app/src/main/java/com/clipnest/MainActivity.kt`)
- App navigation → Settings interface: shows (evidence: `app/src/main/java/com/clipnest/MainActivity.kt`)
- Settings interface → Settings state: uses (evidence: `app/src/main/java/com/clipnest/ui/settings/SettingsScreen.kt`)
- App navigation → Settings state: creates (evidence: `app/src/main/java/com/clipnest/MainActivity.kt`)
- AI coordinator → Preferences store: reads settings (evidence: `app/src/main/java/com/clipnest/data/repository/AiRepository.kt`)
- AI coordinator → Provider resolver: resolves provider (evidence: `app/src/main/java/com/clipnest/data/repository/AiRepository.kt`)
- AI coordinator → Provider factory: constructs providers (evidence: `app/src/main/java/com/clipnest/data/repository/AiRepository.kt`)
- Provider resolver → Gemini adapter: selects
- Provider resolver → Vercel adapter: selects
- Gemini adapter → Secure API keys: reads keys (evidence: `app/src/main/java/com/clipnest/ai/GeminiAdapter.kt`)
- Gemini adapter → AI provider: requests generation
- Vercel adapter → AI generation API: requests generation
