# nijamgouri60/cloudvault_filesharing architecture

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

- Interactive diagram: https://gitdiagram.com/nijamgouri60/cloudvault_filesharing
- Repository: https://github.com/nijamgouri60/cloudvault_filesharing

## Overview

CloudVault is a browser-based secure file-sharing platform. Users authenticate, upload files in resumable chunks, manage access or public links, and view or download files; admins monitor activity, while readers can ask questions about supported documents. The backend connects HTTP routes to file services and MongoDB/GridFS, and bridges internal events to browser dashboards over Socket.io. The upload service, authentication, and AI paths are supported by sampled source; other feature links reflect README documentation, since their route implementations were not sampled.

Main entry points: [`backend/worker.js`](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/worker.js) (HTTP and socket worker), [`backend/services/fileService.js`](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/services/fileService.js) (Chunk and file service), [`frontend/index.html`](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/frontend/index.html) (CloudVault UI), [`backend/middleware/auth.js`](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/middleware/auth.js) (JWT authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Browser experience"]
  node_browser["CloudVault UI<br/>[index.html]"]
  node_app["File workspace<br/>[app.js]"]
  node_uploadui["Upload client<br/>[upload.js]"]
  node_shareui["Public share page<br/>[share.js]"]
  node_dashboard["Admin dashboard<br/>[dashboard.js]"]
end

subgraph group_api["HTTP API"]
  node_worker["HTTP and socket worker<br/>[worker.js]"]
  node_authroute["Auth routes<br/>[auth.js]"]
  node_uploadroute["Upload routes<br/>[upload.js]"]
  node_fileroute["File routes<br/>[files.js]"]
  node_shareroute["Share-link routes<br/>[shareLinks.js]"]
  node_deliveryroute["View and download<br/>[view.js]"]
  node_adminroute["Admin routes<br/>[admin.js]"]
  node_airoute["Document AI route<br/>[ai.js]"]
end

subgraph group_files["File lifecycle"]
  node_uploadservice["Chunk and file service<br/>[fileService.js]"]
  node_sessions[("Upload sessions<br/>[UploadSession.js]")]
  node_metadata[("File metadata<br/>[FileMeta.js]")]
  node_mongodb[("MongoDB and GridFS<br/>[db.js]")]
  node_cleanup["Stale session cleanup<br/>[cleanupService.js]"]
end

subgraph group_access["Identity and sharing"]
  node_auth["JWT authentication<br/>[auth.js]"]
  node_rbac["File access checks<br/>[rbac.js]"]
  node_users[("User records<br/>[User.js]")]
  node_permissions[("File permissions<br/>[Permission.js]")]
  node_sharelinks[("Share link records<br/>[ShareLink.js]")]
end

subgraph group_events["Events and operations"]
  node_eventbus["Event bus<br/>[eventBus.js]"]
  node_socket["Live event delivery<br/>[socketService.js]"]
  node_eventlogs[("Activity records<br/>[EventLog.js]")]
end

node_user(("User"))
node_admin(("Admin"))
node_ollama["Local Ollama model"]

node_user -->|"uses"| node_browser
node_admin -->|"uses"| node_browser
node_browser -->|"loads"| node_app
node_browser -->|"loads"| node_uploadui
node_browser -->|"loads"| node_shareui
node_browser -->|"loads"| node_dashboard
node_app -->|"calls API"| node_worker
node_uploadui -->|"uploads chunks"| node_worker
node_shareui -->|"requests link"| node_worker
node_dashboard -->|"requests status"| node_worker
node_worker -->|"mounts"| node_authroute
node_worker -->|"mounts"| node_uploadroute
node_worker -->|"mounts"| node_fileroute
node_worker -->|"mounts"| node_shareroute
node_worker -->|"mounts"| node_deliveryroute
node_worker -->|"mounts"| node_adminroute
node_worker -->|"mounts"| node_airoute
node_authroute -->|"reads/writes"| node_users
node_authroute -->|"issues JWT"| node_auth
node_uploadroute -->|"checks token"| node_auth
node_fileroute -->|"checks token"| node_auth
node_shareroute -->|"checks token"| node_auth
node_deliveryroute -->|"checks token"| node_auth
node_airoute -->|"checks token"| node_auth
node_airoute -->|"checks file access"| node_rbac
node_fileroute -.->|"manages access"| node_permissions
node_shareroute -.->|"manages links"| node_sharelinks
node_uploadroute -->|"handles uploads"| node_uploadservice
node_uploadservice -->|"tracks chunks"| node_sessions
node_uploadservice -->|"writes metadata"| node_metadata
node_uploadservice -->|"streams files"| node_mongodb
node_deliveryroute -.->|"streams content"| node_uploadservice
node_airoute -->|"reads document"| node_uploadservice
node_airoute -->|"asks questions"| node_ollama
node_uploadservice -->|"publishes events"| node_eventbus
node_cleanup -->|"expires stale"| node_sessions
node_cleanup -->|"removes chunks"| node_uploadservice
node_cleanup -->|"publishes expiry"| node_eventbus
node_worker -->|"starts sweep"| node_cleanup
node_worker -->|"attaches"| node_socket
node_socket -->|"forwards events"| node_eventbus
node_socket -.->|"pushes updates"| node_dashboard
node_adminroute -.->|"reads activity"| node_eventlogs

click node_browser "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/frontend/index.html"
click node_app "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/frontend/js/app.js"
click node_uploadui "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/frontend/js/upload.js"
click node_shareui "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/frontend/js/share.js"
click node_dashboard "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/frontend/js/dashboard.js"
click node_worker "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/worker.js"
click node_authroute "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/routes/auth.js"
click node_uploadroute "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/routes/upload.js"
click node_fileroute "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/routes/files.js"
click node_shareroute "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/routes/shareLinks.js"
click node_deliveryroute "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/routes/view.js"
click node_adminroute "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/routes/admin.js"
click node_airoute "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/routes/ai.js"
click node_auth "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/middleware/auth.js"
click node_rbac "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/middleware/rbac.js"
click node_users "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/models/User.js"
click node_permissions "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/models/Permission.js"
click node_sharelinks "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/models/ShareLink.js"
click node_uploadservice "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/services/fileService.js"
click node_sessions "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/models/UploadSession.js"
click node_metadata "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/models/FileMeta.js"
click node_mongodb "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/config/db.js"
click node_cleanup "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/services/cleanupService.js"
click node_eventbus "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/services/eventBus.js"
click node_socket "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/services/socketService.js"
click node_eventlogs "https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/models/EventLog.js"

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_browser,node_app,node_uploadui,node_shareui,node_dashboard,node_user toneBlue
class node_worker,node_authroute,node_uploadroute,node_fileroute,node_shareroute,node_deliveryroute,node_adminroute,node_airoute toneAmber
class node_uploadservice,node_sessions,node_metadata,node_mongodb,node_cleanup toneMint
class node_auth,node_rbac,node_users,node_permissions,node_sharelinks toneRose
class node_eventbus,node_socket,node_eventlogs,node_admin,node_ollama toneIndigo
```

## Components

### Browser experience

- [CloudVault UI](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/frontend/index.html): `frontend/index.html`
- [File workspace](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/frontend/js/app.js): `frontend/js/app.js`
- [Upload client](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/frontend/js/upload.js): `frontend/js/upload.js`
- [Public share page](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/frontend/js/share.js): `frontend/js/share.js`
- [Admin dashboard](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/frontend/js/dashboard.js): `frontend/js/dashboard.js`

### HTTP API

- [HTTP and socket worker](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/worker.js): `backend/worker.js`
- [Auth routes](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/routes/auth.js): `backend/routes/auth.js`
- [Upload routes](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/routes/upload.js): `backend/routes/upload.js`
- [File routes](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/routes/files.js): `backend/routes/files.js`
- [Share-link routes](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/routes/shareLinks.js): `backend/routes/shareLinks.js`
- [View and download](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/routes/view.js): `backend/routes/view.js`
- [Admin routes](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/routes/admin.js): `backend/routes/admin.js`
- [Document AI route](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/routes/ai.js): `backend/routes/ai.js`

### File lifecycle

- [Chunk and file service](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/services/fileService.js): `backend/services/fileService.js`
- [Upload sessions](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/models/UploadSession.js): `backend/models/UploadSession.js`
- [File metadata](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/models/FileMeta.js): `backend/models/FileMeta.js`
- [MongoDB and GridFS](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/config/db.js): `backend/config/db.js`
- [Stale session cleanup](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/services/cleanupService.js): `backend/services/cleanupService.js`

### Identity and sharing

- [JWT authentication](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/middleware/auth.js): `backend/middleware/auth.js`
- [File access checks](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/middleware/rbac.js): `backend/middleware/rbac.js`
- [User records](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/models/User.js): `backend/models/User.js`
- [File permissions](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/models/Permission.js): `backend/models/Permission.js`
- [Share link records](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/models/ShareLink.js): `backend/models/ShareLink.js`

### Events and operations

- [Event bus](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/services/eventBus.js): `backend/services/eventBus.js`
- [Live event delivery](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/services/socketService.js): `backend/services/socketService.js`
- [Activity records](https://github.com/nijamgouri60/cloudvault_filesharing/blob/main/backend/models/EventLog.js): `backend/models/EventLog.js`

### Other components

- **User**
- **Admin**
- **Local Ollama model**

## Connections

- User → CloudVault UI: uses
- Admin → CloudVault UI: uses
- CloudVault UI → File workspace: loads
- CloudVault UI → Upload client: loads
- CloudVault UI → Public share page: loads
- CloudVault UI → Admin dashboard: loads
- File workspace → HTTP and socket worker: calls API
- Upload client → HTTP and socket worker: uploads chunks
- Public share page → HTTP and socket worker: requests link
- Admin dashboard → HTTP and socket worker: requests status
- HTTP and socket worker → Auth routes: mounts
- HTTP and socket worker → Upload routes: mounts
- HTTP and socket worker → File routes: mounts
- HTTP and socket worker → Share-link routes: mounts
- HTTP and socket worker → View and download: mounts
- HTTP and socket worker → Admin routes: mounts
- HTTP and socket worker → Document AI route: mounts
- Auth routes → User records: reads/writes
- Auth routes → JWT authentication: issues JWT
- Upload routes → JWT authentication: checks token
- File routes → JWT authentication: checks token
- Share-link routes → JWT authentication: checks token
- View and download → JWT authentication: checks token
- Document AI route → JWT authentication: checks token
- Document AI route → File access checks: checks file access
- File routes → File permissions: manages access
- Share-link routes → Share link records: manages links
- Upload routes → Chunk and file service: handles uploads
- Chunk and file service → Upload sessions: tracks chunks
- Chunk and file service → File metadata: writes metadata
- Chunk and file service → MongoDB and GridFS: streams files
- View and download → Chunk and file service: streams content
- Document AI route → Chunk and file service: reads document
- Document AI route → Local Ollama model: asks questions
- Chunk and file service → Event bus: publishes events
- Stale session cleanup → Upload sessions: expires stale
- Stale session cleanup → Chunk and file service: removes chunks
- Stale session cleanup → Event bus: publishes expiry
- HTTP and socket worker → Stale session cleanup: starts sweep
- HTTP and socket worker → Live event delivery: attaches
- Live event delivery → Event bus: forwards events
- Live event delivery → Admin dashboard: pushes updates
- Admin routes → Activity records: reads activity
