# oml24/platformtrainingg architecture

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

- Interactive diagram: https://gitdiagram.com/oml24/platformtrainingg
- Repository: https://github.com/oml24/platformtrainingg

## Overview

ZU LMS is Zarqa University’s training-management portal. Users enter through the web API; sampled lecture endpoints delegate attendance and lecture operations to application services. The wider application supports course proposals and lifecycle, evaluations, certificates, identity and permissions, files, organizational synchronization, and administration. Application services use shared persistence and infrastructure abstractions. Several major capabilities are represented by their exact feature directories because their implementation was not sampled; their internal connections are therefore omitted rather than inferred.

Main entry points: [`src/ZuLms.Application/Features/Courses/CourseProposalQueryService.cs`](https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Application/Features/Courses/CourseProposalQueryService.cs) (Proposal queries), [`src/ZuLms.Web/Api/LecturesController.cs`](https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Web/Api/LecturesController.cs) (Lecture endpoints), [`src/ZuLms.Application/Features/Courses`](https://github.com/oml24/platformtrainingg/tree/main/src/ZuLms.Application/Features/Courses) (Course services), [`src/ZuLms.Application/Features/Auth/AuthService.cs`](https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Application/Features/Auth/AuthService.cs) (Authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web portal"]
  node_api["Web API<br/>[Api]"]
  node_lecture_api["Lecture endpoints"]
end

subgraph group_training["Training management"]
  node_courses["Course services<br/>[Courses]"]
  node_proposals["Proposal queries"]
  node_evaluations["Evaluations<br/>[Courses]"]
  node_certificates["Certificates"]
  node_professional_certs["Professional certifications<br/>[ProCerts]"]
  node_needs["Training needs<br/>[Needs]"]
end

subgraph group_identity["Identity and access"]
  node_auth["Authentication<br/>[AuthService.cs]"]
  node_permissions["Permission service"]
end

subgraph group_university["University services"]
  node_sync["Organization sync<br/>[Sync]"]
  node_university_api["University API client"]
end

subgraph group_platform["Persistence and infrastructure"]
  node_db_contract["Data context contract<br/>[IAppDbContext.cs]"]
  node_database[("Application database<br/>[AppDbContext.cs]")]
  node_file_storage["File storage<br/>[DiskFileStorage.cs]"]
  node_email_worker["Email outbox worker"]
end

node_users(("Portal users"))

node_users -->|"request"| node_lecture_api
node_lecture_api -->|"delegates"| node_courses
node_lecture_api -->|"attendance calls"| node_courses
node_proposals -->|"queries"| node_db_contract
node_proposals -->|"checks access"| node_permissions
node_proposals -->|"reads course data"| node_courses
node_auth -->|"uses"| node_db_contract
node_auth -->|"checks permissions"| node_permissions
node_university_api -.->|"supports sync"| node_sync

click node_api "https://github.com/oml24/platformtrainingg/tree/main/src/ZuLms.Web/Api"
click node_lecture_api "https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Web/Api/LecturesController.cs"
click node_auth "https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Application/Features/Auth/AuthService.cs"
click node_permissions "https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Application/Features/Permissions/PermissionService.cs"
click node_courses "https://github.com/oml24/platformtrainingg/tree/main/src/ZuLms.Application/Features/Courses"
click node_proposals "https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Application/Features/Courses/CourseProposalQueryService.cs"
click node_evaluations "https://github.com/oml24/platformtrainingg/tree/main/src/ZuLms.Application/Features/Courses"
click node_certificates "https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Application/Features/Certificates/CertificateService.cs"
click node_professional_certs "https://github.com/oml24/platformtrainingg/tree/main/src/ZuLms.Application/Features/ProCerts"
click node_needs "https://github.com/oml24/platformtrainingg/tree/main/src/ZuLms.Application/Features/Needs"
click node_sync "https://github.com/oml24/platformtrainingg/tree/main/src/ZuLms.Application/Features/Sync"
click node_university_api "https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Infrastructure/University/UniversityApiClient.cs"
click node_db_contract "https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Application/Common/Abstractions/IAppDbContext.cs"
click node_database "https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Infrastructure/Persistence/AppDbContext.cs"
click node_file_storage "https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Infrastructure/Files/DiskFileStorage.cs"
click node_email_worker "https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Infrastructure/Background/EmailOutboxWorker.cs"

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,node_lecture_api,node_users toneBlue
class node_courses,node_proposals,node_evaluations,node_certificates,node_professional_certs,node_needs toneAmber
class node_auth,node_permissions toneMint
class node_sync,node_university_api toneRose
class node_db_contract,node_database,node_file_storage,node_email_worker toneIndigo
```

## Components

### Web portal

- [Web API](https://github.com/oml24/platformtrainingg/tree/main/src/ZuLms.Web/Api): `src/ZuLms.Web/Api`
- [Lecture endpoints](https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Web/Api/LecturesController.cs): `src/ZuLms.Web/Api/LecturesController.cs`

### Training management

- [Course services](https://github.com/oml24/platformtrainingg/tree/main/src/ZuLms.Application/Features/Courses): `src/ZuLms.Application/Features/Courses`
- [Proposal queries](https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Application/Features/Courses/CourseProposalQueryService.cs): `src/ZuLms.Application/Features/Courses/CourseProposalQueryService.cs`
- [Evaluations](https://github.com/oml24/platformtrainingg/tree/main/src/ZuLms.Application/Features/Courses): `src/ZuLms.Application/Features/Courses`
- [Certificates](https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Application/Features/Certificates/CertificateService.cs): `src/ZuLms.Application/Features/Certificates/CertificateService.cs`
- [Professional certifications](https://github.com/oml24/platformtrainingg/tree/main/src/ZuLms.Application/Features/ProCerts): `src/ZuLms.Application/Features/ProCerts`
- [Training needs](https://github.com/oml24/platformtrainingg/tree/main/src/ZuLms.Application/Features/Needs): `src/ZuLms.Application/Features/Needs`

### Identity and access

- [Authentication](https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Application/Features/Auth/AuthService.cs): `src/ZuLms.Application/Features/Auth/AuthService.cs`
- [Permission service](https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Application/Features/Permissions/PermissionService.cs): `src/ZuLms.Application/Features/Permissions/PermissionService.cs`

### University services

- [Organization sync](https://github.com/oml24/platformtrainingg/tree/main/src/ZuLms.Application/Features/Sync): `src/ZuLms.Application/Features/Sync`
- [University API client](https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Infrastructure/University/UniversityApiClient.cs): `src/ZuLms.Infrastructure/University/UniversityApiClient.cs`

### Persistence and infrastructure

- [Data context contract](https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Application/Common/Abstractions/IAppDbContext.cs): `src/ZuLms.Application/Common/Abstractions/IAppDbContext.cs`
- [Application database](https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Infrastructure/Persistence/AppDbContext.cs): `src/ZuLms.Infrastructure/Persistence/AppDbContext.cs`
- [File storage](https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Infrastructure/Files/DiskFileStorage.cs): `src/ZuLms.Infrastructure/Files/DiskFileStorage.cs`
- [Email outbox worker](https://github.com/oml24/platformtrainingg/blob/main/src/ZuLms.Infrastructure/Background/EmailOutboxWorker.cs): `src/ZuLms.Infrastructure/Background/EmailOutboxWorker.cs`

### Other components

- **Portal users**

## Connections

- Portal users → Lecture endpoints: request (evidence: `src/ZuLms.Web/Api/LecturesController.cs`)
- Lecture endpoints → Course services: delegates (evidence: `src/ZuLms.Web/Api/LecturesController.cs`)
- Lecture endpoints → Course services: attendance calls (evidence: `src/ZuLms.Web/Api/LecturesController.cs`)
- Proposal queries → Data context contract: queries (evidence: `src/ZuLms.Application/Features/Courses/CourseProposalQueryService.cs`)
- Proposal queries → Permission service: checks access (evidence: `src/ZuLms.Application/Features/Courses/CourseProposalQueryService.cs`)
- Proposal queries → Course services: reads course data (evidence: `src/ZuLms.Application/Features/Courses/CourseProposalQueryService.cs`)
- Authentication → Data context contract: uses (evidence: `src/ZuLms.Application/Features/Auth/AuthService.cs`)
- Authentication → Permission service: checks permissions (evidence: `src/ZuLms.Application/Features/Auth/AuthService.cs`)
- University API client → Organization sync: supports sync
