How youssef-errachid/driving_license_management_system-backend works
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: impl Domain Services · repository Data Repositories · AuthController.java Authentication · PersonController.java People Records
Components 21
Access and API
- Authentication
src/main/java/com/drivinglicense/controller/AuthController.java - JWT Security
src/main/java/com/drivinglicense/security
Candidate Operations
- People Records
src/main/java/com/drivinglicense/controller/PersonController.java - Service Requests
src/main/java/com/drivinglicense/controller/RequestController.java - Exam Workflow
src/main/java/com/drivinglicense/controller/ExamController.java - Payments
src/main/java/com/drivinglicense/controller/PaymentController.java - Domain Services
src/main/java/com/drivinglicense/service/impl - Cloudinary Storage
License Lifecycle
- Driver Profiles
src/main/java/com/drivinglicense/controller/DriverController.java - License Issuance
src/main/java/com/drivinglicense/controller/LicenseController.java - License Blocking
src/main/java/com/drivinglicense/controller/LicenseBlockController.java - International Licenses
src/main/java/com/drivinglicense/dto/internationallicense
Administration
- Staff Dashboards
src/main/java/com/drivinglicense/controller/DashboardController.java - User Administration
src/main/java/com/drivinglicense/controller/UserController.java - License Categories
src/main/java/com/drivinglicense/controller/LicenseCategoryController.java - Exam Configuration
src/main/java/com/drivinglicense/controller/ExamTypeConfigController.java
Persistence
- Data Repositories
src/main/java/com/drivinglicense/repository - Domain Entities
src/main/java/com/drivinglicense/entity - MySQL Database
- Redis Cache
Other components
- Department Staff
Connections 27
- 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