# ankit4565/enterprise-lms-platform architecture

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

- Interactive diagram: https://gitdiagram.com/ankit4565/enterprise-lms-platform
- Repository: https://github.com/ankit4565/enterprise-lms-platform

## Overview

This repository is a Spring Boot microservices backend for an enterprise learning management system. Learners and administrators authenticate through the gateway, then use course enrollment and learning features including lessons, progress, quizzes, assignments, and reviews; supporting services provide profiles, instructor applications, and media upload/playback. The tree documents these product capabilities, while sampled code confirms selected auth, review, profile, multipart upload, and transcoding behavior. Most service-to-service wiring and several domain implementations were not sampled, so those links are intentionally omitted.

Main entry points: [`backend/api-gateway/src/main/java/com/enterprise/gateway/ApiGatewayApplication.java`](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/api-gateway/src/main/java/com/enterprise/gateway/ApiGatewayApplication.java) (API gateway), [`backend/auth-service/src/main/java/com/enterprise/authservice/service/AuthService.java`](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/auth-service/src/main/java/com/enterprise/authservice/service/AuthService.java) (Auth and sessions), [`backend/media-service/src/main/java/com/enterprise/mediaservice/service/MediaService.java`](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/media-service/src/main/java/com/enterprise/mediaservice/service/MediaService.java) (Media lifecycle), [`backend/api-gateway/src/main/java/com/enterprise/gateway/filter/JwtAuthenticationGlobalFilter.java`](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/api-gateway/src/main/java/com/enterprise/gateway/filter/JwtAuthenticationGlobalFilter.java) (JWT gateway filter)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and identity"]
  node_gateway["API gateway"]
  node_gatewayjwt["JWT gateway filter"]
  node_authapi["Authentication API"]
  node_authlogic["Auth and sessions<br/>[AuthService.java]"]
  node_jwt["JWT service<br/>[JwtService.java]"]
  node_authstore[("Identity records")]
  node_otp["OTP and email<br/>[OtpService.java]"]
end

subgraph group_learning["Learning experience"]
  node_courses["Course catalog"]
  node_curriculum["Modules and lessons"]
  node_enrollment["Enrollment"]
  node_progress["Learning progress"]
  node_quiz["Quizzes and attempts<br/>[QuizService.java]"]
  node_assignment["Assignments"]
  node_reviews["Ratings and reviews"]
  node_reviewlogic["Review rules<br/>[ReviewService.java]"]
  node_reviewstore[("Review records")]
end

subgraph group_accounts["Learner accounts"]
  node_profile["Profiles and preferences"]
  node_profilelogic["Profile service"]
  node_instructor["Instructor applications"]
end

subgraph group_media["Media delivery"]
  node_mediaapi["Media API"]
  node_medialogic["Media lifecycle<br/>[MediaService.java]"]
  node_mediastore[("Media records")]
  node_storage["Object storage"]
  node_transcode["Transcoding jobs"]
end

node_learner(("Learner or admin"))
node_s3[("S3-compatible storage")]

node_learner -->|"sends requests"| node_gateway
node_gateway -->|"filters requests"| node_gatewayjwt
node_gateway -->|"routes auth"| node_authapi
node_authapi -->|"invokes"| node_authlogic
node_authlogic -->|"creates tokens"| node_jwt
node_authlogic -->|"reads/writes"| node_authstore
node_authlogic -->|"uses verification"| node_otp
node_gatewayjwt -.->|"validates tokens"| node_jwt
node_gateway -->|"routes learning"| node_courses
node_gateway -->|"routes learning"| node_curriculum
node_gateway -->|"routes enrollment"| node_enrollment
node_gateway -->|"routes progress"| node_progress
node_gateway -->|"routes quizzes"| node_quiz
node_gateway -->|"routes assignments"| node_assignment
node_gateway -->|"routes reviews"| node_reviews
node_reviews -->|"invokes"| node_reviewlogic
node_reviewlogic -->|"reads/writes"| node_reviewstore
node_gateway -->|"routes profiles"| node_profile
node_gateway -->|"routes applications"| node_instructor
node_profile -->|"invokes"| node_profilelogic
node_gateway -->|"routes media"| node_mediaapi
node_mediaapi -->|"invokes"| node_medialogic
node_medialogic -->|"reads/writes"| node_mediastore
node_medialogic -->|"requests upload URLs"| node_storage
node_storage -->|"manages objects"| node_s3
node_medialogic -->|"queues processing"| node_transcode

click node_gateway "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/api-gateway/src/main/java/com/enterprise/gateway/ApiGatewayApplication.java"
click node_gatewayjwt "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/api-gateway/src/main/java/com/enterprise/gateway/filter/JwtAuthenticationGlobalFilter.java"
click node_authapi "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/auth-service/src/main/java/com/enterprise/authservice/controller/AuthController.java"
click node_authlogic "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/auth-service/src/main/java/com/enterprise/authservice/service/AuthService.java"
click node_jwt "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/auth-service/src/main/java/com/enterprise/authservice/security/JwtService.java"
click node_authstore "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/auth-service/src/main/java/com/enterprise/authservice/repository/UserRepository.java"
click node_otp "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/auth-service/src/main/java/com/enterprise/authservice/service/OtpService.java"
click node_courses "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/course-service/src/main/java/com/enterprise/courseservice/controller/CourseController.java"
click node_curriculum "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/course-service/src/main/java/com/enterprise/courseservice/controller/ModuleLessonController.java"
click node_enrollment "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/course-service/src/main/java/com/enterprise/courseservice/controller/EnrolmentController.java"
click node_progress "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/course-service/src/main/java/com/enterprise/courseservice/controller/ProgressController.java"
click node_quiz "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/course-service/src/main/java/com/enterprise/courseservice/service/QuizService.java"
click node_assignment "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/course-service/src/main/java/com/enterprise/courseservice/controller/AssignmentController.java"
click node_reviews "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/course-service/src/main/java/com/enterprise/courseservice/controller/ReviewController.java"
click node_reviewlogic "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/course-service/src/main/java/com/enterprise/courseservice/service/ReviewService.java"
click node_reviewstore "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/course-service/src/main/java/com/enterprise/courseservice/repository/ReviewRepository.java"
click node_profile "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/user-service/src/main/java/com/enterprise/userservice/controller/ProfileController.java"
click node_profilelogic "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/user-service/src/main/java/com/enterprise/userservice/service/ProfileService.java"
click node_instructor "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/user-service/src/main/java/com/enterprise/userservice/service/InstructorApplicationService.java"
click node_mediaapi "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/media-service/src/main/java/com/enterprise/mediaservice/controller/MediaController.java"
click node_medialogic "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/media-service/src/main/java/com/enterprise/mediaservice/service/MediaService.java"
click node_mediastore "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/media-service/src/main/java/com/enterprise/mediaservice/repository/MediaRepository.java"
click node_storage "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/media-service/src/main/java/com/enterprise/mediaservice/storage/S3StorageService.java"
click node_transcode "https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/media-service/src/main/java/com/enterprise/mediaservice/service/TranscodeService.java"

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_gateway,node_gatewayjwt,node_authapi,node_authlogic,node_jwt,node_authstore,node_otp toneBlue
class node_courses,node_curriculum,node_enrollment,node_progress,node_quiz,node_assignment,node_reviews,node_reviewlogic,node_reviewstore,node_s3 toneAmber
class node_profile,node_profilelogic,node_instructor toneMint
class node_mediaapi,node_medialogic,node_mediastore,node_storage,node_transcode toneRose
class node_learner toneIndigo
```

## Components

### Access and identity

- [API gateway](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/api-gateway/src/main/java/com/enterprise/gateway/ApiGatewayApplication.java): `backend/api-gateway/src/main/java/com/enterprise/gateway/ApiGatewayApplication.java`
- [JWT gateway filter](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/api-gateway/src/main/java/com/enterprise/gateway/filter/JwtAuthenticationGlobalFilter.java): `backend/api-gateway/src/main/java/com/enterprise/gateway/filter/JwtAuthenticationGlobalFilter.java`
- [Authentication API](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/auth-service/src/main/java/com/enterprise/authservice/controller/AuthController.java): `backend/auth-service/src/main/java/com/enterprise/authservice/controller/AuthController.java`
- [Auth and sessions](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/auth-service/src/main/java/com/enterprise/authservice/service/AuthService.java): `backend/auth-service/src/main/java/com/enterprise/authservice/service/AuthService.java`
- [JWT service](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/auth-service/src/main/java/com/enterprise/authservice/security/JwtService.java): `backend/auth-service/src/main/java/com/enterprise/authservice/security/JwtService.java`
- [Identity records](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/auth-service/src/main/java/com/enterprise/authservice/repository/UserRepository.java): `backend/auth-service/src/main/java/com/enterprise/authservice/repository/UserRepository.java`
- [OTP and email](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/auth-service/src/main/java/com/enterprise/authservice/service/OtpService.java): `backend/auth-service/src/main/java/com/enterprise/authservice/service/OtpService.java`

### Learning experience

- [Course catalog](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/course-service/src/main/java/com/enterprise/courseservice/controller/CourseController.java): `backend/course-service/src/main/java/com/enterprise/courseservice/controller/CourseController.java`
- [Modules and lessons](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/course-service/src/main/java/com/enterprise/courseservice/controller/ModuleLessonController.java): `backend/course-service/src/main/java/com/enterprise/courseservice/controller/ModuleLessonController.java`
- [Enrollment](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/course-service/src/main/java/com/enterprise/courseservice/controller/EnrolmentController.java): `backend/course-service/src/main/java/com/enterprise/courseservice/controller/EnrolmentController.java`
- [Learning progress](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/course-service/src/main/java/com/enterprise/courseservice/controller/ProgressController.java): `backend/course-service/src/main/java/com/enterprise/courseservice/controller/ProgressController.java`
- [Quizzes and attempts](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/course-service/src/main/java/com/enterprise/courseservice/service/QuizService.java): `backend/course-service/src/main/java/com/enterprise/courseservice/service/QuizService.java`
- [Assignments](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/course-service/src/main/java/com/enterprise/courseservice/controller/AssignmentController.java): `backend/course-service/src/main/java/com/enterprise/courseservice/controller/AssignmentController.java`
- [Ratings and reviews](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/course-service/src/main/java/com/enterprise/courseservice/controller/ReviewController.java): `backend/course-service/src/main/java/com/enterprise/courseservice/controller/ReviewController.java`
- [Review rules](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/course-service/src/main/java/com/enterprise/courseservice/service/ReviewService.java): `backend/course-service/src/main/java/com/enterprise/courseservice/service/ReviewService.java`
- [Review records](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/course-service/src/main/java/com/enterprise/courseservice/repository/ReviewRepository.java): `backend/course-service/src/main/java/com/enterprise/courseservice/repository/ReviewRepository.java`

### Learner accounts

- [Profiles and preferences](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/user-service/src/main/java/com/enterprise/userservice/controller/ProfileController.java): `backend/user-service/src/main/java/com/enterprise/userservice/controller/ProfileController.java`
- [Profile service](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/user-service/src/main/java/com/enterprise/userservice/service/ProfileService.java): `backend/user-service/src/main/java/com/enterprise/userservice/service/ProfileService.java`
- [Instructor applications](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/user-service/src/main/java/com/enterprise/userservice/service/InstructorApplicationService.java): `backend/user-service/src/main/java/com/enterprise/userservice/service/InstructorApplicationService.java`

### Media delivery

- [Media API](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/media-service/src/main/java/com/enterprise/mediaservice/controller/MediaController.java): `backend/media-service/src/main/java/com/enterprise/mediaservice/controller/MediaController.java`
- [Media lifecycle](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/media-service/src/main/java/com/enterprise/mediaservice/service/MediaService.java): `backend/media-service/src/main/java/com/enterprise/mediaservice/service/MediaService.java`
- [Media records](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/media-service/src/main/java/com/enterprise/mediaservice/repository/MediaRepository.java): `backend/media-service/src/main/java/com/enterprise/mediaservice/repository/MediaRepository.java`
- [Object storage](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/media-service/src/main/java/com/enterprise/mediaservice/storage/S3StorageService.java): `backend/media-service/src/main/java/com/enterprise/mediaservice/storage/S3StorageService.java`
- [Transcoding jobs](https://github.com/ankit4565/enterprise-lms-platform/blob/main/backend/media-service/src/main/java/com/enterprise/mediaservice/service/TranscodeService.java): `backend/media-service/src/main/java/com/enterprise/mediaservice/service/TranscodeService.java`

### Other components

- **Learner or admin**
- **S3-compatible storage**

## Connections

- Learner or admin → API gateway: sends requests
- API gateway → JWT gateway filter: filters requests
- API gateway → Authentication API: routes auth
- Authentication API → Auth and sessions: invokes
- Auth and sessions → JWT service: creates tokens
- Auth and sessions → Identity records: reads/writes
- Auth and sessions → OTP and email: uses verification
- JWT gateway filter → JWT service: validates tokens
- API gateway → Course catalog: routes learning
- API gateway → Modules and lessons: routes learning
- API gateway → Enrollment: routes enrollment
- API gateway → Learning progress: routes progress
- API gateway → Quizzes and attempts: routes quizzes
- API gateway → Assignments: routes assignments
- API gateway → Ratings and reviews: routes reviews
- Ratings and reviews → Review rules: invokes
- Review rules → Review records: reads/writes
- API gateway → Profiles and preferences: routes profiles
- API gateway → Instructor applications: routes applications
- Profiles and preferences → Profile service: invokes
- API gateway → Media API: routes media
- Media API → Media lifecycle: invokes
- Media lifecycle → Media records: reads/writes
- Media lifecycle → Object storage: requests upload URLs
- Object storage → S3-compatible storage: manages objects
- Media lifecycle → Transcoding jobs: queues processing
