# divash02/final-year-project architecture

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

- Interactive diagram: https://gitdiagram.com/divash02/final-year-project
- Repository: https://github.com/divash02/final-year-project

## Overview

CollegeOS is a browser-based institutional workspace backed by an Express modular monolith and MongoDB. The principal workflow is: a user enters through the browser, signs in, selects a workspace, and uses its institutional functions; frontend API requests are handled by backend routes and persisted through the database layer. Major capabilities include academics, admissions, LMS and assessments, examinations, documents, timetabling, communications, workflow, and AI. The README describes the overall frontend-to-backend architecture; edges between individual unsampled routes and services are omitted rather than inferred.

Main entry points: [`backend/src/app.js`](https://github.com/divash02/final-year-project/blob/main/backend/src/app.js) (Express API), [`backend/src/db.js`](https://github.com/divash02/final-year-project/blob/main/backend/src/db.js) (Database and session layer), [`frontend/src/App.tsx`](https://github.com/divash02/final-year-project/blob/main/frontend/src/App.tsx) (React application), [`backend/src/models/index.js`](https://github.com/divash02/final-year-project/blob/main/backend/src/models/index.js) (Domain models)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Browser application"]
  node_app["React application<br/>[App.tsx]"]
  node_context["Session and workspace state"]
  node_api_client["API client<br/>[apiClient.ts]"]
  node_login["Login view<br/>[LoginView.tsx]"]
  node_document_ui["Document workspace"]
end

subgraph group_access["Access and platform"]
  node_api["Express API<br/>[app.js]"]
  node_auth_routes["Authentication routes<br/>[auth.js]"]
  node_auth_middleware["Authentication middleware<br/>[auth.js]"]
  node_permissions["Permission catalog<br/>[catalog.js]"]
  node_db_layer["Database and session layer<br/>[db.js]"]
  node_models["Domain models<br/>[index.js]"]
end

subgraph group_learning["Teaching and learning"]
  node_academic_routes["Academic routes<br/>[academics.js]"]
  node_attendance_routes["Attendance routes<br/>[attendance.js]"]
  node_lms_routes["LMS routes<br/>[lms.js]"]
  node_quiz_routes["Quiz routes<br/>[quizzes.js]"]
  node_quiz_engine["Quiz runtime<br/>[quizEngine.js]"]
  node_exams["Examinations workspace"]
end

subgraph group_institution["Institutional services"]
  node_institution_routes["Institutional domain routes<br/>[administration.js]"]
  node_admissions["Admissions routes<br/>[admissions.js]"]
  node_documents["Document routes<br/>[documents.js]"]
  node_workflow["Workflow engine<br/>[workflowEngine.js]"]
end

subgraph group_intelligence["AI and automation"]
  node_ai_routes["AI routes<br/>[ai.js]"]
  node_ai_services["AI services"]
end

node_user(("Institution user"))
node_mongo[("MongoDB")]

node_user -->|"uses"| node_app
node_app -->|"provides state"| node_context
node_app -->|"renders"| node_login
node_context -->|"requests API"| node_api_client
node_document_ui -->|"uploads and requests"| node_api_client
node_app -->|"uses backend"| node_api
node_api -->|"registers"| node_auth_routes
node_api -->|"registers"| node_academic_routes
node_auth_routes -->|"authenticates users"| node_db_layer
node_db_layer -->|"connects"| node_mongo
node_db_layer -->|"uses models"| node_models
node_db_layer -->|"normalizes roles"| node_permissions
node_academic_routes -->|"uses database"| node_db_layer
node_academic_routes -->|"uses models"| node_models
node_api -.->|"registers"| node_attendance_routes
node_api -.->|"registers"| node_lms_routes
node_api -.->|"registers"| node_quiz_routes
node_quiz_engine -->|"uses quiz models"| node_models
node_quiz_engine -.->|"serves quiz runtime"| node_quiz_routes
node_exams -.->|"uses API"| node_api_client
node_api -.->|"registers"| node_institution_routes
node_api -.->|"registers"| node_admissions
node_api -.->|"registers"| node_documents
node_document_ui -.->|"requests documents"| node_documents
node_workflow -->|"uses models"| node_models
node_api -.->|"registers"| node_ai_routes
node_ai_routes -.->|"dispatches AI work"| node_ai_services

click node_app "https://github.com/divash02/final-year-project/blob/main/frontend/src/App.tsx"
click node_context "https://github.com/divash02/final-year-project/blob/main/frontend/src/context/CollegeOSContext.tsx"
click node_api_client "https://github.com/divash02/final-year-project/blob/main/frontend/src/services/apiClient.ts"
click node_login "https://github.com/divash02/final-year-project/blob/main/frontend/src/components/auth/LoginView.tsx"
click node_document_ui "https://github.com/divash02/final-year-project/blob/main/frontend/src/components/modules/SmartDocumentCentreView.tsx"
click node_api "https://github.com/divash02/final-year-project/blob/main/backend/src/app.js"
click node_auth_routes "https://github.com/divash02/final-year-project/blob/main/backend/src/routes/auth.js"
click node_auth_middleware "https://github.com/divash02/final-year-project/blob/main/backend/src/middleware/auth.js"
click node_permissions "https://github.com/divash02/final-year-project/blob/main/backend/src/permissions/catalog.js"
click node_db_layer "https://github.com/divash02/final-year-project/blob/main/backend/src/db.js"
click node_models "https://github.com/divash02/final-year-project/blob/main/backend/src/models/index.js"
click node_academic_routes "https://github.com/divash02/final-year-project/blob/main/backend/src/routes/academics.js"
click node_attendance_routes "https://github.com/divash02/final-year-project/blob/main/backend/src/routes/attendance.js"
click node_lms_routes "https://github.com/divash02/final-year-project/blob/main/backend/src/routes/lms.js"
click node_quiz_routes "https://github.com/divash02/final-year-project/blob/main/backend/src/routes/quizzes.js"
click node_quiz_engine "https://github.com/divash02/final-year-project/blob/main/backend/src/services/lms/quizEngine.js"
click node_exams "https://github.com/divash02/final-year-project/blob/main/frontend/src/components/modules/ExaminationWorkspaceView.tsx"
click node_institution_routes "https://github.com/divash02/final-year-project/blob/main/backend/src/routes/administration.js"
click node_admissions "https://github.com/divash02/final-year-project/blob/main/backend/src/routes/admissions.js"
click node_documents "https://github.com/divash02/final-year-project/blob/main/backend/src/routes/documents.js"
click node_workflow "https://github.com/divash02/final-year-project/blob/main/backend/src/services/workflowEngine.js"
click node_ai_routes "https://github.com/divash02/final-year-project/blob/main/backend/src/routes/ai.js"
click node_ai_services "https://github.com/divash02/final-year-project/tree/main/backend/src/services/ai"

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_context,node_api_client,node_login,node_document_ui,node_user toneBlue
class node_api,node_auth_routes,node_auth_middleware,node_permissions,node_db_layer,node_models,node_mongo toneAmber
class node_academic_routes,node_attendance_routes,node_lms_routes,node_quiz_routes,node_quiz_engine,node_exams toneMint
class node_institution_routes,node_admissions,node_documents,node_workflow toneRose
class node_ai_routes,node_ai_services toneIndigo
```

## Components

### Browser application

- [React application](https://github.com/divash02/final-year-project/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Session and workspace state](https://github.com/divash02/final-year-project/blob/main/frontend/src/context/CollegeOSContext.tsx): `frontend/src/context/CollegeOSContext.tsx`
- [API client](https://github.com/divash02/final-year-project/blob/main/frontend/src/services/apiClient.ts): `frontend/src/services/apiClient.ts`
- [Login view](https://github.com/divash02/final-year-project/blob/main/frontend/src/components/auth/LoginView.tsx): `frontend/src/components/auth/LoginView.tsx`
- [Document workspace](https://github.com/divash02/final-year-project/blob/main/frontend/src/components/modules/SmartDocumentCentreView.tsx): `frontend/src/components/modules/SmartDocumentCentreView.tsx`

### Access and platform

- [Express API](https://github.com/divash02/final-year-project/blob/main/backend/src/app.js): `backend/src/app.js`
- [Authentication routes](https://github.com/divash02/final-year-project/blob/main/backend/src/routes/auth.js): `backend/src/routes/auth.js`
- [Authentication middleware](https://github.com/divash02/final-year-project/blob/main/backend/src/middleware/auth.js): `backend/src/middleware/auth.js`
- [Permission catalog](https://github.com/divash02/final-year-project/blob/main/backend/src/permissions/catalog.js): `backend/src/permissions/catalog.js`
- [Database and session layer](https://github.com/divash02/final-year-project/blob/main/backend/src/db.js): `backend/src/db.js`
- [Domain models](https://github.com/divash02/final-year-project/blob/main/backend/src/models/index.js): `backend/src/models/index.js`

### Teaching and learning

- [Academic routes](https://github.com/divash02/final-year-project/blob/main/backend/src/routes/academics.js): `backend/src/routes/academics.js`
- [Attendance routes](https://github.com/divash02/final-year-project/blob/main/backend/src/routes/attendance.js): `backend/src/routes/attendance.js`
- [LMS routes](https://github.com/divash02/final-year-project/blob/main/backend/src/routes/lms.js): `backend/src/routes/lms.js`
- [Quiz routes](https://github.com/divash02/final-year-project/blob/main/backend/src/routes/quizzes.js): `backend/src/routes/quizzes.js`
- [Quiz runtime](https://github.com/divash02/final-year-project/blob/main/backend/src/services/lms/quizEngine.js): `backend/src/services/lms/quizEngine.js`
- [Examinations workspace](https://github.com/divash02/final-year-project/blob/main/frontend/src/components/modules/ExaminationWorkspaceView.tsx): `frontend/src/components/modules/ExaminationWorkspaceView.tsx`

### Institutional services

- [Institutional domain routes](https://github.com/divash02/final-year-project/blob/main/backend/src/routes/administration.js): `backend/src/routes/administration.js`
- [Admissions routes](https://github.com/divash02/final-year-project/blob/main/backend/src/routes/admissions.js): `backend/src/routes/admissions.js`
- [Document routes](https://github.com/divash02/final-year-project/blob/main/backend/src/routes/documents.js): `backend/src/routes/documents.js`
- [Workflow engine](https://github.com/divash02/final-year-project/blob/main/backend/src/services/workflowEngine.js): `backend/src/services/workflowEngine.js`

### AI and automation

- [AI routes](https://github.com/divash02/final-year-project/blob/main/backend/src/routes/ai.js): `backend/src/routes/ai.js`
- [AI services](https://github.com/divash02/final-year-project/tree/main/backend/src/services/ai): `backend/src/services/ai`

### Other components

- **Institution user**
- **MongoDB**

## Connections

- Institution user → React application: uses (evidence: `README.md`)
- React application → Session and workspace state: provides state (evidence: `frontend/src/App.tsx`)
- React application → Login view: renders (evidence: `frontend/src/App.tsx`)
- Session and workspace state → API client: requests API (evidence: `frontend/src/context/CollegeOSContext.tsx`)
- Document workspace → API client: uploads and requests (evidence: `frontend/src/components/modules/SmartDocumentCentreView.tsx`)
- React application → Express API: uses backend (evidence: `README.md`)
- Express API → Authentication routes: registers (evidence: `backend/src/app.js`)
- Express API → Academic routes: registers (evidence: `backend/src/app.js`)
- Authentication routes → Database and session layer: authenticates users (evidence: `backend/src/routes/auth.js`)
- Database and session layer → MongoDB: connects (evidence: `backend/src/db.js`)
- Database and session layer → Domain models: uses models (evidence: `backend/src/db.js`)
- Database and session layer → Permission catalog: normalizes roles (evidence: `backend/src/db.js`)
- Academic routes → Database and session layer: uses database (evidence: `backend/src/routes/academics.js`)
- Academic routes → Domain models: uses models (evidence: `backend/src/routes/academics.js`)
- Express API → Attendance routes: registers (evidence: `backend/src/app.js`)
- Express API → LMS routes: registers (evidence: `backend/src/app.js`)
- Express API → Quiz routes: registers (evidence: `backend/src/app.js`)
- Quiz runtime → Domain models: uses quiz models (evidence: `backend/src/services/lms/quizEngine.js`)
- Quiz runtime → Quiz routes: serves quiz runtime
- Examinations workspace → API client: uses API
- Express API → Institutional domain routes: registers (evidence: `backend/src/app.js`)
- Express API → Admissions routes: registers (evidence: `backend/src/app.js`)
- Express API → Document routes: registers (evidence: `backend/src/app.js`)
- Document workspace → Document routes: requests documents
- Workflow engine → Domain models: uses models (evidence: `backend/src/services/workflowEngine.js`)
- Express API → AI routes: registers (evidence: `backend/src/app.js`)
- AI routes → AI services: dispatches AI work
