# apna-college/zoom architecture

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

- Interactive diagram: https://gitdiagram.com/apna-college/zoom
- Repository: https://github.com/apna-college/zoom

## Overview

Zoom is a browser-based video-conferencing application. Users can register or sign in, enter a meeting room, exchange live media and chat, and view or add meeting codes to account history. The frontend routes and authentication context connect user actions to the Express API; the meeting page also uses Socket.IO signaling and browser media/WebRTC for calls. Backend source confirms account and history persistence in MongoDB and room signaling/chat dispatch. Other README-level details are sparse, so the graph limits unsampled frontend wiring to documented or visible entry points.

Main entry points: [`frontend/src/App.js`](https://github.com/apna-college/zoom/blob/main/frontend/src/App.js) (Route application), [`backend/src/app.js`](https://github.com/apna-college/zoom/blob/main/backend/src/app.js) (Express application), [`frontend/src/contexts/AuthContext.jsx`](https://github.com/apna-college/zoom/blob/main/frontend/src/contexts/AuthContext.jsx) (Auth and history client), [`frontend/src/pages/VideoMeet.jsx`](https://github.com/apna-college/zoom/blob/main/frontend/src/pages/VideoMeet.jsx) (Meeting room)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_app["Route application<br/>[App.js]"]
  node_authui["Sign-in and signup<br/>[authentication.jsx]"]
  node_authctx["Auth and history client<br/>[AuthContext.jsx]"]
  node_home["Meeting home<br/>[home.jsx]"]
  node_meeting["Meeting room<br/>[VideoMeet.jsx]"]
  node_historyui["Meeting history view<br/>[history.jsx]"]
end

subgraph group_backend["API and realtime"]
  node_api["Express application<br/>[app.js]"]
  node_routes["User API routes<br/>[users.routes.js]"]
  node_userctl["Account and history handlers<br/>[user.controller.js]"]
  node_socket["Room signaling and chat<br/>[socketManager.js]"]
end

subgraph group_persistence["Account history"]
  node_users[("User records<br/>[user.model.js]")]
  node_meetings[("Meeting history records<br/>[meeting.model.js]")]
end

node_user(("Meeting user"))
node_mongo[("MongoDB")]
node_browser["Browser media and WebRTC"]
node_socketservice["Socket.IO transport"]

node_user -->|"opens routes"| node_app
node_app -->|"routes to"| node_authui
node_app -->|"routes to"| node_home
node_app -->|"routes to"| node_meeting
node_app -->|"routes to"| node_historyui
node_authui -->|"calls auth"| node_authctx
node_home -->|"uses history actions"| node_authctx
node_historyui -->|"requests history"| node_authctx
node_authctx -->|"HTTP requests"| node_api
node_api -->|"mounts routes"| node_routes
node_routes -->|"dispatches handlers"| node_userctl
node_userctl -->|"reads and writes"| node_users
node_userctl -->|"reads and writes"| node_meetings
node_api -->|"connects"| node_mongo
node_users -->|"persists records"| node_mongo
node_meetings -->|"persists records"| node_mongo
node_meeting -->|"captures media; WebRTC"| node_browser
node_meeting -->|"emits room events"| node_socketservice
node_api -->|"initializes"| node_socket
node_socket -->|"broadcasts signaling and chat"| node_socketservice

click node_app "https://github.com/apna-college/zoom/blob/main/frontend/src/App.js"
click node_authui "https://github.com/apna-college/zoom/blob/main/frontend/src/pages/authentication.jsx"
click node_authctx "https://github.com/apna-college/zoom/blob/main/frontend/src/contexts/AuthContext.jsx"
click node_home "https://github.com/apna-college/zoom/blob/main/frontend/src/pages/home.jsx"
click node_meeting "https://github.com/apna-college/zoom/blob/main/frontend/src/pages/VideoMeet.jsx"
click node_historyui "https://github.com/apna-college/zoom/blob/main/frontend/src/pages/history.jsx"
click node_api "https://github.com/apna-college/zoom/blob/main/backend/src/app.js"
click node_routes "https://github.com/apna-college/zoom/blob/main/backend/src/routes/users.routes.js"
click node_userctl "https://github.com/apna-college/zoom/blob/main/backend/src/controllers/user.controller.js"
click node_socket "https://github.com/apna-college/zoom/blob/main/backend/src/controllers/socketManager.js"
click node_users "https://github.com/apna-college/zoom/blob/main/backend/src/models/user.model.js"
click node_meetings "https://github.com/apna-college/zoom/blob/main/backend/src/models/meeting.model.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_authctx,node_home,node_meeting,node_historyui,node_user,node_browser toneBlue
class node_api,node_routes,node_userctl,node_socket,node_mongo toneAmber
class node_users,node_meetings toneMint
class node_socketservice toneIndigo
```

## Components

### Web application

- [Route application](https://github.com/apna-college/zoom/blob/main/frontend/src/App.js): `frontend/src/App.js`
- [Sign-in and signup](https://github.com/apna-college/zoom/blob/main/frontend/src/pages/authentication.jsx): `frontend/src/pages/authentication.jsx`
- [Auth and history client](https://github.com/apna-college/zoom/blob/main/frontend/src/contexts/AuthContext.jsx): `frontend/src/contexts/AuthContext.jsx`
- [Meeting home](https://github.com/apna-college/zoom/blob/main/frontend/src/pages/home.jsx): `frontend/src/pages/home.jsx`
- [Meeting room](https://github.com/apna-college/zoom/blob/main/frontend/src/pages/VideoMeet.jsx): `frontend/src/pages/VideoMeet.jsx`
- [Meeting history view](https://github.com/apna-college/zoom/blob/main/frontend/src/pages/history.jsx): `frontend/src/pages/history.jsx`

### API and realtime

- [Express application](https://github.com/apna-college/zoom/blob/main/backend/src/app.js): `backend/src/app.js`
- [User API routes](https://github.com/apna-college/zoom/blob/main/backend/src/routes/users.routes.js): `backend/src/routes/users.routes.js`
- [Account and history handlers](https://github.com/apna-college/zoom/blob/main/backend/src/controllers/user.controller.js): `backend/src/controllers/user.controller.js`
- [Room signaling and chat](https://github.com/apna-college/zoom/blob/main/backend/src/controllers/socketManager.js): `backend/src/controllers/socketManager.js`

### Account history

- [User records](https://github.com/apna-college/zoom/blob/main/backend/src/models/user.model.js): `backend/src/models/user.model.js`
- [Meeting history records](https://github.com/apna-college/zoom/blob/main/backend/src/models/meeting.model.js): `backend/src/models/meeting.model.js`

### Other components

- **Meeting user**
- **MongoDB**
- **Browser media and WebRTC**
- **Socket.IO transport**

## Connections

- Meeting user → Route application: opens routes
- Route application → Sign-in and signup: routes to
- Route application → Meeting home: routes to
- Route application → Meeting room: routes to
- Route application → Meeting history view: routes to
- Sign-in and signup → Auth and history client: calls auth
- Meeting home → Auth and history client: uses history actions
- Meeting history view → Auth and history client: requests history
- Auth and history client → Express application: HTTP requests
- Express application → User API routes: mounts routes
- User API routes → Account and history handlers: dispatches handlers
- Account and history handlers → User records: reads and writes
- Account and history handlers → Meeting history records: reads and writes
- Express application → MongoDB: connects
- User records → MongoDB: persists records
- Meeting history records → MongoDB: persists records
- Meeting room → Browser media and WebRTC: captures media; WebRTC
- Meeting room → Socket.IO transport: emits room events
- Express application → Room signaling and chat: initializes
- Room signaling and chat → Socket.IO transport: broadcasts signaling and chat
