# rohn5783/veolms architecture

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

- Interactive diagram: https://gitdiagram.com/rohn5783/veolms
- Repository: https://github.com/rohn5783/veolms

## Overview

VeoLMS is a self-hostable learning platform: educators create and publish courses, while learners access lessons, track progress, and participate in course discussions. The API also supports academy operations such as enrollment, permissions, payments, and notifications. The graph preserves these documented product areas; the sampled source gives a verified enrollment route-to-service-to-repository path and push-pipeline wiring. Many other feature modules are represented from the README and tree, but their internal calls are not asserted because their source was not sampled.

Main entry points: [`apps/api/src/modules/commerce/enrollments/enrollment.service.ts`](https://github.com/rohn5783/veolms/blob/main/apps/api/src/modules/commerce/enrollments/enrollment.service.ts) (Enrollment service), [`apps/web`](https://github.com/rohn5783/veolms/tree/main/apps/web) (Web frontend), [`apps/api/src/modules/commerce/enrollments/enrollment.routes.ts`](https://github.com/rohn5783/veolms/blob/main/apps/api/src/modules/commerce/enrollments/enrollment.routes.ts) (Enrollment routes), [`apps/api/src/modules/commerce/enrollments/enrollment.controller.ts`](https://github.com/rohn5783/veolms/blob/main/apps/api/src/modules/commerce/enrollments/enrollment.controller.ts) (Enrollment controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Learning experience"]
  node_web["Web frontend"]
  node_course_authoring["Course authoring<br/>[course.service.ts]"]
  node_curriculum["Curriculum"]
  node_video_player["Video playback<br/>[VideoEngine.ts]"]
  node_progress["Learning progress"]
  node_discussions["Course discussions"]
  node_home["Course discovery"]
end

subgraph group_academy["Academy management"]
  node_auth["Authentication"]
  node_authorization["Staff permissions"]
  node_analytics["Academy analytics"]
end

subgraph group_commerce["Commerce and access"]
  node_enrollment_routes["Enrollment routes"]
  node_enrollment_controller["Enrollment controller"]
  node_enrollment_service["Enrollment service"]
  node_enrollment_repository["Enrollment repository"]
  node_payments["Payments and coupons"]
end

subgraph group_platform["API and integrations"]
  node_api["Fastify API<br/>[server.ts]"]
  node_database[("Database<br/>[client.ts]")]
  node_push_pipeline["Push notifications<br/>[push-pipeline.ts]"]
  node_push_delivery["Push delivery clients"]
end

node_educators(("Educators"))
node_learners(("Learners"))

node_educators -->|"create courses"| node_web
node_learners -->|"learn and engage"| node_web
node_web -->|"use platform API"| node_api
node_api -.->|"serves enrollment"| node_enrollment_routes
node_enrollment_routes -->|"registers routes"| node_enrollment_controller
node_enrollment_controller -->|"calls service"| node_enrollment_service
node_enrollment_service -->|"queries enrollments"| node_enrollment_repository
node_enrollment_service -->|"checks permissions"| node_authorization
node_learners -->|"watch lessons"| node_video_player
node_learners -->|"track learning"| node_progress
node_learners -->|"join discussions"| node_discussions
node_educators -->|"manage payments"| node_payments
node_educators -->|"manage staff access"| node_authorization
node_push_pipeline -->|"configures clients"| node_push_delivery

click node_web "https://github.com/rohn5783/veolms/tree/main/apps/web"
click node_course_authoring "https://github.com/rohn5783/veolms/blob/main/apps/api/src/modules/courses/course/course.service.ts"
click node_curriculum "https://github.com/rohn5783/veolms/blob/main/apps/api/src/modules/courses/curriculum/curriculum.service.ts"
click node_video_player "https://github.com/rohn5783/veolms/blob/main/packages/video-player/src/core/VideoEngine.ts"
click node_progress "https://github.com/rohn5783/veolms/tree/main/apps/api/src/modules/learning-progress"
click node_discussions "https://github.com/rohn5783/veolms/tree/main/apps/api/src/modules/learning/discussions"
click node_home "https://github.com/rohn5783/veolms/tree/main/apps/api/src/modules/home"
click node_auth "https://github.com/rohn5783/veolms/tree/main/apps/api/src/modules/auth"
click node_authorization "https://github.com/rohn5783/veolms/tree/main/apps/api/src/modules/authorization"
click node_analytics "https://github.com/rohn5783/veolms/blob/main/apps/api/src/modules/analytics/analytics.service.ts"
click node_enrollment_routes "https://github.com/rohn5783/veolms/blob/main/apps/api/src/modules/commerce/enrollments/enrollment.routes.ts"
click node_enrollment_controller "https://github.com/rohn5783/veolms/blob/main/apps/api/src/modules/commerce/enrollments/enrollment.controller.ts"
click node_enrollment_service "https://github.com/rohn5783/veolms/blob/main/apps/api/src/modules/commerce/enrollments/enrollment.service.ts"
click node_enrollment_repository "https://github.com/rohn5783/veolms/blob/main/apps/api/src/modules/commerce/enrollments/enrollment.repository.ts"
click node_payments "https://github.com/rohn5783/veolms/tree/main/apps/api/src/modules/commerce"
click node_api "https://github.com/rohn5783/veolms/blob/main/packages/api-core/src/server.ts"
click node_database "https://github.com/rohn5783/veolms/blob/main/packages/database/src/client.ts"
click node_push_pipeline "https://github.com/rohn5783/veolms/blob/main/apps/api/src/modules/notifications/push/push-pipeline.ts"
click node_push_delivery "https://github.com/rohn5783/veolms/tree/main/apps/api/src/modules/notifications/push"

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,node_course_authoring,node_curriculum,node_video_player,node_progress,node_discussions,node_home toneBlue
class node_auth,node_authorization,node_analytics toneAmber
class node_enrollment_routes,node_enrollment_controller,node_enrollment_service,node_enrollment_repository,node_payments toneMint
class node_api,node_database,node_push_pipeline,node_push_delivery toneRose
class node_educators,node_learners toneIndigo
```

## Components

### Learning experience

- [Web frontend](https://github.com/rohn5783/veolms/tree/main/apps/web): `apps/web`
- [Course authoring](https://github.com/rohn5783/veolms/blob/main/apps/api/src/modules/courses/course/course.service.ts): `apps/api/src/modules/courses/course/course.service.ts`
- [Curriculum](https://github.com/rohn5783/veolms/blob/main/apps/api/src/modules/courses/curriculum/curriculum.service.ts): `apps/api/src/modules/courses/curriculum/curriculum.service.ts`
- [Video playback](https://github.com/rohn5783/veolms/blob/main/packages/video-player/src/core/VideoEngine.ts): `packages/video-player/src/core/VideoEngine.ts`
- [Learning progress](https://github.com/rohn5783/veolms/tree/main/apps/api/src/modules/learning-progress): `apps/api/src/modules/learning-progress`
- [Course discussions](https://github.com/rohn5783/veolms/tree/main/apps/api/src/modules/learning/discussions): `apps/api/src/modules/learning/discussions`
- [Course discovery](https://github.com/rohn5783/veolms/tree/main/apps/api/src/modules/home): `apps/api/src/modules/home`

### Academy management

- [Authentication](https://github.com/rohn5783/veolms/tree/main/apps/api/src/modules/auth): `apps/api/src/modules/auth`
- [Staff permissions](https://github.com/rohn5783/veolms/tree/main/apps/api/src/modules/authorization): `apps/api/src/modules/authorization`
- [Academy analytics](https://github.com/rohn5783/veolms/blob/main/apps/api/src/modules/analytics/analytics.service.ts): `apps/api/src/modules/analytics/analytics.service.ts`

### Commerce and access

- [Enrollment routes](https://github.com/rohn5783/veolms/blob/main/apps/api/src/modules/commerce/enrollments/enrollment.routes.ts): `apps/api/src/modules/commerce/enrollments/enrollment.routes.ts`
- [Enrollment controller](https://github.com/rohn5783/veolms/blob/main/apps/api/src/modules/commerce/enrollments/enrollment.controller.ts): `apps/api/src/modules/commerce/enrollments/enrollment.controller.ts`
- [Enrollment service](https://github.com/rohn5783/veolms/blob/main/apps/api/src/modules/commerce/enrollments/enrollment.service.ts): `apps/api/src/modules/commerce/enrollments/enrollment.service.ts`
- [Enrollment repository](https://github.com/rohn5783/veolms/blob/main/apps/api/src/modules/commerce/enrollments/enrollment.repository.ts): `apps/api/src/modules/commerce/enrollments/enrollment.repository.ts`
- [Payments and coupons](https://github.com/rohn5783/veolms/tree/main/apps/api/src/modules/commerce): `apps/api/src/modules/commerce`

### API and integrations

- [Fastify API](https://github.com/rohn5783/veolms/blob/main/packages/api-core/src/server.ts): `packages/api-core/src/server.ts`
- [Database](https://github.com/rohn5783/veolms/blob/main/packages/database/src/client.ts): `packages/database/src/client.ts`
- [Push notifications](https://github.com/rohn5783/veolms/blob/main/apps/api/src/modules/notifications/push/push-pipeline.ts): `apps/api/src/modules/notifications/push/push-pipeline.ts`
- [Push delivery clients](https://github.com/rohn5783/veolms/tree/main/apps/api/src/modules/notifications/push): `apps/api/src/modules/notifications/push`

### Other components

- **Educators**
- **Learners**

## Connections

- Educators → Web frontend: create courses (evidence: `README.md`)
- Learners → Web frontend: learn and engage (evidence: `README.md`)
- Web frontend → Fastify API: use platform API (evidence: `README.md`)
- Fastify API → Enrollment routes: serves enrollment
- Enrollment routes → Enrollment controller: registers routes (evidence: `apps/api/src/modules/commerce/enrollments/enrollment.routes.ts`)
- Enrollment controller → Enrollment service: calls service (evidence: `apps/api/src/modules/commerce/enrollments/enrollment.controller.ts`)
- Enrollment service → Enrollment repository: queries enrollments (evidence: `apps/api/src/modules/commerce/enrollments/enrollment.service.ts`)
- Enrollment service → Staff permissions: checks permissions (evidence: `apps/api/src/modules/commerce/enrollments/enrollment.service.ts`)
- Learners → Video playback: watch lessons (evidence: `README.md`)
- Learners → Learning progress: track learning (evidence: `README.md`)
- Learners → Course discussions: join discussions (evidence: `README.md`)
- Educators → Payments and coupons: manage payments (evidence: `README.md`)
- Educators → Staff permissions: manage staff access (evidence: `README.md`)
- Push notifications → Push delivery clients: configures clients (evidence: `apps/api/src/modules/notifications/push/push-pipeline.ts`)
