# chaniug/vaultix architecture

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

- Interactive diagram: https://gitdiagram.com/chaniug/vaultix
- Repository: https://github.com/chaniug/vaultix

## Overview

Vaultix is an Android password manager that unifies Bitwarden cloud vaults and local or cloud-hosted KeePass KDBX files behind shared vault and item models. The main workflow is to add or unlock a vault, browse and manage credentials, and sync changes through the appropriate provider; Android autofill and passkey flows expose credentials to other apps. The README documents several capabilities whose implementation was not sampled, so those branches are represented at their supported directory paths. Edges are limited to README statements and visible source references; unsampled wiring is omitted.

Main entry points: [`app/src/main/java/io/vaultix/vaultix/ui`](https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/ui) (Vault UI), [`app/src/main/java/io/vaultix/vaultix/autofill/VaultixAutofillService.kt`](https://github.com/chaniug/vaultix/blob/main/app/src/main/java/io/vaultix/vaultix/autofill/VaultixAutofillService.kt) (Autofill service), [`data/repository/src/main/java/io/vaultix/data/repository/kdbx`](https://github.com/chaniug/vaultix/tree/main/data/repository/src/main/java/io/vaultix/data/repository/kdbx) (KDBX cloud sync), [`app/src/main/java/io/vaultix/vaultix/ui/items`](https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/ui/items) (Credential management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_vaults["Vault lifecycle"]
  node_appui["Vault UI"]
  node_addvault["Add vault"]
  node_unlock["Unlock flow"]
  node_vaultrepo["Vault repository<br/>[VaultRepository.kt]"]
  node_session["Vault sessions"]
end

subgraph group_providers["Vault providers"]
  node_bw["Bitwarden sync"]
  node_bwlogin["Bitwarden login"]
  node_kdbx["KDBX engine<br/>[KdbxEngine.kt]"]
  node_cloudsync["KDBX cloud sync"]
  node_onedrive["OneDrive source"]
  node_webdav["WebDAV source"]
end

subgraph group_credentials["Credential experience"]
  node_items["Credential management"]
  node_detail["Credential details"]
  node_totp["OTP codes"]
  node_cards["Card wallet"]
end

subgraph group_platform["Android integration"]
  node_autofill["Autofill service"]
  node_candidates["Fill candidates"]
  node_fillassist["Fill assistance"]
  node_passkeys["Passkey provider"]
  node_savecred["Save credentials"]
end

subgraph group_foundation["Shared foundations"]
  node_crypto["Cryptography"]
  node_database[("Room cache<br/>[VaultixDatabase.kt]")]
  node_preferences[("Preferences")]
  node_model["Shared item model<br/>[VaultItem.kt]"]
end

node_user(("Vault user"))

node_user -->|"uses"| node_appui
node_appui -->|"adds vaults"| node_addvault
node_appui -->|"opens vaults"| node_unlock
node_appui -->|"manages lifecycle"| node_vaultrepo
node_vaultrepo -.->|"tracks sessions"| node_session
node_appui -->|"manages entries"| node_items
node_items -.->|"opens details"| node_detail
node_appui -->|"shows codes"| node_totp
node_appui -->|"manages cards"| node_cards
node_user -->|"requests fill"| node_autofill
node_autofill -->|"gets candidates"| node_candidates
node_autofill -->|"loads rules"| node_fillassist
node_autofill -->|"offers save"| node_savecred
node_user -->|"uses passkeys"| node_passkeys
node_user -->|"authenticates"| node_bwlogin
node_bwlogin -->|"derives keys"| node_crypto
node_bw -->|"stores sync data"| node_database
node_user -->|"opens KDBX"| node_kdbx
node_user -->|"syncs KDBX"| node_cloudsync
node_cloudsync -.->|"uses source"| node_onedrive
node_cloudsync -.->|"uses source"| node_webdav
node_kdbx -.->|"protects vault"| node_crypto
node_items -->|"uses shared model"| node_model
node_autofill -->|"reads settings"| node_preferences

click node_appui "https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/ui"
click node_addvault "https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/ui/addvault"
click node_unlock "https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/ui/unlock"
click node_vaultrepo "https://github.com/chaniug/vaultix/blob/main/domain/src/main/java/io/vaultix/domain/VaultRepository.kt"
click node_session "https://github.com/chaniug/vaultix/blob/main/data/repository/src/main/java/io/vaultix/data/repository/VaultSessionManager.kt"
click node_items "https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/ui/items"
click node_detail "https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/ui/detail"
click node_totp "https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/ui/totp"
click node_cards "https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/ui/cardwallet"
click node_autofill "https://github.com/chaniug/vaultix/blob/main/app/src/main/java/io/vaultix/vaultix/autofill/VaultixAutofillService.kt"
click node_candidates "https://github.com/chaniug/vaultix/blob/main/app/src/main/java/io/vaultix/vaultix/autofill/engine/AutofillCandidateSource.kt"
click node_fillassist "https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/autofill/fillassist"
click node_passkeys "https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/passkey"
click node_savecred "https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/autofill/save"
click node_bw "https://github.com/chaniug/vaultix/blob/main/data/bitwarden/src/main/java/io/vaultix/data/bitwarden/sync/BitwardenSyncService.kt"
click node_bwlogin "https://github.com/chaniug/vaultix/blob/main/data/bitwarden/src/main/java/io/vaultix/data/bitwarden/auth/BitwardenAuthRepository.kt"
click node_kdbx "https://github.com/chaniug/vaultix/blob/main/data/kdbx/src/main/java/io/vaultix/data/kdbx/KdbxEngine.kt"
click node_cloudsync "https://github.com/chaniug/vaultix/tree/main/data/repository/src/main/java/io/vaultix/data/repository/kdbx"
click node_onedrive "https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/remote/onedrive"
click node_webdav "https://github.com/chaniug/vaultix/blob/main/data/repository/src/main/java/io/vaultix/data/repository/kdbx/WebDavKdbxFileSource.kt"
click node_crypto "https://github.com/chaniug/vaultix/tree/main/core/crypto/src/main/java/io/vaultix/crypto"
click node_database "https://github.com/chaniug/vaultix/blob/main/core/database/src/main/java/io/vaultix/database/VaultixDatabase.kt"
click node_preferences "https://github.com/chaniug/vaultix/blob/main/core/datastore/src/main/java/io/vaultix/datastore/VaultixPreferences.kt"
click node_model "https://github.com/chaniug/vaultix/blob/main/core/model/src/main/java/io/vaultix/model/VaultItem.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_appui,node_addvault,node_unlock,node_vaultrepo,node_session,node_user toneBlue
class node_bw,node_bwlogin,node_kdbx,node_cloudsync,node_onedrive,node_webdav toneAmber
class node_items,node_detail,node_totp,node_cards toneMint
class node_autofill,node_candidates,node_fillassist,node_passkeys,node_savecred toneRose
class node_crypto,node_database,node_preferences,node_model toneIndigo
```

## Components

### Vault lifecycle

- [Vault UI](https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/ui): `app/src/main/java/io/vaultix/vaultix/ui`
- [Add vault](https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/ui/addvault): `app/src/main/java/io/vaultix/vaultix/ui/addvault`
- [Unlock flow](https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/ui/unlock): `app/src/main/java/io/vaultix/vaultix/ui/unlock`
- [Vault repository](https://github.com/chaniug/vaultix/blob/main/domain/src/main/java/io/vaultix/domain/VaultRepository.kt): `domain/src/main/java/io/vaultix/domain/VaultRepository.kt`
- [Vault sessions](https://github.com/chaniug/vaultix/blob/main/data/repository/src/main/java/io/vaultix/data/repository/VaultSessionManager.kt): `data/repository/src/main/java/io/vaultix/data/repository/VaultSessionManager.kt`

### Vault providers

- [Bitwarden sync](https://github.com/chaniug/vaultix/blob/main/data/bitwarden/src/main/java/io/vaultix/data/bitwarden/sync/BitwardenSyncService.kt): `data/bitwarden/src/main/java/io/vaultix/data/bitwarden/sync/BitwardenSyncService.kt`
- [Bitwarden login](https://github.com/chaniug/vaultix/blob/main/data/bitwarden/src/main/java/io/vaultix/data/bitwarden/auth/BitwardenAuthRepository.kt): `data/bitwarden/src/main/java/io/vaultix/data/bitwarden/auth/BitwardenAuthRepository.kt`
- [KDBX engine](https://github.com/chaniug/vaultix/blob/main/data/kdbx/src/main/java/io/vaultix/data/kdbx/KdbxEngine.kt): `data/kdbx/src/main/java/io/vaultix/data/kdbx/KdbxEngine.kt`
- [KDBX cloud sync](https://github.com/chaniug/vaultix/tree/main/data/repository/src/main/java/io/vaultix/data/repository/kdbx): `data/repository/src/main/java/io/vaultix/data/repository/kdbx`
- [OneDrive source](https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/remote/onedrive): `app/src/main/java/io/vaultix/vaultix/remote/onedrive`
- [WebDAV source](https://github.com/chaniug/vaultix/blob/main/data/repository/src/main/java/io/vaultix/data/repository/kdbx/WebDavKdbxFileSource.kt): `data/repository/src/main/java/io/vaultix/data/repository/kdbx/WebDavKdbxFileSource.kt`

### Credential experience

- [Credential management](https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/ui/items): `app/src/main/java/io/vaultix/vaultix/ui/items`
- [Credential details](https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/ui/detail): `app/src/main/java/io/vaultix/vaultix/ui/detail`
- [OTP codes](https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/ui/totp): `app/src/main/java/io/vaultix/vaultix/ui/totp`
- [Card wallet](https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/ui/cardwallet): `app/src/main/java/io/vaultix/vaultix/ui/cardwallet`

### Android integration

- [Autofill service](https://github.com/chaniug/vaultix/blob/main/app/src/main/java/io/vaultix/vaultix/autofill/VaultixAutofillService.kt): `app/src/main/java/io/vaultix/vaultix/autofill/VaultixAutofillService.kt`
- [Fill candidates](https://github.com/chaniug/vaultix/blob/main/app/src/main/java/io/vaultix/vaultix/autofill/engine/AutofillCandidateSource.kt): `app/src/main/java/io/vaultix/vaultix/autofill/engine/AutofillCandidateSource.kt`
- [Fill assistance](https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/autofill/fillassist): `app/src/main/java/io/vaultix/vaultix/autofill/fillassist`
- [Passkey provider](https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/passkey): `app/src/main/java/io/vaultix/vaultix/passkey`
- [Save credentials](https://github.com/chaniug/vaultix/tree/main/app/src/main/java/io/vaultix/vaultix/autofill/save): `app/src/main/java/io/vaultix/vaultix/autofill/save`

### Shared foundations

- [Cryptography](https://github.com/chaniug/vaultix/tree/main/core/crypto/src/main/java/io/vaultix/crypto): `core/crypto/src/main/java/io/vaultix/crypto`
- [Room cache](https://github.com/chaniug/vaultix/blob/main/core/database/src/main/java/io/vaultix/database/VaultixDatabase.kt): `core/database/src/main/java/io/vaultix/database/VaultixDatabase.kt`
- [Preferences](https://github.com/chaniug/vaultix/blob/main/core/datastore/src/main/java/io/vaultix/datastore/VaultixPreferences.kt): `core/datastore/src/main/java/io/vaultix/datastore/VaultixPreferences.kt`
- [Shared item model](https://github.com/chaniug/vaultix/blob/main/core/model/src/main/java/io/vaultix/model/VaultItem.kt): `core/model/src/main/java/io/vaultix/model/VaultItem.kt`

### Other components

- **Vault user**

## Connections

- Vault user → Vault UI: uses (evidence: `README.md`)
- Vault UI → Add vault: adds vaults (evidence: `README.md`)
- Vault UI → Unlock flow: opens vaults (evidence: `README.md`)
- Vault UI → Vault repository: manages lifecycle (evidence: `README.md`)
- Vault repository → Vault sessions: tracks sessions
- Vault UI → Credential management: manages entries (evidence: `README.md`)
- Credential management → Credential details: opens details
- Vault UI → OTP codes: shows codes (evidence: `README.md`)
- Vault UI → Card wallet: manages cards (evidence: `README.md`)
- Vault user → Autofill service: requests fill (evidence: `README.md`)
- Autofill service → Fill candidates: gets candidates (evidence: `app/src/main/java/io/vaultix/vaultix/autofill/VaultixAutofillService.kt`)
- Autofill service → Fill assistance: loads rules (evidence: `app/src/main/java/io/vaultix/vaultix/autofill/VaultixAutofillService.kt`)
- Autofill service → Save credentials: offers save (evidence: `app/src/main/java/io/vaultix/vaultix/autofill/VaultixAutofillService.kt`)
- Vault user → Passkey provider: uses passkeys (evidence: `README.md`)
- Vault user → Bitwarden login: authenticates (evidence: `README.md`)
- Bitwarden login → Cryptography: derives keys (evidence: `data/bitwarden/src/main/java/io/vaultix/data/bitwarden/auth/BitwardenAuthRepository.kt`)
- Bitwarden sync → Room cache: stores sync data (evidence: `data/bitwarden/src/main/java/io/vaultix/data/bitwarden/sync/BitwardenSyncService.kt`)
- Vault user → KDBX engine: opens KDBX (evidence: `README.md`)
- Vault user → KDBX cloud sync: syncs KDBX (evidence: `README.md`)
- KDBX cloud sync → OneDrive source: uses source
- KDBX cloud sync → WebDAV source: uses source
- KDBX engine → Cryptography: protects vault
- Credential management → Shared item model: uses shared model (evidence: `README.md`)
- Autofill service → Preferences: reads settings (evidence: `app/src/main/java/io/vaultix/vaultix/autofill/VaultixAutofillService.kt`)
