# notsubhan77/fireupp-backend architecture

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

- Interactive diagram: https://gitdiagram.com/notsubhan77/fireupp-backend
- Repository: https://github.com/notsubhan77/fireupp-backend

## Overview

Fireupp is an encrypted collaboration product with a desktop client, Android companion, and Express/WebSocket backend. The main user workflow is to use the client to authenticate, load chats and workspace data, then message, call, share a screen, or post a status; backend routes and realtime fan-out serve client requests and persist domain data. README-described broadcasts and cloud-vault features are retained as distinct branches, though their detailed wiring is not established by the excerpts. Edges are limited to explicit README statements and shown references/calls; unsampled modules are represented by their exact directories.

Main entry points: [`desktop/src/App.jsx`](https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/src/App.jsx) (Desktop Shell), [`server.js`](https://github.com/notsubhan77/fireupp-backend/blob/main/server.js) (HTTP & Realtime Server), [`desktop/native/zovio-media/src/lib.rs`](https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/native/zovio-media/src/lib.rs) (Native Capture API), [`mobile/android/app/src/main/java/app/zovio/mobile/ZovioMediaPlugin.kt`](https://github.com/notsubhan77/fireupp-backend/blob/main/mobile/android/app/src/main/java/app/zovio/mobile/ZovioMediaPlugin.kt) (Android Media Plugin)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["Client Apps"]
  node_desktop["Desktop Shell<br/>[App.jsx]"]
  node_api["API Client<br/>[client.js]"]
  node_android["Android Companion<br/>[MainActivity.kt]"]
  node_qr["QR Scanner"]
  node_callsvc["Call Service"]
end

subgraph group_collaboration["Collaboration Features"]
  node_chatview["Messaging UI<br/>[ChatView.jsx]"]
  node_callview["Calls UI<br/>[CallView.jsx]"]
  node_sharemodal["Screen Share UI"]
  node_statusview["Status UI<br/>[StatusView.jsx]"]
  node_profile["Profile &amp; Settings<br/>[ProfileModal.jsx]"]
  node_chatlogic["Chat Domain<br/>[chat.js]"]
  node_meetinglogic["Meeting Domain<br/>[meetings.js]"]
  node_workspace["Workspace<br/>[workspace.js]"]
  node_broadcast["Broadcast Channels"]
end

subgraph group_backend["Backend Services"]
  node_crypto["Client Cryptography<br/>[crypto.js]"]
  node_backendserver["HTTP &amp; Realtime Server<br/>[server.js]"]
  node_store[("Document &amp; File Store<br/>[store.js]")]
  node_localdb[("Local Data<br/>[localdb.js]")]
  node_gdrive["Cloud Drive<br/>[gdrive.js]"]
end

subgraph group_media["Media Runtime"]
  node_native["Native Capture API<br/>[lib.rs]"]
  node_video["Video Capture<br/>[video.rs]"]
  node_audio["Audio Capture<br/>[audio.rs]"]
  node_mobilemedia["Android Media Plugin"]
end

node_user(("User"))
node_firestore[("Cloud Firestore")]

node_user -->|"uses"| node_desktop
node_desktop -->|"loads data"| node_api
node_desktop -->|"renders"| node_chatview
node_desktop -->|"renders"| node_callview
node_desktop -->|"renders"| node_statusview
node_desktop -->|"renders"| node_profile
node_callview -->|"renders"| node_sharemodal
node_api -->|"HTTP and WebSocket"| node_backendserver
node_android -->|"registers"| node_mobilemedia
node_mobilemedia -->|"references"| node_callsvc
node_mobilemedia -->|"references"| node_qr
node_backendserver -->|"persists data"| node_store
node_store -->|"syncs documents"| node_firestore
node_backendserver -->|"uses crypto"| node_crypto
node_user -->|"messages"| node_chatlogic
node_user -->|"starts meetings"| node_meetinglogic
node_user -->|"collaborates"| node_workspace
node_user -->|"follows channels"| node_broadcast
node_user -->|"stores files"| node_gdrive
node_user -.->|"uses local data"| node_localdb
node_sharemodal -.->|"may capture natively"| node_native
node_native -->|"starts capture"| node_video
node_native -->|"starts capture"| node_audio

click node_desktop "https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/src/App.jsx"
click node_api "https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/src/api/client.js"
click node_android "https://github.com/notsubhan77/fireupp-backend/blob/main/mobile/android/app/src/main/java/app/zovio/mobile/MainActivity.kt"
click node_qr "https://github.com/notsubhan77/fireupp-backend/blob/main/mobile/android/app/src/main/java/app/zovio/mobile/QrScannerActivity.kt"
click node_callsvc "https://github.com/notsubhan77/fireupp-backend/blob/main/mobile/android/app/src/main/java/app/zovio/mobile/ZovioCallService.kt"
click node_chatview "https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/src/components/ChatView.jsx"
click node_callview "https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/src/components/CallView.jsx"
click node_sharemodal "https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/src/components/DiscordScreenShareModal.jsx"
click node_statusview "https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/src/components/StatusView.jsx"
click node_profile "https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/src/components/ProfileModal.jsx"
click node_chatlogic "https://github.com/notsubhan77/fireupp-backend/blob/main/public/js/chat.js"
click node_meetinglogic "https://github.com/notsubhan77/fireupp-backend/blob/main/public/js/meetings.js"
click node_workspace "https://github.com/notsubhan77/fireupp-backend/blob/main/public/js/workspace.js"
click node_broadcast "https://github.com/notsubhan77/fireupp-backend/tree/main/public/js"
click node_crypto "https://github.com/notsubhan77/fireupp-backend/blob/main/public/js/crypto.js"
click node_backendserver "https://github.com/notsubhan77/fireupp-backend/blob/main/server.js"
click node_store "https://github.com/notsubhan77/fireupp-backend/blob/main/store.js"
click node_localdb "https://github.com/notsubhan77/fireupp-backend/blob/main/public/js/localdb.js"
click node_gdrive "https://github.com/notsubhan77/fireupp-backend/blob/main/public/js/gdrive.js"
click node_native "https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/native/zovio-media/src/lib.rs"
click node_video "https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/native/zovio-media/src/video.rs"
click node_audio "https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/native/zovio-media/src/audio.rs"
click node_mobilemedia "https://github.com/notsubhan77/fireupp-backend/blob/main/mobile/android/app/src/main/java/app/zovio/mobile/ZovioMediaPlugin.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_desktop,node_api,node_android,node_qr,node_callsvc,node_user toneBlue
class node_chatview,node_callview,node_sharemodal,node_statusview,node_profile,node_chatlogic,node_meetinglogic,node_workspace,node_broadcast,node_firestore toneAmber
class node_crypto,node_backendserver,node_store,node_localdb,node_gdrive toneMint
class node_native,node_video,node_audio,node_mobilemedia toneRose
```

## Components

### Client Apps

- [Desktop Shell](https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/src/App.jsx): `desktop/src/App.jsx`
- [API Client](https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/src/api/client.js): `desktop/src/api/client.js`
- [Android Companion](https://github.com/notsubhan77/fireupp-backend/blob/main/mobile/android/app/src/main/java/app/zovio/mobile/MainActivity.kt): `mobile/android/app/src/main/java/app/zovio/mobile/MainActivity.kt`
- [QR Scanner](https://github.com/notsubhan77/fireupp-backend/blob/main/mobile/android/app/src/main/java/app/zovio/mobile/QrScannerActivity.kt): `mobile/android/app/src/main/java/app/zovio/mobile/QrScannerActivity.kt`
- [Call Service](https://github.com/notsubhan77/fireupp-backend/blob/main/mobile/android/app/src/main/java/app/zovio/mobile/ZovioCallService.kt): `mobile/android/app/src/main/java/app/zovio/mobile/ZovioCallService.kt`

### Collaboration Features

- [Messaging UI](https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/src/components/ChatView.jsx): `desktop/src/components/ChatView.jsx`
- [Calls UI](https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/src/components/CallView.jsx): `desktop/src/components/CallView.jsx`
- [Screen Share UI](https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/src/components/DiscordScreenShareModal.jsx): `desktop/src/components/DiscordScreenShareModal.jsx`
- [Status UI](https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/src/components/StatusView.jsx): `desktop/src/components/StatusView.jsx`
- [Profile & Settings](https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/src/components/ProfileModal.jsx): `desktop/src/components/ProfileModal.jsx`
- [Chat Domain](https://github.com/notsubhan77/fireupp-backend/blob/main/public/js/chat.js): `public/js/chat.js`
- [Meeting Domain](https://github.com/notsubhan77/fireupp-backend/blob/main/public/js/meetings.js): `public/js/meetings.js`
- [Workspace](https://github.com/notsubhan77/fireupp-backend/blob/main/public/js/workspace.js): `public/js/workspace.js`
- [Broadcast Channels](https://github.com/notsubhan77/fireupp-backend/tree/main/public/js): `public/js`

### Backend Services

- [Client Cryptography](https://github.com/notsubhan77/fireupp-backend/blob/main/public/js/crypto.js): `public/js/crypto.js`
- [HTTP & Realtime Server](https://github.com/notsubhan77/fireupp-backend/blob/main/server.js): `server.js`
- [Document & File Store](https://github.com/notsubhan77/fireupp-backend/blob/main/store.js): `store.js`
- [Local Data](https://github.com/notsubhan77/fireupp-backend/blob/main/public/js/localdb.js): `public/js/localdb.js`
- [Cloud Drive](https://github.com/notsubhan77/fireupp-backend/blob/main/public/js/gdrive.js): `public/js/gdrive.js`

### Media Runtime

- [Native Capture API](https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/native/zovio-media/src/lib.rs): `desktop/native/zovio-media/src/lib.rs`
- [Video Capture](https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/native/zovio-media/src/video.rs): `desktop/native/zovio-media/src/video.rs`
- [Audio Capture](https://github.com/notsubhan77/fireupp-backend/blob/main/desktop/native/zovio-media/src/audio.rs): `desktop/native/zovio-media/src/audio.rs`
- [Android Media Plugin](https://github.com/notsubhan77/fireupp-backend/blob/main/mobile/android/app/src/main/java/app/zovio/mobile/ZovioMediaPlugin.kt): `mobile/android/app/src/main/java/app/zovio/mobile/ZovioMediaPlugin.kt`

### Other components

- **User**
- **Cloud Firestore**

## Connections

- User → Desktop Shell: uses (evidence: `README.md`)
- Desktop Shell → API Client: loads data (evidence: `desktop/src/App.jsx`)
- Desktop Shell → Messaging UI: renders (evidence: `desktop/src/App.jsx`)
- Desktop Shell → Calls UI: renders (evidence: `desktop/src/App.jsx`)
- Desktop Shell → Status UI: renders (evidence: `desktop/src/App.jsx`)
- Desktop Shell → Profile & Settings: renders (evidence: `desktop/src/App.jsx`)
- Calls UI → Screen Share UI: renders (evidence: `desktop/src/components/CallView.jsx`)
- API Client → HTTP & Realtime Server: HTTP and WebSocket (evidence: `desktop/src/api/client.js`)
- Android Companion → Android Media Plugin: registers (evidence: `mobile/android/app/src/main/java/app/zovio/mobile/MainActivity.kt`)
- Android Media Plugin → Call Service: references (evidence: `mobile/android/app/src/main/java/app/zovio/mobile/ZovioMediaPlugin.kt`)
- Android Media Plugin → QR Scanner: references (evidence: `mobile/android/app/src/main/java/app/zovio/mobile/ZovioMediaPlugin.kt`)
- HTTP & Realtime Server → Document & File Store: persists data (evidence: `server.js`)
- Document & File Store → Cloud Firestore: syncs documents (evidence: `store.js`)
- HTTP & Realtime Server → Client Cryptography: uses crypto (evidence: `server.js`)
- User → Chat Domain: messages (evidence: `README.md`)
- User → Meeting Domain: starts meetings (evidence: `README.md`)
- User → Workspace: collaborates (evidence: `README.md`)
- User → Broadcast Channels: follows channels (evidence: `README.md`)
- User → Cloud Drive: stores files (evidence: `README.md`)
- User → Local Data: uses local data
- Screen Share UI → Native Capture API: may capture natively
- Native Capture API → Video Capture: starts capture (evidence: `desktop/native/zovio-media/src/lib.rs`)
- Native Capture API → Audio Capture: starts capture (evidence: `desktop/native/zovio-media/src/lib.rs`)
