# vicharanashala/vibe architecture

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

- Interactive diagram: https://gitdiagram.com/vicharanashala/vibe
- Repository: https://github.com/vicharanashala/vibe

## Overview

ViBe is an educational platform for course-based learning, continuous assessment, and academic integrity. Students access courses, registration, issue reporting, and progress features; instructors manage courses and enrollment. Assessment and course content are supported by quiz, AI, and media modules, while proctoring and ejection policies provide integrity safeguards. The graph combines documented capabilities with sampled routing and service/repository relationships. Many feature implementations were not sampled, so their internal connections are omitted rather than inferred.

Main entry points: [`frontend/src/app/routes/student-routes.tsx`](https://github.com/vicharanashala/vibe/blob/main/frontend/src/app/routes/student-routes.tsx) (Student routes), [`backend/src/modules/ejectionPolicy/services/AutoEjectionEngine.ts`](https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/ejectionPolicy/services/AutoEjectionEngine.ts) (Automatic ejection), [`backend/src/modules/supportChat/services/FAQRetrievalService.ts`](https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/supportChat/services/FAQRetrievalService.ts) (FAQ retrieval), [`backend/src/modules/quizzes/question-processing/QuestionProcessor.ts`](https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/quizzes/question-processing/QuestionProcessor.ts) (Quiz assessment)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_learning["Learning and assessment"]
  node_student_routes["Student routes<br/>[student-routes.tsx]"]
  node_leaderboard_ui["Leaderboard<br/>[leaderboard.tsx]"]
  node_progress_service["Learning progress<br/>[ProgressService.ts]"]
  node_quiz_engine["Quiz assessment"]
  node_course_content["Course content<br/>[ItemController.ts]"]
end

subgraph group_enrollment["Enrollment and course operations"]
  node_course_registration_ui["Course registration"]
  node_teacher_routes["Teacher routes<br/>[teacher-routes.tsx]"]
  node_enrollment_ui["Enrollment management"]
  node_enrollment_controller["Enrollment API"]
  node_enrollment_service["Enrollment service"]
  node_enrollment_repository[("Enrollment data")]
end

subgraph group_integrity["Integrity and support"]
  node_flag_reporting_ui["Issue reporting<br/>[FlagResponse.tsx]"]
  node_proctoring["Smart proctoring<br/>[media-checks.ts]"]
  node_ejection_engine["Automatic ejection"]
  node_ejection_repository[("Ejection policies")]
  node_ejection_service["Manual ejection"]
  node_faq_retrieval["FAQ retrieval"]
  node_faq_store[("FAQ storage<br/>[index.ts]")]
end

subgraph group_platform["AI and media"]
  node_genai["AI question generation<br/>[GenAIService.ts]"]
  node_media_storage["Video storage"]
end

node_student(("Student"))
node_teacher(("Teacher"))
node_minimax{{"Embedding provider"}}

node_student -->|"opens"| node_student_routes
node_student_routes -->|"routes to"| node_course_registration_ui
node_student_routes -->|"routes to"| node_flag_reporting_ui
node_student_routes -->|"routes to"| node_leaderboard_ui
node_teacher -->|"opens"| node_teacher_routes
node_teacher_routes -->|"routes to"| node_enrollment_ui
node_enrollment_controller -->|"calls"| node_enrollment_service
node_enrollment_service -->|"queries"| node_enrollment_repository
node_enrollment_repository -.->|"uses progress data"| node_progress_service
node_ejection_engine -->|"loads policies"| node_ejection_repository
node_ejection_engine -->|"ejects learners"| node_ejection_service
node_faq_retrieval -->|"loads FAQs"| node_faq_store
node_faq_retrieval -->|"requests embeddings"| node_minimax
node_student -.->|"learns through"| node_course_content
node_student -.->|"takes assessments"| node_quiz_engine
node_quiz_engine -.->|"gets generated questions"| node_genai
node_student -.->|"is monitored by"| node_proctoring
node_course_content -.->|"uses video assets"| node_media_storage

click node_student_routes "https://github.com/vicharanashala/vibe/blob/main/frontend/src/app/routes/student-routes.tsx"
click node_course_registration_ui "https://github.com/vicharanashala/vibe/blob/main/frontend/src/app/pages/student/CourseRegistration.tsx"
click node_flag_reporting_ui "https://github.com/vicharanashala/vibe/blob/main/frontend/src/app/pages/student/FlagResponse.tsx"
click node_leaderboard_ui "https://github.com/vicharanashala/vibe/blob/main/frontend/src/app/pages/student/leaderboard.tsx"
click node_teacher_routes "https://github.com/vicharanashala/vibe/blob/main/frontend/src/app/routes/teacher-routes.tsx"
click node_enrollment_ui "https://github.com/vicharanashala/vibe/blob/main/frontend/src/app/pages/teacher/course-enrollments.tsx"
click node_enrollment_controller "https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/users/controllers/EnrollmentController.ts"
click node_enrollment_service "https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/users/services/EnrollmentService.ts"
click node_progress_service "https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/users/services/ProgressService.ts"
click node_enrollment_repository "https://github.com/vicharanashala/vibe/blob/main/backend/src/shared/database/providers/mongo/repositories/EnrollmentRepository.ts"
click node_quiz_engine "https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/quizzes/question-processing/QuestionProcessor.ts"
click node_course_content "https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/courses/controllers/ItemController.ts"
click node_genai "https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/genAI/services/GenAIService.ts"
click node_proctoring "https://github.com/vicharanashala/vibe/blob/main/v3/packages/proctoring/src/lib/media-checks.ts"
click node_ejection_engine "https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/ejectionPolicy/services/AutoEjectionEngine.ts"
click node_ejection_repository "https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/ejectionPolicy/repositories/providers/mongodb/EjectionPolicyRepository.ts"
click node_ejection_service "https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/ejectionPolicy/services/ManualEjectionService.ts"
click node_faq_retrieval "https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/supportChat/services/FAQRetrievalService.ts"
click node_faq_store "https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/supportChat/repositories/providers/mongodb/index.ts"
click node_media_storage "https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/media/services/storage/VideoStorageService.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_student_routes,node_leaderboard_ui,node_progress_service,node_quiz_engine,node_course_content toneBlue
class node_course_registration_ui,node_teacher_routes,node_enrollment_ui,node_enrollment_controller,node_enrollment_service,node_enrollment_repository toneAmber
class node_flag_reporting_ui,node_proctoring,node_ejection_engine,node_ejection_repository,node_ejection_service,node_faq_retrieval,node_faq_store toneMint
class node_genai,node_media_storage toneRose
class node_student,node_teacher,node_minimax toneIndigo
```

## Components

### Learning and assessment

- [Student routes](https://github.com/vicharanashala/vibe/blob/main/frontend/src/app/routes/student-routes.tsx): `frontend/src/app/routes/student-routes.tsx`
- [Leaderboard](https://github.com/vicharanashala/vibe/blob/main/frontend/src/app/pages/student/leaderboard.tsx): `frontend/src/app/pages/student/leaderboard.tsx`
- [Learning progress](https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/users/services/ProgressService.ts): `backend/src/modules/users/services/ProgressService.ts`
- [Quiz assessment](https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/quizzes/question-processing/QuestionProcessor.ts): `backend/src/modules/quizzes/question-processing/QuestionProcessor.ts`
- [Course content](https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/courses/controllers/ItemController.ts): `backend/src/modules/courses/controllers/ItemController.ts`

### Enrollment and course operations

- [Course registration](https://github.com/vicharanashala/vibe/blob/main/frontend/src/app/pages/student/CourseRegistration.tsx): `frontend/src/app/pages/student/CourseRegistration.tsx`
- [Teacher routes](https://github.com/vicharanashala/vibe/blob/main/frontend/src/app/routes/teacher-routes.tsx): `frontend/src/app/routes/teacher-routes.tsx`
- [Enrollment management](https://github.com/vicharanashala/vibe/blob/main/frontend/src/app/pages/teacher/course-enrollments.tsx): `frontend/src/app/pages/teacher/course-enrollments.tsx`
- [Enrollment API](https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/users/controllers/EnrollmentController.ts): `backend/src/modules/users/controllers/EnrollmentController.ts`
- [Enrollment service](https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/users/services/EnrollmentService.ts): `backend/src/modules/users/services/EnrollmentService.ts`
- [Enrollment data](https://github.com/vicharanashala/vibe/blob/main/backend/src/shared/database/providers/mongo/repositories/EnrollmentRepository.ts): `backend/src/shared/database/providers/mongo/repositories/EnrollmentRepository.ts`

### Integrity and support

- [Issue reporting](https://github.com/vicharanashala/vibe/blob/main/frontend/src/app/pages/student/FlagResponse.tsx): `frontend/src/app/pages/student/FlagResponse.tsx`
- [Smart proctoring](https://github.com/vicharanashala/vibe/blob/main/v3/packages/proctoring/src/lib/media-checks.ts): `v3/packages/proctoring/src/lib/media-checks.ts`
- [Automatic ejection](https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/ejectionPolicy/services/AutoEjectionEngine.ts): `backend/src/modules/ejectionPolicy/services/AutoEjectionEngine.ts`
- [Ejection policies](https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/ejectionPolicy/repositories/providers/mongodb/EjectionPolicyRepository.ts): `backend/src/modules/ejectionPolicy/repositories/providers/mongodb/EjectionPolicyRepository.ts`
- [Manual ejection](https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/ejectionPolicy/services/ManualEjectionService.ts): `backend/src/modules/ejectionPolicy/services/ManualEjectionService.ts`
- [FAQ retrieval](https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/supportChat/services/FAQRetrievalService.ts): `backend/src/modules/supportChat/services/FAQRetrievalService.ts`
- [FAQ storage](https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/supportChat/repositories/providers/mongodb/index.ts): `backend/src/modules/supportChat/repositories/providers/mongodb/index.ts`

### AI and media

- [AI question generation](https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/genAI/services/GenAIService.ts): `backend/src/modules/genAI/services/GenAIService.ts`
- [Video storage](https://github.com/vicharanashala/vibe/blob/main/backend/src/modules/media/services/storage/VideoStorageService.ts): `backend/src/modules/media/services/storage/VideoStorageService.ts`

### Other components

- **Student**
- **Teacher**
- **Embedding provider**

## Connections

- Student → Student routes: opens (evidence: `frontend/src/app/routes/student-routes.tsx`)
- Student routes → Course registration: routes to (evidence: `frontend/src/app/routes/student-routes.tsx`)
- Student routes → Issue reporting: routes to (evidence: `frontend/src/app/routes/student-routes.tsx`)
- Student routes → Leaderboard: routes to (evidence: `frontend/src/app/routes/student-routes.tsx`)
- Teacher → Teacher routes: opens (evidence: `frontend/src/app/routes/teacher-routes.tsx`)
- Teacher routes → Enrollment management: routes to (evidence: `frontend/src/app/routes/teacher-routes.tsx`)
- Enrollment API → Enrollment service: calls (evidence: `backend/src/modules/users/controllers/EnrollmentController.ts`)
- Enrollment service → Enrollment data: queries (evidence: `backend/src/modules/users/services/EnrollmentService.ts`)
- Enrollment data → Learning progress: uses progress data
- Automatic ejection → Ejection policies: loads policies (evidence: `backend/src/modules/ejectionPolicy/services/AutoEjectionEngine.ts`)
- Automatic ejection → Manual ejection: ejects learners (evidence: `backend/src/modules/ejectionPolicy/services/AutoEjectionEngine.ts`)
- FAQ retrieval → FAQ storage: loads FAQs (evidence: `backend/src/modules/supportChat/services/FAQRetrievalService.ts`)
- FAQ retrieval → Embedding provider: requests embeddings (evidence: `backend/src/modules/supportChat/services/FAQRetrievalService.ts`)
- Student → Course content: learns through
- Student → Quiz assessment: takes assessments
- Quiz assessment → AI question generation: gets generated questions
- Student → Smart proctoring: is monitored by
- Course content → Video storage: uses video assets
