# minhsuy/e-learning_server architecture

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

- Interactive diagram: https://gitdiagram.com/minhsuy/e-learning_server
- Repository: https://github.com/minhsuy/e-learning_server

## Overview

This repository is the TypeScript/Express backend for an e-learning platform. Students and teachers use its API to discover and manage courses, enroll, study lessons, track progress, and take quizzes; the platform also supports orders, certificates, notifications, and real-time chat. Routes dispatch requests to controllers and services, with MongoDB models holding domain state. Socket.IO handles live messaging and call signaling. The README documents several capabilities whose detailed implementation was not sampled, so those branches are shown at subsystem level; edges are limited to documented or indexed relationships.

Main entry points: [`src/routes/index.route.ts`](https://github.com/minhsuy/e-learning_server/blob/main/src/routes/index.route.ts) (API route registry), [`src/services/order.service.ts`](https://github.com/minhsuy/e-learning_server/blob/main/src/services/order.service.ts) (Orders and coupons), [`src/utils/pdfGenerator.ts`](https://github.com/minhsuy/e-learning_server/blob/main/src/utils/pdfGenerator.ts) (Certificates), [`src/models/course.model.ts`](https://github.com/minhsuy/e-learning_server/blob/main/src/models/course.model.ts) (Course catalog)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API and identity"]
  node_api_routes["API route registry<br/>[index.route.ts]"]
  node_user_auth["Accounts and access<br/>[user.controller.ts]"]
  node_admin_ops["Administration<br/>[admin.service.ts]"]
end

subgraph group_learning["Courses and learning"]
  node_course_mgmt["Course management<br/>[course.service.ts]"]
  node_course_data[("Course catalog<br/>[course.model.ts]")]
  node_lesson_content["Chapters and lessons<br/>[lesson.service.ts]"]
  node_enrollment["Enrollment tracking"]
  node_enrollment_data[("Enrollment records")]
  node_progress["Learning progress"]
  node_assessment["Quizzes and scoring"]
end

subgraph group_commerce["Commerce and outcomes"]
  node_orders["Orders and coupons<br/>[order.service.ts]"]
  node_order_data[("Order records<br/>[order.model.ts]")]
  node_certificates["Certificates<br/>[pdfGenerator.ts]"]
end

subgraph group_realtime["Communication"]
  node_notifications["Notifications"]
  node_chat["Chat messaging<br/>[message.service.ts]"]
  node_socket["Live socket events<br/>[initSocket.ts]"]
end

node_users(("Students and teachers"))
node_mongo[("MongoDB")]
node_cloudinary["Cloudinary storage"]

node_users -->|"use API"| node_api_routes
node_api_routes -->|"routes requests"| node_user_auth
node_api_routes -->|"routes requests"| node_admin_ops
node_api_routes -->|"routes requests"| node_course_mgmt
node_api_routes -->|"routes requests"| node_enrollment
node_api_routes -->|"routes requests"| node_orders
node_api_routes -->|"routes requests"| node_assessment
node_api_routes -->|"routes requests"| node_certificates
node_api_routes -->|"routes requests"| node_chat
node_course_mgmt -.->|"manages courses"| node_course_data
node_lesson_content -.->|"organizes content"| node_course_data
node_enrollment -->|"reads and updates"| node_enrollment_data
node_enrollment -->|"checks course"| node_course_data
node_progress -.->|"tracks completion"| node_enrollment_data
node_assessment -.->|"stores submissions"| node_mongo
node_orders -->|"creates and updates"| node_order_data
node_orders -->|"checks course"| node_course_data
node_orders -->|"enrolls buyers"| node_enrollment_data
node_orders -->|"sends alerts"| node_notifications
node_certificates -->|"stores PDFs"| node_cloudinary
node_progress -.->|"qualifies completion"| node_certificates
node_assessment -.->|"provides score"| node_certificates
node_socket -->|"dispatches messages"| node_chat
node_socket -->|"signals calls"| node_users
node_notifications -->|"persists alerts"| node_mongo
node_chat -.->|"stores messages"| node_mongo

click node_api_routes "https://github.com/minhsuy/e-learning_server/blob/main/src/routes/index.route.ts"
click node_user_auth "https://github.com/minhsuy/e-learning_server/blob/main/src/controller/user.controller.ts"
click node_admin_ops "https://github.com/minhsuy/e-learning_server/blob/main/src/services/admin.service.ts"
click node_course_mgmt "https://github.com/minhsuy/e-learning_server/blob/main/src/services/course.service.ts"
click node_course_data "https://github.com/minhsuy/e-learning_server/blob/main/src/models/course.model.ts"
click node_lesson_content "https://github.com/minhsuy/e-learning_server/blob/main/src/services/lesson.service.ts"
click node_enrollment "https://github.com/minhsuy/e-learning_server/blob/main/src/services/enrollment.service.ts"
click node_enrollment_data "https://github.com/minhsuy/e-learning_server/blob/main/src/models/enrollment.model.ts"
click node_progress "https://github.com/minhsuy/e-learning_server/blob/main/src/services/progress.service.ts"
click node_assessment "https://github.com/minhsuy/e-learning_server/blob/main/src/services/quizSubmission.service.ts"
click node_orders "https://github.com/minhsuy/e-learning_server/blob/main/src/services/order.service.ts"
click node_order_data "https://github.com/minhsuy/e-learning_server/blob/main/src/models/order.model.ts"
click node_certificates "https://github.com/minhsuy/e-learning_server/blob/main/src/utils/pdfGenerator.ts"
click node_notifications "https://github.com/minhsuy/e-learning_server/blob/main/src/services/notification.service.ts"
click node_chat "https://github.com/minhsuy/e-learning_server/blob/main/src/services/message.service.ts"
click node_socket "https://github.com/minhsuy/e-learning_server/blob/main/src/socket/initSocket.ts"

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_api_routes,node_user_auth,node_admin_ops toneBlue
class node_course_mgmt,node_course_data,node_lesson_content,node_enrollment,node_enrollment_data,node_progress,node_assessment,node_mongo,node_cloudinary toneAmber
class node_orders,node_order_data,node_certificates toneMint
class node_notifications,node_chat,node_socket toneRose
class node_users toneIndigo
```

## Components

### API and identity

- [API route registry](https://github.com/minhsuy/e-learning_server/blob/main/src/routes/index.route.ts): `src/routes/index.route.ts`
- [Accounts and access](https://github.com/minhsuy/e-learning_server/blob/main/src/controller/user.controller.ts): `src/controller/user.controller.ts`
- [Administration](https://github.com/minhsuy/e-learning_server/blob/main/src/services/admin.service.ts): `src/services/admin.service.ts`

### Courses and learning

- [Course management](https://github.com/minhsuy/e-learning_server/blob/main/src/services/course.service.ts): `src/services/course.service.ts`
- [Course catalog](https://github.com/minhsuy/e-learning_server/blob/main/src/models/course.model.ts): `src/models/course.model.ts`
- [Chapters and lessons](https://github.com/minhsuy/e-learning_server/blob/main/src/services/lesson.service.ts): `src/services/lesson.service.ts`
- [Enrollment tracking](https://github.com/minhsuy/e-learning_server/blob/main/src/services/enrollment.service.ts): `src/services/enrollment.service.ts`
- [Enrollment records](https://github.com/minhsuy/e-learning_server/blob/main/src/models/enrollment.model.ts): `src/models/enrollment.model.ts`
- [Learning progress](https://github.com/minhsuy/e-learning_server/blob/main/src/services/progress.service.ts): `src/services/progress.service.ts`
- [Quizzes and scoring](https://github.com/minhsuy/e-learning_server/blob/main/src/services/quizSubmission.service.ts): `src/services/quizSubmission.service.ts`

### Commerce and outcomes

- [Orders and coupons](https://github.com/minhsuy/e-learning_server/blob/main/src/services/order.service.ts): `src/services/order.service.ts`
- [Order records](https://github.com/minhsuy/e-learning_server/blob/main/src/models/order.model.ts): `src/models/order.model.ts`
- [Certificates](https://github.com/minhsuy/e-learning_server/blob/main/src/utils/pdfGenerator.ts): `src/utils/pdfGenerator.ts`

### Communication

- [Notifications](https://github.com/minhsuy/e-learning_server/blob/main/src/services/notification.service.ts): `src/services/notification.service.ts`
- [Chat messaging](https://github.com/minhsuy/e-learning_server/blob/main/src/services/message.service.ts): `src/services/message.service.ts`
- [Live socket events](https://github.com/minhsuy/e-learning_server/blob/main/src/socket/initSocket.ts): `src/socket/initSocket.ts`

### Other components

- **Students and teachers**
- **MongoDB**
- **Cloudinary storage**

## Connections

- Students and teachers → API route registry: use API
- API route registry → Accounts and access: routes requests
- API route registry → Administration: routes requests (evidence: `src/routes/index.route.ts`)
- API route registry → Course management: routes requests (evidence: `src/routes/index.route.ts`)
- API route registry → Enrollment tracking: routes requests
- API route registry → Orders and coupons: routes requests (evidence: `src/routes/index.route.ts`)
- API route registry → Quizzes and scoring: routes requests (evidence: `src/routes/index.route.ts`)
- API route registry → Certificates: routes requests (evidence: `src/routes/index.route.ts`)
- API route registry → Chat messaging: routes requests (evidence: `src/routes/index.route.ts`)
- Course management → Course catalog: manages courses
- Chapters and lessons → Course catalog: organizes content
- Enrollment tracking → Enrollment records: reads and updates (evidence: `src/services/enrollment.service.ts`)
- Enrollment tracking → Course catalog: checks course (evidence: `src/services/enrollment.service.ts`)
- Learning progress → Enrollment records: tracks completion
- Quizzes and scoring → MongoDB: stores submissions
- Orders and coupons → Order records: creates and updates (evidence: `src/services/order.service.ts`)
- Orders and coupons → Course catalog: checks course (evidence: `src/services/order.service.ts`)
- Orders and coupons → Enrollment records: enrolls buyers (evidence: `src/services/order.service.ts`)
- Orders and coupons → Notifications: sends alerts (evidence: `src/services/order.service.ts`)
- Certificates → Cloudinary storage: stores PDFs
- Learning progress → Certificates: qualifies completion
- Quizzes and scoring → Certificates: provides score
- Live socket events → Chat messaging: dispatches messages (evidence: `src/socket/initSocket.ts`)
- Live socket events → Students and teachers: signals calls (evidence: `src/socket/initSocket.ts`)
- Notifications → MongoDB: persists alerts (evidence: `src/services/notification.service.ts`)
- Chat messaging → MongoDB: stores messages
