# vd-phuc-2k5/elearning architecture

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

- Interactive diagram: https://gitdiagram.com/vd-phuc-2k5/elearning
- Repository: https://github.com/vd-phuc-2k5/elearning

## Overview

LearningHub is a learner-and-instructor platform combining a Next.js learning portal, a separate admin interface, and a NestJS API. The main user journey spans account access, finding learning content (question banks and roadmaps), practicing quizzes or coding, tracking attempts and progress, and participating in forums. Admins manage users, access controls, quiz banks, and coding problems. The tree and excerpts document these capabilities, but frontend-to-API wiring and most persistence implementations were not sampled, so those links are omitted.

Main entry points: [`LearningHub/apps/LearningHub/src/app/(main)`](https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/LearningHub/src/app/(main)) (Learning interface), [`LearningHub/apps/AdminPage/src/app/actions`](https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/AdminPage/src/app/actions) (Admin actions), [`LearningHub/apps/api/src/app.module.ts`](https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/api/src/app.module.ts) (NestJS application), [`LearningHub/apps/api/src/modules/quiz/application/use-cases`](https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/api/src/modules/quiz/application/use-cases) (Quiz bank operations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_portal["Learning portal"]
  node_learning_ui["Learning interface"]
  node_auth_ui["Sign-in and registration"]
  node_quiz_ui["Quiz practice"]
  node_roadmap_ui["Roadmap learning"]
  node_coding_ui["Coding playground"]
  node_forum_ui["Community forums"]
  node_api_service["Learning API client<br/>[api.ts]"]
end

subgraph group_admin["Administration"]
  node_admin_ui["Admin console"]
  node_admin_actions["Admin actions"]
  node_admin_api["Admin API client<br/>[admin-api.ts]"]
end

subgraph group_api["API domains"]
  node_api_entry["NestJS application<br/>[app.module.ts]"]
  node_quiz_controller["Quiz bank endpoints"]
  node_quiz_cases["Quiz bank operations"]
  node_quiz_import["Excel question parsing"]
  node_roadmap_controller["Roadmap endpoints"]
  node_forum_controller["Forum membership endpoints"]
  node_forum_cases["Forum membership operations"]
  node_problem_controller["Coding problem endpoints"]
end

subgraph group_identity["Identity and access"]
  node_auth_controller["Auth endpoints<br/>[auth.controller.ts]"]
  node_auth_cases["Auth use cases"]
  node_auth_repository["Auth repository adapter"]
  node_auth_contract["Auth repository contract<br/>[IAuthRepository.ts]"]
end

subgraph group_platform["Platform services"]
  node_sandbox_controller["Code execution endpoints"]
  node_sandbox_cases["Sandbox operations"]
end

node_learner(("Learner / instructor"))

node_learner -->|"signs in"| node_auth_ui
node_learner -->|"uses"| node_learning_ui
node_learning_ui -->|"opens quizzes"| node_quiz_ui
node_learning_ui -->|"opens roadmaps"| node_roadmap_ui
node_learning_ui -->|"opens playground"| node_coding_ui
node_learning_ui -->|"opens forums"| node_forum_ui
node_admin_ui -->|"invokes"| node_admin_actions
node_admin_actions -->|"uses"| node_admin_api
node_auth_controller -->|"executes"| node_auth_cases
node_quiz_controller -->|"executes"| node_quiz_cases
node_quiz_import -.->|"parses uploads for"| node_quiz_cases
node_roadmap_controller -->|"registered by"| node_api_entry
node_forum_controller -->|"executes"| node_forum_cases
node_problem_controller -->|"registered by"| node_api_entry
node_sandbox_controller -->|"executes"| node_sandbox_cases
node_auth_repository -->|"implements"| node_auth_contract

click node_learning_ui "https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/LearningHub/src/app/(main)"
click node_auth_ui "https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/LearningHub/src/app/auth"
click node_quiz_ui "https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/LearningHub/src/app/(main)/quiz"
click node_roadmap_ui "https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/LearningHub/src/app/(main)/roadmaps"
click node_coding_ui "https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/LearningHub/src/app/(main)/playground"
click node_forum_ui "https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/LearningHub/src/app/(main)/forum"
click node_admin_ui "https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/AdminPage/src/app/tabs"
click node_admin_actions "https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/AdminPage/src/app/actions"
click node_api_entry "https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/api/src/app.module.ts"
click node_auth_controller "https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/api/src/modules/auth/presentation/controllers/auth.controller.ts"
click node_auth_cases "https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/api/src/modules/auth/application/use-cases"
click node_quiz_controller "https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/api/src/modules/quiz/presentation/controllers/quiz-bank.controller.ts"
click node_quiz_cases "https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/api/src/modules/quiz/application/use-cases"
click node_quiz_import "https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/api/src/modules/quiz/infrastructure/services/excel-parser.service.ts"
click node_roadmap_controller "https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/api/src/modules/roadmap/presentation/controllers/roadmap.controller.ts"
click node_forum_controller "https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/api/src/modules/forum/presentation/controllers/forum-membership.controller.ts"
click node_forum_cases "https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/api/src/modules/forum/application/use-cases"
click node_problem_controller "https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/api/src/modules/judge/presentation/controllers/coding-problem.controller.ts"
click node_sandbox_controller "https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/api/src/modules/sandbox/presentation/controllers/sandbox.controller.ts"
click node_sandbox_cases "https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/api/src/modules/sandbox/application/use-cases"
click node_admin_api "https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/AdminPage/src/lib/admin-api.ts"
click node_api_service "https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/LearningHub/src/lib/api.ts"
click node_auth_repository "https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/packages/data/src/lib/auth/repositories/AuthRepositoryImpl.ts"
click node_auth_contract "https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/packages/domain/src/lib/auth/repositories/IAuthRepository.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_learning_ui,node_auth_ui,node_quiz_ui,node_roadmap_ui,node_coding_ui,node_forum_ui,node_api_service toneBlue
class node_admin_ui,node_admin_actions,node_admin_api toneAmber
class node_api_entry,node_quiz_controller,node_quiz_cases,node_quiz_import,node_roadmap_controller,node_forum_controller,node_forum_cases,node_problem_controller toneMint
class node_auth_controller,node_auth_cases,node_auth_repository,node_auth_contract toneRose
class node_sandbox_controller,node_sandbox_cases,node_learner toneIndigo
```

## Components

### Learning portal

- [Learning interface](https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/LearningHub/src/app/(main)): `LearningHub/apps/LearningHub/src/app/(main)`
- [Sign-in and registration](https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/LearningHub/src/app/auth): `LearningHub/apps/LearningHub/src/app/auth`
- [Quiz practice](https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/LearningHub/src/app/(main)/quiz): `LearningHub/apps/LearningHub/src/app/(main)/quiz`
- [Roadmap learning](https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/LearningHub/src/app/(main)/roadmaps): `LearningHub/apps/LearningHub/src/app/(main)/roadmaps`
- [Coding playground](https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/LearningHub/src/app/(main)/playground): `LearningHub/apps/LearningHub/src/app/(main)/playground`
- [Community forums](https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/LearningHub/src/app/(main)/forum): `LearningHub/apps/LearningHub/src/app/(main)/forum`
- [Learning API client](https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/LearningHub/src/lib/api.ts): `LearningHub/apps/LearningHub/src/lib/api.ts`

### Administration

- [Admin console](https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/AdminPage/src/app/tabs): `LearningHub/apps/AdminPage/src/app/tabs`
- [Admin actions](https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/AdminPage/src/app/actions): `LearningHub/apps/AdminPage/src/app/actions`
- [Admin API client](https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/AdminPage/src/lib/admin-api.ts): `LearningHub/apps/AdminPage/src/lib/admin-api.ts`

### API domains

- [NestJS application](https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/api/src/app.module.ts): `LearningHub/apps/api/src/app.module.ts`
- [Quiz bank endpoints](https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/api/src/modules/quiz/presentation/controllers/quiz-bank.controller.ts): `LearningHub/apps/api/src/modules/quiz/presentation/controllers/quiz-bank.controller.ts`
- [Quiz bank operations](https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/api/src/modules/quiz/application/use-cases): `LearningHub/apps/api/src/modules/quiz/application/use-cases`
- [Excel question parsing](https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/api/src/modules/quiz/infrastructure/services/excel-parser.service.ts): `LearningHub/apps/api/src/modules/quiz/infrastructure/services/excel-parser.service.ts`
- [Roadmap endpoints](https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/api/src/modules/roadmap/presentation/controllers/roadmap.controller.ts): `LearningHub/apps/api/src/modules/roadmap/presentation/controllers/roadmap.controller.ts`
- [Forum membership endpoints](https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/api/src/modules/forum/presentation/controllers/forum-membership.controller.ts): `LearningHub/apps/api/src/modules/forum/presentation/controllers/forum-membership.controller.ts`
- [Forum membership operations](https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/api/src/modules/forum/application/use-cases): `LearningHub/apps/api/src/modules/forum/application/use-cases`
- [Coding problem endpoints](https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/api/src/modules/judge/presentation/controllers/coding-problem.controller.ts): `LearningHub/apps/api/src/modules/judge/presentation/controllers/coding-problem.controller.ts`

### Identity and access

- [Auth endpoints](https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/api/src/modules/auth/presentation/controllers/auth.controller.ts): `LearningHub/apps/api/src/modules/auth/presentation/controllers/auth.controller.ts`
- [Auth use cases](https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/api/src/modules/auth/application/use-cases): `LearningHub/apps/api/src/modules/auth/application/use-cases`
- [Auth repository adapter](https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/packages/data/src/lib/auth/repositories/AuthRepositoryImpl.ts): `LearningHub/packages/data/src/lib/auth/repositories/AuthRepositoryImpl.ts`
- [Auth repository contract](https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/packages/domain/src/lib/auth/repositories/IAuthRepository.ts): `LearningHub/packages/domain/src/lib/auth/repositories/IAuthRepository.ts`

### Platform services

- [Code execution endpoints](https://github.com/vd-phuc-2k5/elearning/blob/master/LearningHub/apps/api/src/modules/sandbox/presentation/controllers/sandbox.controller.ts): `LearningHub/apps/api/src/modules/sandbox/presentation/controllers/sandbox.controller.ts`
- [Sandbox operations](https://github.com/vd-phuc-2k5/elearning/tree/master/LearningHub/apps/api/src/modules/sandbox/application/use-cases): `LearningHub/apps/api/src/modules/sandbox/application/use-cases`

### Other components

- **Learner / instructor**

## Connections

- Learner / instructor → Sign-in and registration: signs in
- Learner / instructor → Learning interface: uses
- Learning interface → Quiz practice: opens quizzes
- Learning interface → Roadmap learning: opens roadmaps
- Learning interface → Coding playground: opens playground
- Learning interface → Community forums: opens forums
- Admin console → Admin actions: invokes
- Admin actions → Admin API client: uses
- Auth endpoints → Auth use cases: executes
- Quiz bank endpoints → Quiz bank operations: executes
- Excel question parsing → Quiz bank operations: parses uploads for
- Roadmap endpoints → NestJS application: registered by
- Forum membership endpoints → Forum membership operations: executes
- Coding problem endpoints → NestJS application: registered by
- Code execution endpoints → Sandbox operations: executes
- Auth repository adapter → Auth repository contract: implements
