# meetvasanth-rgb/vaulted architecture

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

- Interactive diagram: https://gitdiagram.com/meetvasanth-rgb/vaulted
- Repository: https://github.com/meetvasanth-rgb/vaulted

## Overview

Vaultlix is a private messaging product with browser and mobile clients backed by a Node.js server. The documented core journey is to create or join a secret-code room, exchange encrypted messages, and erase the room when someone leaves; recovery checkpoints preserve encrypted state. The source index and excerpts also show account/private-number services and native calling. Mobile details are unevenly sampled, so the graph omits unverified links rather than inferring a complete call or persistence flow.

Main entry points: [`server/index.js`](https://github.com/meetvasanth-rgb/vaulted/blob/main/server/index.js) (HTTP and WebSocket server), [`mobile/android/app/src/main/java/com/vaultlix/app/MainActivity.java`](https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/android/app/src/main/java/com/vaultlix/app/MainActivity.java) (Android host), [`mobile/android/app/src/main/java/com/vaultlix/app/NativeWebRtcCallEngine.java`](https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/android/app/src/main/java/com/vaultlix/app/NativeWebRtcCallEngine.java) (Android WebRTC engine), [`mobile/ios/App/App/AppDelegate.swift`](https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/ios/App/App/AppDelegate.swift) (iOS host)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["Messaging clients"]
  node_web["Web messenger<br/>[index.html]"]
  node_admin["Admin dashboard<br/>[admin.js]"]
end

subgraph group_server["Server services"]
  node_serverentry["HTTP and WebSocket server<br/>[index.js]"]
  node_roomflow["Room messaging<br/>[index.js]"]
  node_privatepolicy["Private-number policy"]
  node_invite["Call invite state"]
  node_tempnotify["Temporary-room notices"]
end

subgraph group_storage["Persistence"]
  node_pg[("PostgreSQL store<br/>[postgres.js]")]
end

subgraph group_mobile["Native calling"]
  node_android["Android host<br/>[MainActivity.java]"]
  node_ios["iOS host<br/>[AppDelegate.swift]"]
  node_androidpush["Push call dispatch"]
  node_incoming["Incoming call screen"]
  node_locked["Locked call screen"]
  node_nativecall["Native call UI"]
  node_androidengine["Android WebRTC engine"]
  node_androidroom[("Android call room store")]
  node_iosscene["iOS call bridge"]
  node_iosengine["iOS WebRTC engine"]
  node_iosroom[("iOS call room store")]
  node_androidsecure[("Android secure messages")]
  node_iossecure[("iOS secure messages")]
end

node_person(("Conversation participants"))

node_person -->|"uses"| node_web
node_web -->|"connects to"| node_serverentry
node_serverentry -->|"routes"| node_roomflow
node_roomflow -.->|"persists recovery state"| node_pg
node_serverentry -->|"uses"| node_pg
node_serverentry -->|"uses"| node_privatepolicy
node_serverentry -->|"uses"| node_invite
node_serverentry -->|"uses"| node_tempnotify
node_person -.->|"uses"| node_android
node_person -.->|"uses"| node_ios
node_android -->|"initializes"| node_androidengine
node_android -->|"uses"| node_androidsecure
node_android -->|"uses"| node_androidroom
node_androidpush -->|"prepares calls"| node_androidengine
node_androidpush -->|"opens"| node_incoming
node_incoming -->|"opens"| node_nativecall
node_incoming -->|"opens"| node_locked
node_nativecall -->|"uses"| node_androidengine
node_androidengine -->|"uses"| node_androidroom
node_ios -->|"uses"| node_iosengine
node_ios -->|"configures"| node_iosscene
node_iosscene -->|"stores messages"| node_iossecure
node_iosscene -->|"uses"| node_iosroom

click node_web "https://github.com/meetvasanth-rgb/vaulted/blob/main/client/index.html"
click node_admin "https://github.com/meetvasanth-rgb/vaulted/blob/main/client/admin.js"
click node_android "https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/android/app/src/main/java/com/vaultlix/app/MainActivity.java"
click node_ios "https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/ios/App/App/AppDelegate.swift"
click node_serverentry "https://github.com/meetvasanth-rgb/vaulted/blob/main/server/index.js"
click node_roomflow "https://github.com/meetvasanth-rgb/vaulted/blob/main/server/index.js"
click node_privatepolicy "https://github.com/meetvasanth-rgb/vaulted/blob/main/server/private-number-policy.js"
click node_invite "https://github.com/meetvasanth-rgb/vaulted/blob/main/server/call-invite-state.js"
click node_tempnotify "https://github.com/meetvasanth-rgb/vaulted/blob/main/server/temporary-vault-notification.js"
click node_pg "https://github.com/meetvasanth-rgb/vaulted/blob/main/server/postgres.js"
click node_androidpush "https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/android/app/src/main/java/com/vaultlix/app/VaultlixMessagingService.java"
click node_incoming "https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/android/app/src/main/java/com/vaultlix/app/IncomingCallActivity.java"
click node_locked "https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/android/app/src/main/java/com/vaultlix/app/LockedCallActivity.java"
click node_nativecall "https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/android/app/src/main/java/com/vaultlix/app/NativeCallActivity.java"
click node_androidengine "https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/android/app/src/main/java/com/vaultlix/app/NativeWebRtcCallEngine.java"
click node_androidroom "https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/android/app/src/main/java/com/vaultlix/app/NativeCallRoomStore.java"
click node_iosscene "https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/ios/App/App/SceneDelegate.swift"
click node_iosengine "https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/ios/App/App/NativeWebRTCCallEngine.swift"
click node_iosroom "https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/ios/App/App/NativeCallRoomStore.swift"
click node_androidsecure "https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/android/app/src/main/java/com/vaultlix/app/SecureMessageStore.java"
click node_iossecure "https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/ios/App/App/SecureMessageStore.swift"

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_web,node_admin toneBlue
class node_serverentry,node_roomflow,node_privatepolicy,node_invite,node_tempnotify toneAmber
class node_pg toneMint
class node_android,node_ios,node_androidpush,node_incoming,node_locked,node_nativecall,node_androidengine,node_androidroom,node_iosscene,node_iosengine,node_iosroom,node_androidsecure,node_iossecure toneRose
class node_person toneIndigo
```

## Components

### Messaging clients

- [Web messenger](https://github.com/meetvasanth-rgb/vaulted/blob/main/client/index.html): `client/index.html`
- [Admin dashboard](https://github.com/meetvasanth-rgb/vaulted/blob/main/client/admin.js): `client/admin.js`

### Server services

- [HTTP and WebSocket server](https://github.com/meetvasanth-rgb/vaulted/blob/main/server/index.js): `server/index.js`
- [Room messaging](https://github.com/meetvasanth-rgb/vaulted/blob/main/server/index.js): `server/index.js`
- [Private-number policy](https://github.com/meetvasanth-rgb/vaulted/blob/main/server/private-number-policy.js): `server/private-number-policy.js`
- [Call invite state](https://github.com/meetvasanth-rgb/vaulted/blob/main/server/call-invite-state.js): `server/call-invite-state.js`
- [Temporary-room notices](https://github.com/meetvasanth-rgb/vaulted/blob/main/server/temporary-vault-notification.js): `server/temporary-vault-notification.js`

### Persistence

- [PostgreSQL store](https://github.com/meetvasanth-rgb/vaulted/blob/main/server/postgres.js): `server/postgres.js`

### Native calling

- [Android host](https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/android/app/src/main/java/com/vaultlix/app/MainActivity.java): `mobile/android/app/src/main/java/com/vaultlix/app/MainActivity.java`
- [iOS host](https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/ios/App/App/AppDelegate.swift): `mobile/ios/App/App/AppDelegate.swift`
- [Push call dispatch](https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/android/app/src/main/java/com/vaultlix/app/VaultlixMessagingService.java): `mobile/android/app/src/main/java/com/vaultlix/app/VaultlixMessagingService.java`
- [Incoming call screen](https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/android/app/src/main/java/com/vaultlix/app/IncomingCallActivity.java): `mobile/android/app/src/main/java/com/vaultlix/app/IncomingCallActivity.java`
- [Locked call screen](https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/android/app/src/main/java/com/vaultlix/app/LockedCallActivity.java): `mobile/android/app/src/main/java/com/vaultlix/app/LockedCallActivity.java`
- [Native call UI](https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/android/app/src/main/java/com/vaultlix/app/NativeCallActivity.java): `mobile/android/app/src/main/java/com/vaultlix/app/NativeCallActivity.java`
- [Android WebRTC engine](https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/android/app/src/main/java/com/vaultlix/app/NativeWebRtcCallEngine.java): `mobile/android/app/src/main/java/com/vaultlix/app/NativeWebRtcCallEngine.java`
- [Android call room store](https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/android/app/src/main/java/com/vaultlix/app/NativeCallRoomStore.java): `mobile/android/app/src/main/java/com/vaultlix/app/NativeCallRoomStore.java`
- [iOS call bridge](https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/ios/App/App/SceneDelegate.swift): `mobile/ios/App/App/SceneDelegate.swift`
- [iOS WebRTC engine](https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/ios/App/App/NativeWebRTCCallEngine.swift): `mobile/ios/App/App/NativeWebRTCCallEngine.swift`
- [iOS call room store](https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/ios/App/App/NativeCallRoomStore.swift): `mobile/ios/App/App/NativeCallRoomStore.swift`
- [Android secure messages](https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/android/app/src/main/java/com/vaultlix/app/SecureMessageStore.java): `mobile/android/app/src/main/java/com/vaultlix/app/SecureMessageStore.java`
- [iOS secure messages](https://github.com/meetvasanth-rgb/vaulted/blob/main/mobile/ios/App/App/SecureMessageStore.swift): `mobile/ios/App/App/SecureMessageStore.swift`

### Other components

- **Conversation participants**

## Connections

- Conversation participants → Web messenger: uses (evidence: `README.md`)
- Web messenger → HTTP and WebSocket server: connects to (evidence: `README.md`)
- HTTP and WebSocket server → Room messaging: routes (evidence: `README.md`)
- Room messaging → PostgreSQL store: persists recovery state (evidence: `server/index.js`)
- HTTP and WebSocket server → PostgreSQL store: uses (evidence: `server/index.js`)
- HTTP and WebSocket server → Private-number policy: uses (evidence: `server/index.js`)
- HTTP and WebSocket server → Call invite state: uses (evidence: `server/index.js`)
- HTTP and WebSocket server → Temporary-room notices: uses (evidence: `server/index.js`)
- Conversation participants → Android host: uses
- Conversation participants → iOS host: uses
- Android host → Android WebRTC engine: initializes (evidence: `mobile/android/app/src/main/java/com/vaultlix/app/MainActivity.java`)
- Android host → Android secure messages: uses (evidence: `mobile/android/app/src/main/java/com/vaultlix/app/MainActivity.java`)
- Android host → Android call room store: uses (evidence: `mobile/android/app/src/main/java/com/vaultlix/app/MainActivity.java`)
- Push call dispatch → Android WebRTC engine: prepares calls (evidence: `mobile/android/app/src/main/java/com/vaultlix/app/VaultlixMessagingService.java`)
- Push call dispatch → Incoming call screen: opens (evidence: `mobile/android/app/src/main/java/com/vaultlix/app/VaultlixMessagingService.java`)
- Incoming call screen → Native call UI: opens (evidence: `mobile/android/app/src/main/java/com/vaultlix/app/IncomingCallActivity.java`)
- Incoming call screen → Locked call screen: opens (evidence: `mobile/android/app/src/main/java/com/vaultlix/app/IncomingCallActivity.java`)
- Native call UI → Android WebRTC engine: uses (evidence: `mobile/android/app/src/main/java/com/vaultlix/app/NativeCallActivity.java`)
- Android WebRTC engine → Android call room store: uses (evidence: `mobile/android/app/src/main/java/com/vaultlix/app/NativeWebRtcCallEngine.java`)
- iOS host → iOS WebRTC engine: uses (evidence: `mobile/ios/App/App/AppDelegate.swift`)
- iOS host → iOS call bridge: configures (evidence: `mobile/ios/App/App/AppDelegate.swift`)
- iOS call bridge → iOS secure messages: stores messages (evidence: `mobile/ios/App/App/SceneDelegate.swift`)
- iOS call bridge → iOS call room store: uses (evidence: `mobile/ios/App/App/SceneDelegate.swift`)
