# divya0523466/real_time_collaboration architecture

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

- Interactive diagram: https://gitdiagram.com/divya0523466/real_time_collaboration
- Repository: https://github.com/divya0523466/real_time_collaboration

## Overview

WorkNest is a real-time team collaboration application. Users sign in, enter or create workspaces, manage channels and members, then collaborate through channel conversations and direct messages, with unread tracking, notifications, and file uploads supporting that work. The graph emphasizes those product stages and the backend’s persistence and real-time dispatch. Source excerpts establish key channel, message, workspace, and notification relationships; other capabilities are represented from the repository tree, with uncertain wiring omitted.

Main entry points: [`backend/server.js`](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/server.js) (Socket server), [`src/App.jsx`](https://github.com/divya0523466/real_time_collaboration/blob/main/src/App.jsx) (App routes), [`src/components/dashboard/SlackShell.jsx`](https://github.com/divya0523466/real_time_collaboration/blob/main/src/components/dashboard/SlackShell.jsx) (Workspace shell), [`backend/controllers/workspaceController.js`](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/controllers/workspaceController.js) (Workspace management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_app["App routes<br/>[App.jsx]"]
  node_authui["Sign-in UI<br/>[AuthModal.jsx]"]
  node_dashboard["Workspace dashboard"]
  node_shell["Workspace shell<br/>[SlackShell.jsx]"]
  node_workspacecontext["Workspace state"]
  node_directui["Direct messages"]
  node_channelui["Channel threads"]
  node_inviteui["Member invitations"]
  node_notifyui["Notification panel"]
  node_uploadui["File upload UI<br/>[FileUpload.jsx]"]
end

subgraph group_identity["Identity"]
  node_authroutes["Auth routes<br/>[authRoutes.js]"]
  node_authcontroller["Auth handlers<br/>[authController.js]"]
  node_googleauth["Google sign-in"]
end

subgraph group_collaboration["Workspace collaboration"]
  node_workspaces["Workspace management"]
  node_channels["Channel management"]
  node_invitationroutes["Invitation routes"]
  node_channelroutes["Channel routes<br/>[channelRoutes.js]"]
end

subgraph group_messaging["Messaging"]
  node_messagingroutes["Message routes<br/>[messageRoutes.js]"]
  node_messagecontroller["Message queries"]
  node_realtime["Socket server<br/>[server.js]"]
end

subgraph group_backend["Backend services"]
  node_uploadroutes["Upload routes<br/>[uploadRoutes.js]"]
  node_uploadcontroller["Upload handler"]
  node_notifications["Notification service"]
  node_notificationroutes["Notification routes"]
  node_cloudinary["Cloudinary storage<br/>[cloudinary.js]"]
  node_userstore[("User records<br/>[User.js]")]
  node_workspacestore[("Workspace records<br/>[Workspace.js]")]
  node_membershipstore[("Workspace memberships")]
  node_channelstore[("Channels<br/>[Channel.js]")]
  node_messagestore[("Direct messages<br/>[Message.js]")]
  node_channelmessagestore[("Channel messages<br/>[ChannelMessage.js]")]
  node_readstore[("Read cursors")]
  node_notifystore[("Notifications<br/>[Notification.js]")]
end

node_user(("Team member"))

node_user -->|"uses"| node_app
node_app -->|"opens"| node_authui
node_app -->|"routes"| node_dashboard
node_app -->|"routes"| node_shell
node_authui -->|"authenticates"| node_authroutes
node_authroutes -->|"dispatches"| node_authcontroller
node_authcontroller -->|"reads/writes"| node_userstore
node_authroutes -->|"dispatches"| node_googleauth
node_dashboard -->|"uses"| node_workspacecontext
node_shell -->|"uses"| node_workspacecontext
node_dashboard -->|"requests"| node_workspaces
node_workspaces -->|"reads/writes"| node_workspacestore
node_workspaces -->|"reads/writes"| node_membershipstore
node_workspaces -->|"creates default"| node_channelstore
node_shell -->|"requests"| node_channelroutes
node_channelroutes -->|"dispatches"| node_channels
node_channels -->|"reads/writes"| node_channelstore
node_channels -->|"checks roles"| node_membershipstore
node_inviteui -->|"requests"| node_invitationroutes
node_shell -->|"shows"| node_channelui
node_channelui -->|"sends events"| node_realtime
node_realtime -->|"reads/writes"| node_channelmessagestore
node_realtime -->|"updates"| node_readstore
node_realtime -->|"checks access"| node_membershipstore
node_channelui -->|"loads history"| node_messagingroutes
node_messagingroutes -->|"dispatches"| node_messagecontroller
node_messagecontroller -->|"reads"| node_channelmessagestore
node_messagecontroller -->|"updates"| node_readstore
node_messagecontroller -->|"counts unread"| node_messagestore
node_directui -->|"sends events"| node_realtime
node_realtime -->|"reads/writes"| node_messagestore
node_notifyui -->|"requests"| node_notificationroutes
node_notificationroutes -->|"reads/writes"| node_notifystore
node_realtime -->|"creates alerts"| node_notifications
node_channels -->|"creates alerts"| node_notifications
node_notifications -->|"writes"| node_notifystore
node_notifications -->|"emits alerts"| node_realtime
node_uploadui -->|"uploads"| node_uploadroutes
node_uploadroutes -->|"dispatches"| node_uploadcontroller
node_uploadcontroller -.->|"stores files"| node_cloudinary

click node_app "https://github.com/divya0523466/real_time_collaboration/blob/main/src/App.jsx"
click node_authui "https://github.com/divya0523466/real_time_collaboration/blob/main/src/components/auth/AuthModal.jsx"
click node_dashboard "https://github.com/divya0523466/real_time_collaboration/blob/main/src/components/dashboard/GlobalDashboard.jsx"
click node_shell "https://github.com/divya0523466/real_time_collaboration/blob/main/src/components/dashboard/SlackShell.jsx"
click node_workspacecontext "https://github.com/divya0523466/real_time_collaboration/blob/main/src/context/WorkspaceContext.jsx"
click node_directui "https://github.com/divya0523466/real_time_collaboration/blob/main/src/components/dashboard/DirectMessaging.jsx"
click node_channelui "https://github.com/divya0523466/real_time_collaboration/blob/main/src/components/dashboard/ChannelMessageThread.jsx"
click node_inviteui "https://github.com/divya0523466/real_time_collaboration/blob/main/src/components/dashboard/InviteMemberModal.jsx"
click node_notifyui "https://github.com/divya0523466/real_time_collaboration/blob/main/src/components/dashboard/NotificationPanel.jsx"
click node_uploadui "https://github.com/divya0523466/real_time_collaboration/blob/main/src/components/common/FileUpload.jsx"
click node_authroutes "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/routes/authRoutes.js"
click node_authcontroller "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/controllers/authController.js"
click node_googleauth "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/controllers/googleAuthController.js"
click node_workspaces "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/controllers/workspaceController.js"
click node_channels "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/controllers/channelController.js"
click node_invitationroutes "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/routes/invitationRoutes.js"
click node_channelroutes "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/routes/channelRoutes.js"
click node_messagingroutes "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/routes/messageRoutes.js"
click node_messagecontroller "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/controllers/messageController.js"
click node_realtime "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/server.js"
click node_uploadroutes "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/routes/uploadRoutes.js"
click node_uploadcontroller "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/controllers/uploadController.js"
click node_notifications "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/utils/notificationService.js"
click node_notificationroutes "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/routes/notificationRoutes.js"
click node_cloudinary "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/utils/cloudinary.js"
click node_userstore "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/models/User.js"
click node_workspacestore "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/models/Workspace.js"
click node_membershipstore "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/models/WorkspaceMembership.js"
click node_channelstore "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/models/Channel.js"
click node_messagestore "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/models/Message.js"
click node_channelmessagestore "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/models/ChannelMessage.js"
click node_readstore "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/models/ChannelReadState.js"
click node_notifystore "https://github.com/divya0523466/real_time_collaboration/blob/main/backend/models/Notification.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_app,node_authui,node_dashboard,node_shell,node_workspacecontext,node_directui,node_channelui,node_inviteui,node_notifyui,node_uploadui toneBlue
class node_authroutes,node_authcontroller,node_googleauth toneAmber
class node_workspaces,node_channels,node_invitationroutes,node_channelroutes toneMint
class node_messagingroutes,node_messagecontroller,node_realtime toneRose
class node_uploadroutes,node_uploadcontroller,node_notifications,node_notificationroutes,node_cloudinary,node_userstore,node_workspacestore,node_membershipstore,node_channelstore,node_messagestore,node_channelmessagestore,node_readstore,node_notifystore,node_user toneIndigo
```

## Components

### Web client

- [App routes](https://github.com/divya0523466/real_time_collaboration/blob/main/src/App.jsx): `src/App.jsx`
- [Sign-in UI](https://github.com/divya0523466/real_time_collaboration/blob/main/src/components/auth/AuthModal.jsx): `src/components/auth/AuthModal.jsx`
- [Workspace dashboard](https://github.com/divya0523466/real_time_collaboration/blob/main/src/components/dashboard/GlobalDashboard.jsx): `src/components/dashboard/GlobalDashboard.jsx`
- [Workspace shell](https://github.com/divya0523466/real_time_collaboration/blob/main/src/components/dashboard/SlackShell.jsx): `src/components/dashboard/SlackShell.jsx`
- [Workspace state](https://github.com/divya0523466/real_time_collaboration/blob/main/src/context/WorkspaceContext.jsx): `src/context/WorkspaceContext.jsx`
- [Direct messages](https://github.com/divya0523466/real_time_collaboration/blob/main/src/components/dashboard/DirectMessaging.jsx): `src/components/dashboard/DirectMessaging.jsx`
- [Channel threads](https://github.com/divya0523466/real_time_collaboration/blob/main/src/components/dashboard/ChannelMessageThread.jsx): `src/components/dashboard/ChannelMessageThread.jsx`
- [Member invitations](https://github.com/divya0523466/real_time_collaboration/blob/main/src/components/dashboard/InviteMemberModal.jsx): `src/components/dashboard/InviteMemberModal.jsx`
- [Notification panel](https://github.com/divya0523466/real_time_collaboration/blob/main/src/components/dashboard/NotificationPanel.jsx): `src/components/dashboard/NotificationPanel.jsx`
- [File upload UI](https://github.com/divya0523466/real_time_collaboration/blob/main/src/components/common/FileUpload.jsx): `src/components/common/FileUpload.jsx`

### Identity

- [Auth routes](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/routes/authRoutes.js): `backend/routes/authRoutes.js`
- [Auth handlers](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/controllers/authController.js): `backend/controllers/authController.js`
- [Google sign-in](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/controllers/googleAuthController.js): `backend/controllers/googleAuthController.js`

### Workspace collaboration

- [Workspace management](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/controllers/workspaceController.js): `backend/controllers/workspaceController.js`
- [Channel management](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/controllers/channelController.js): `backend/controllers/channelController.js`
- [Invitation routes](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/routes/invitationRoutes.js): `backend/routes/invitationRoutes.js`
- [Channel routes](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/routes/channelRoutes.js): `backend/routes/channelRoutes.js`

### Messaging

- [Message routes](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/routes/messageRoutes.js): `backend/routes/messageRoutes.js`
- [Message queries](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/controllers/messageController.js): `backend/controllers/messageController.js`
- [Socket server](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/server.js): `backend/server.js`

### Backend services

- [Upload routes](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/routes/uploadRoutes.js): `backend/routes/uploadRoutes.js`
- [Upload handler](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/controllers/uploadController.js): `backend/controllers/uploadController.js`
- [Notification service](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/utils/notificationService.js): `backend/utils/notificationService.js`
- [Notification routes](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/routes/notificationRoutes.js): `backend/routes/notificationRoutes.js`
- [Cloudinary storage](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/utils/cloudinary.js): `backend/utils/cloudinary.js`
- [User records](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/models/User.js): `backend/models/User.js`
- [Workspace records](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/models/Workspace.js): `backend/models/Workspace.js`
- [Workspace memberships](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/models/WorkspaceMembership.js): `backend/models/WorkspaceMembership.js`
- [Channels](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/models/Channel.js): `backend/models/Channel.js`
- [Direct messages](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/models/Message.js): `backend/models/Message.js`
- [Channel messages](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/models/ChannelMessage.js): `backend/models/ChannelMessage.js`
- [Read cursors](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/models/ChannelReadState.js): `backend/models/ChannelReadState.js`
- [Notifications](https://github.com/divya0523466/real_time_collaboration/blob/main/backend/models/Notification.js): `backend/models/Notification.js`

### Other components

- **Team member**

## Connections

- Team member → App routes: uses
- App routes → Sign-in UI: opens
- App routes → Workspace dashboard: routes
- App routes → Workspace shell: routes
- Sign-in UI → Auth routes: authenticates
- Auth routes → Auth handlers: dispatches
- Auth handlers → User records: reads/writes
- Auth routes → Google sign-in: dispatches
- Workspace dashboard → Workspace state: uses
- Workspace shell → Workspace state: uses
- Workspace dashboard → Workspace management: requests
- Workspace management → Workspace records: reads/writes
- Workspace management → Workspace memberships: reads/writes
- Workspace management → Channels: creates default
- Workspace shell → Channel routes: requests
- Channel routes → Channel management: dispatches
- Channel management → Channels: reads/writes
- Channel management → Workspace memberships: checks roles
- Member invitations → Invitation routes: requests
- Workspace shell → Channel threads: shows
- Channel threads → Socket server: sends events
- Socket server → Channel messages: reads/writes
- Socket server → Read cursors: updates
- Socket server → Workspace memberships: checks access
- Channel threads → Message routes: loads history
- Message routes → Message queries: dispatches
- Message queries → Channel messages: reads
- Message queries → Read cursors: updates
- Message queries → Direct messages: counts unread
- Direct messages → Socket server: sends events
- Socket server → Direct messages: reads/writes
- Notification panel → Notification routes: requests
- Notification routes → Notifications: reads/writes
- Socket server → Notification service: creates alerts
- Channel management → Notification service: creates alerts
- Notification service → Notifications: writes
- Notification service → Socket server: emits alerts
- File upload UI → Upload routes: uploads
- Upload routes → Upload handler: dispatches
- Upload handler → Cloudinary storage: stores files
