# youssef-errachid/driving_license_management_system-backend architecture

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

- Interactive diagram: https://gitdiagram.com/youssef-errachid/driving_license_management_system-backend
- Repository: https://github.com/youssef-errachid/driving_license_management_system-backend
- Video tour (about a minute): https://gitdiagram.com/youssef-errachid/driving_license_management_system-backend/video

## Overview

DLMS is an internal staff REST API for managing people, service requests, examinations, license issuance and administration. Staff authenticate to obtain a JWT, then use role-protected endpoints for operational work; the documented exam progression is vision → theory → practical, with issuance and blocking as further lifecycle capabilities. Controllers delegate to services, which use repositories to persist domain entities in MySQL. The README documents additional dashboard, payment, international-license and configuration capabilities. Some subsystem links are omitted because their implementations were not sampled.

Main entry points: [`src/main/java/com/drivinglicense/service/impl`](https://github.com/youssef-errachid/driving_license_management_system-backend/tree/main/src/main/java/com/drivinglicense/service/impl) (Domain Services), [`src/main/java/com/drivinglicense/repository`](https://github.com/youssef-errachid/driving_license_management_system-backend/tree/main/src/main/java/com/drivinglicense/repository) (Data Repositories), [`src/main/java/com/drivinglicense/controller/AuthController.java`](https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/AuthController.java) (Authentication), [`src/main/java/com/drivinglicense/controller/PersonController.java`](https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/PersonController.java) (People Records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and API"]
  node_auth["Authentication"]
  node_security["JWT Security"]
end

subgraph group_operations["Candidate Operations"]
  node_people["People Records"]
  node_requests["Service Requests"]
  node_exams["Exam Workflow"]
  node_payments["Payments"]
  node_services["Domain Services"]
  node_cloudinary["Cloudinary Storage"]
end

subgraph group_licensing["License Lifecycle"]
  node_drivers["Driver Profiles"]
  node_licenses["License Issuance"]
  node_blocking["License Blocking"]
  node_international["International Licenses"]
end

subgraph group_admin["Administration"]
  node_dashboard["Staff Dashboards"]
  node_users["User Administration"]
  node_categories["License Categories"]
  node_examconfig["Exam Configuration"]
end

subgraph group_persistence["Persistence"]
  node_repositories["Data Repositories"]
  node_entities["Domain Entities"]
  node_mysql[("MySQL Database")]
  node_redis[("Redis Cache")]
end

node_staff(("Department Staff"))

node_staff -->|"submits login"| node_auth
node_auth -->|"delegates login"| node_services
node_services -->|"loads user"| node_repositories
node_services -->|"generates JWT"| node_security
node_staff -->|"sends JWT"| node_security
node_staff -->|"manages records"| node_people
node_staff -->|"manages requests"| node_requests
node_staff -->|"schedules and records"| node_exams
node_staff -->|"records payments"| node_payments
node_staff -->|"manages profiles"| node_drivers
node_staff -->|"issues licenses"| node_licenses
node_staff -->|"blocks licenses"| node_blocking
node_staff -->|"manages permits"| node_international
node_staff -->|"views dashboard"| node_dashboard
node_staff -->|"administers users"| node_users
node_staff -->|"configures categories"| node_categories
node_staff -->|"configures exam fees"| node_examconfig
node_people -->|"delegates operations"| node_services
node_requests -->|"delegates operations"| node_services
node_exams -->|"delegates operations"| node_services
node_licenses -->|"delegates operations"| node_services
node_users -->|"delegates operations"| node_services
node_services -->|"reads and writes"| node_repositories
node_repositories -->|"maps records"| node_entities
node_repositories -->|"persists data"| node_mysql
node_services -.->|"uses cache"| node_redis
node_services -.->|"stores files"| node_cloudinary

click node_auth "https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/AuthController.java"
click node_security "https://github.com/youssef-errachid/driving_license_management_system-backend/tree/main/src/main/java/com/drivinglicense/security"
click node_people "https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/PersonController.java"
click node_requests "https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/RequestController.java"
click node_exams "https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/ExamController.java"
click node_payments "https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/PaymentController.java"
click node_drivers "https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/DriverController.java"
click node_licenses "https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/LicenseController.java"
click node_blocking "https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/LicenseBlockController.java"
click node_international "https://github.com/youssef-errachid/driving_license_management_system-backend/tree/main/src/main/java/com/drivinglicense/dto/internationallicense"
click node_dashboard "https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/DashboardController.java"
click node_users "https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/UserController.java"
click node_categories "https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/LicenseCategoryController.java"
click node_examconfig "https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/ExamTypeConfigController.java"
click node_services "https://github.com/youssef-errachid/driving_license_management_system-backend/tree/main/src/main/java/com/drivinglicense/service/impl"
click node_repositories "https://github.com/youssef-errachid/driving_license_management_system-backend/tree/main/src/main/java/com/drivinglicense/repository"
click node_entities "https://github.com/youssef-errachid/driving_license_management_system-backend/tree/main/src/main/java/com/drivinglicense/entity"

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_auth,node_security toneBlue
class node_people,node_requests,node_exams,node_payments,node_services,node_cloudinary toneAmber
class node_drivers,node_licenses,node_blocking,node_international toneMint
class node_dashboard,node_users,node_categories,node_examconfig toneRose
class node_repositories,node_entities,node_mysql,node_redis,node_staff toneIndigo
```

## Components

### Access and API

- [Authentication](https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/AuthController.java): `src/main/java/com/drivinglicense/controller/AuthController.java`
- [JWT Security](https://github.com/youssef-errachid/driving_license_management_system-backend/tree/main/src/main/java/com/drivinglicense/security): `src/main/java/com/drivinglicense/security`

### Candidate Operations

- [People Records](https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/PersonController.java): `src/main/java/com/drivinglicense/controller/PersonController.java`
- [Service Requests](https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/RequestController.java): `src/main/java/com/drivinglicense/controller/RequestController.java`
- [Exam Workflow](https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/ExamController.java): `src/main/java/com/drivinglicense/controller/ExamController.java`
- [Payments](https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/PaymentController.java): `src/main/java/com/drivinglicense/controller/PaymentController.java`
- [Domain Services](https://github.com/youssef-errachid/driving_license_management_system-backend/tree/main/src/main/java/com/drivinglicense/service/impl): `src/main/java/com/drivinglicense/service/impl`
- **Cloudinary Storage**

### License Lifecycle

- [Driver Profiles](https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/DriverController.java): `src/main/java/com/drivinglicense/controller/DriverController.java`
- [License Issuance](https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/LicenseController.java): `src/main/java/com/drivinglicense/controller/LicenseController.java`
- [License Blocking](https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/LicenseBlockController.java): `src/main/java/com/drivinglicense/controller/LicenseBlockController.java`
- [International Licenses](https://github.com/youssef-errachid/driving_license_management_system-backend/tree/main/src/main/java/com/drivinglicense/dto/internationallicense): `src/main/java/com/drivinglicense/dto/internationallicense`

### Administration

- [Staff Dashboards](https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/DashboardController.java): `src/main/java/com/drivinglicense/controller/DashboardController.java`
- [User Administration](https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/UserController.java): `src/main/java/com/drivinglicense/controller/UserController.java`
- [License Categories](https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/LicenseCategoryController.java): `src/main/java/com/drivinglicense/controller/LicenseCategoryController.java`
- [Exam Configuration](https://github.com/youssef-errachid/driving_license_management_system-backend/blob/main/src/main/java/com/drivinglicense/controller/ExamTypeConfigController.java): `src/main/java/com/drivinglicense/controller/ExamTypeConfigController.java`

### Persistence

- [Data Repositories](https://github.com/youssef-errachid/driving_license_management_system-backend/tree/main/src/main/java/com/drivinglicense/repository): `src/main/java/com/drivinglicense/repository`
- [Domain Entities](https://github.com/youssef-errachid/driving_license_management_system-backend/tree/main/src/main/java/com/drivinglicense/entity): `src/main/java/com/drivinglicense/entity`
- **MySQL Database**
- **Redis Cache**

### Other components

- **Department Staff**

## Connections

- Department Staff → Authentication: submits login
- Authentication → Domain Services: delegates login
- Domain Services → Data Repositories: loads user
- Domain Services → JWT Security: generates JWT
- Department Staff → JWT Security: sends JWT
- Department Staff → People Records: manages records
- Department Staff → Service Requests: manages requests
- Department Staff → Exam Workflow: schedules and records
- Department Staff → Payments: records payments
- Department Staff → Driver Profiles: manages profiles
- Department Staff → License Issuance: issues licenses
- Department Staff → License Blocking: blocks licenses
- Department Staff → International Licenses: manages permits
- Department Staff → Staff Dashboards: views dashboard
- Department Staff → User Administration: administers users
- Department Staff → License Categories: configures categories
- Department Staff → Exam Configuration: configures exam fees
- People Records → Domain Services: delegates operations
- Service Requests → Domain Services: delegates operations
- Exam Workflow → Domain Services: delegates operations
- License Issuance → Domain Services: delegates operations
- User Administration → Domain Services: delegates operations
- Domain Services → Data Repositories: reads and writes
- Data Repositories → Domain Entities: maps records
- Data Repositories → MySQL Database: persists data
- Domain Services → Redis Cache: uses cache
- Domain Services → Cloudinary Storage: stores files
