# sakin08/sust-connect architecture

> Architecture diagram of the GitHub repository sakin08/sust-connect, 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/sakin08/sust-connect
- Repository: https://github.com/sakin08/sust-connect

## Overview

SUST Connect is a campus social and services platform. Students and staff enter through the React app to use social, marketplace, academic, event, and campus-resource features; the frontend communicates with an Express API backed by MongoDB. Messaging also uses Socket.IO for live delivery and status updates, while administration supports user and content oversight. The README documents the broader feature set; sampled source confirms app routing, saved-post persistence, election operations, admin actions, and socket message handling, but not every feature’s internal wiring.

Main entry points: [`backend/app.js`](https://github.com/sakin08/sust-connect/blob/main/backend/app.js) (Express API), [`frontend/src/App.jsx`](https://github.com/sakin08/sust-connect/blob/main/frontend/src/App.jsx) (React application), [`backend/socket/socketHandler.js`](https://github.com/sakin08/sust-connect/blob/main/backend/socket/socketHandler.js) (Socket handlers), [`backend/models/User.js`](https://github.com/sakin08/sust-connect/blob/main/backend/models/User.js) (User records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_web_app["React application<br/>[App.jsx]"]
  node_client_api["API clients"]
  node_auth_context["Auth context<br/>[AuthContext.jsx]"]
  node_chat_ui["Chat interface<br/>[Chat.jsx]"]
end

subgraph group_api["API and identity"]
  node_express_app["Express API<br/>[app.js]"]
  node_auth_routes["Auth routes<br/>[authRoutes.js]"]
  node_auth_controller["Auth logic<br/>[authController.js]"]
  node_user_model[("User records<br/>[User.js]")]
  node_mongo[("MongoDB data<br/>[db.js]")]
end

subgraph group_community["Community services"]
  node_social_features["Social and feed<br/>[postController.js]"]
  node_saved_posts["Saved posts<br/>[savedPostRoutes.js]"]
  node_marketplace["Marketplace"]
  node_events_calendar["Events and calendar<br/>[eventController.js]"]
  node_academic_tools["Academic tools"]
  node_campus_services["Campus services"]
  node_elections["Digital elections"]
end

subgraph group_realtime["Realtime messaging"]
  node_socket_server["Socket handlers<br/>[socketHandler.js]"]
  node_message_data[("Message records<br/>[Message.js]")]
end

subgraph group_operations["Administration"]
  node_admin_ui["Admin console<br/>[AdminPanel.jsx]"]
  node_admin_routes["Admin routes<br/>[adminRoutes.js]"]
  node_admin_logic["Admin operations<br/>[adminController.js]"]
end

node_campus_users(("Campus users"))

node_campus_users -->|"use"| node_web_app
node_web_app -->|"request data"| node_client_api
node_web_app -->|"use identity"| node_auth_context
node_client_api -->|"HTTP requests"| node_express_app
node_express_app -->|"mounts"| node_auth_routes
node_auth_routes -->|"dispatch"| node_auth_controller
node_auth_controller -->|"read and write"| node_user_model
node_user_model -->|"persist"| node_mongo
node_express_app -->|"dispatches social APIs"| node_social_features
node_express_app -->|"mounts saved-post APIs"| node_saved_posts
node_saved_posts -->|"read and update"| node_user_model
node_express_app -->|"dispatches marketplace APIs"| node_marketplace
node_express_app -->|"dispatches event APIs"| node_events_calendar
node_express_app -->|"dispatches study-group APIs"| node_academic_tools
node_express_app -->|"dispatches service APIs"| node_campus_services
node_express_app -->|"dispatches election APIs"| node_elections
node_elections -->|"read and write election data"| node_mongo
node_chat_ui -->|"send and receive"| node_socket_server
node_socket_server -->|"create and update"| node_message_data
node_socket_server -->|"deliver live events"| node_campus_users
node_campus_users -->|"administer"| node_admin_ui
node_admin_ui -->|"admin requests"| node_admin_routes
node_admin_routes -->|"dispatch"| node_admin_logic
node_admin_logic -->|"query and update records"| node_mongo

click node_web_app "https://github.com/sakin08/sust-connect/blob/main/frontend/src/App.jsx"
click node_client_api "https://github.com/sakin08/sust-connect/tree/main/frontend/src/api"
click node_auth_context "https://github.com/sakin08/sust-connect/blob/main/frontend/src/context/AuthContext.jsx"
click node_express_app "https://github.com/sakin08/sust-connect/blob/main/backend/app.js"
click node_auth_routes "https://github.com/sakin08/sust-connect/blob/main/backend/routes/authRoutes.js"
click node_auth_controller "https://github.com/sakin08/sust-connect/blob/main/backend/controllers/authController.js"
click node_user_model "https://github.com/sakin08/sust-connect/blob/main/backend/models/User.js"
click node_social_features "https://github.com/sakin08/sust-connect/blob/main/backend/controllers/postController.js"
click node_saved_posts "https://github.com/sakin08/sust-connect/blob/main/backend/routes/savedPostRoutes.js"
click node_marketplace "https://github.com/sakin08/sust-connect/blob/main/backend/controllers/buySellController.js"
click node_events_calendar "https://github.com/sakin08/sust-connect/blob/main/backend/controllers/eventController.js"
click node_academic_tools "https://github.com/sakin08/sust-connect/blob/main/backend/controllers/studyGroupController.js"
click node_campus_services "https://github.com/sakin08/sust-connect/blob/main/backend/controllers/bloodDonorController.js"
click node_elections "https://github.com/sakin08/sust-connect/blob/main/backend/controllers/electionController.js"
click node_mongo "https://github.com/sakin08/sust-connect/blob/main/backend/config/db.js"
click node_chat_ui "https://github.com/sakin08/sust-connect/blob/main/frontend/src/pages/Chat.jsx"
click node_socket_server "https://github.com/sakin08/sust-connect/blob/main/backend/socket/socketHandler.js"
click node_message_data "https://github.com/sakin08/sust-connect/blob/main/backend/models/Message.js"
click node_admin_ui "https://github.com/sakin08/sust-connect/blob/main/frontend/src/pages/AdminPanel.jsx"
click node_admin_routes "https://github.com/sakin08/sust-connect/blob/main/backend/routes/adminRoutes.js"
click node_admin_logic "https://github.com/sakin08/sust-connect/blob/main/backend/controllers/adminController.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_web_app,node_client_api,node_auth_context,node_chat_ui,node_campus_users toneBlue
class node_express_app,node_auth_routes,node_auth_controller,node_user_model,node_mongo toneAmber
class node_social_features,node_saved_posts,node_marketplace,node_events_calendar,node_academic_tools,node_campus_services,node_elections toneMint
class node_socket_server,node_message_data toneRose
class node_admin_ui,node_admin_routes,node_admin_logic toneIndigo
```

## Components

### Web client

- [React application](https://github.com/sakin08/sust-connect/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [API clients](https://github.com/sakin08/sust-connect/tree/main/frontend/src/api): `frontend/src/api`
- [Auth context](https://github.com/sakin08/sust-connect/blob/main/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [Chat interface](https://github.com/sakin08/sust-connect/blob/main/frontend/src/pages/Chat.jsx): `frontend/src/pages/Chat.jsx`

### API and identity

- [Express API](https://github.com/sakin08/sust-connect/blob/main/backend/app.js): `backend/app.js`
- [Auth routes](https://github.com/sakin08/sust-connect/blob/main/backend/routes/authRoutes.js): `backend/routes/authRoutes.js`
- [Auth logic](https://github.com/sakin08/sust-connect/blob/main/backend/controllers/authController.js): `backend/controllers/authController.js`
- [User records](https://github.com/sakin08/sust-connect/blob/main/backend/models/User.js): `backend/models/User.js`
- [MongoDB data](https://github.com/sakin08/sust-connect/blob/main/backend/config/db.js): `backend/config/db.js`

### Community services

- [Social and feed](https://github.com/sakin08/sust-connect/blob/main/backend/controllers/postController.js): `backend/controllers/postController.js`
- [Saved posts](https://github.com/sakin08/sust-connect/blob/main/backend/routes/savedPostRoutes.js): `backend/routes/savedPostRoutes.js`
- [Marketplace](https://github.com/sakin08/sust-connect/blob/main/backend/controllers/buySellController.js): `backend/controllers/buySellController.js`
- [Events and calendar](https://github.com/sakin08/sust-connect/blob/main/backend/controllers/eventController.js): `backend/controllers/eventController.js`
- [Academic tools](https://github.com/sakin08/sust-connect/blob/main/backend/controllers/studyGroupController.js): `backend/controllers/studyGroupController.js`
- [Campus services](https://github.com/sakin08/sust-connect/blob/main/backend/controllers/bloodDonorController.js): `backend/controllers/bloodDonorController.js`
- [Digital elections](https://github.com/sakin08/sust-connect/blob/main/backend/controllers/electionController.js): `backend/controllers/electionController.js`

### Realtime messaging

- [Socket handlers](https://github.com/sakin08/sust-connect/blob/main/backend/socket/socketHandler.js): `backend/socket/socketHandler.js`
- [Message records](https://github.com/sakin08/sust-connect/blob/main/backend/models/Message.js): `backend/models/Message.js`

### Administration

- [Admin console](https://github.com/sakin08/sust-connect/blob/main/frontend/src/pages/AdminPanel.jsx): `frontend/src/pages/AdminPanel.jsx`
- [Admin routes](https://github.com/sakin08/sust-connect/blob/main/backend/routes/adminRoutes.js): `backend/routes/adminRoutes.js`
- [Admin operations](https://github.com/sakin08/sust-connect/blob/main/backend/controllers/adminController.js): `backend/controllers/adminController.js`

### Other components

- **Campus users**

## Connections

- Campus users → React application: use
- React application → API clients: request data
- React application → Auth context: use identity
- API clients → Express API: HTTP requests
- Express API → Auth routes: mounts
- Auth routes → Auth logic: dispatch
- Auth logic → User records: read and write
- User records → MongoDB data: persist
- Express API → Social and feed: dispatches social APIs
- Express API → Saved posts: mounts saved-post APIs
- Saved posts → User records: read and update
- Express API → Marketplace: dispatches marketplace APIs
- Express API → Events and calendar: dispatches event APIs
- Express API → Academic tools: dispatches study-group APIs
- Express API → Campus services: dispatches service APIs
- Express API → Digital elections: dispatches election APIs
- Digital elections → MongoDB data: read and write election data
- Chat interface → Socket handlers: send and receive
- Socket handlers → Message records: create and update
- Socket handlers → Campus users: deliver live events
- Campus users → Admin console: administer
- Admin console → Admin routes: admin requests
- Admin routes → Admin operations: dispatch
- Admin operations → MongoDB data: query and update records
