DVLD (Driving Vehicle Licensing Department) is a production-ready desktop application designed for government agencies and driving schools to manage the complete driving license lifecycle. The system handles everything from initial applications and testing to license issuance, renewals, replacements, and enforcement actions.
- 🏗️ Clean 3-Tier Architecture — Fully decoupled layers for maintainability and scalability
- 🔒 Secure User Management — Role-based access control with password encryption
- 📊 Comprehensive Logging — Track all system activities and user actions
- ⚡ High Performance — Optimized ADO.NET data access with stored procedures
- 🎯 Business Rule Enforcement — Automatic validation of complex licensing rules
Watch the complete system walkthrough demonstrating all core features
Click the thumbnail above to watch on YouTube
| Feature | Description |
|---|---|
| New License Applications | Process first-time driving license requests with complete documentation |
| License Renewals | Handle expired license renewals with fee calculation |
| Lost License Replacement | Issue replacement licenses for lost documents |
| Damaged License Replacement | Replace physically damaged licenses |
| International Licenses | Issue international driving permits based on valid local licenses |
| Feature | Description |
|---|---|
| Vision Test | Schedule and record vision/eye examination results |
| Written Theory Test | Manage theoretical knowledge assessments |
| Practical Street Test | Handle behind-the-wheel driving examinations |
| Test Retakes | Process retake applications with dynamic fee calculation |
| Sequential Enforcement | Ensure tests are passed in the correct order |
The system supports 7 distinct license classes:
| Class | Type | Description |
|---|---|---|
| 1 | Small Motorcycle | Motorcycles up to 125cc |
| 2 | Heavy Motorcycle | Motorcycles over 125cc |
| 3 | Ordinary License | Standard passenger vehicles |
| 4 | Commercial | Taxis and commercial transport |
| 5 | Agricultural | Tractors and farm equipment |
| 6 | Bus (Small/Medium) | Passenger buses up to 26 seats |
| 7 | Truck & Heavy Vehicle | Large trucks and heavy machinery |
- Centralized Person Registry — Single source of truth for all individuals
- National ID Validation — Prevent duplicate entries
- Driver Profiles — Automatic driver creation upon first license issuance
- Complete History — Track all licenses, tests, and applications per person
- License Detention — Detain licenses for traffic violations
- Fine Processing — Record and track violation fines
- Release Management — Process detained license releases with fee collection
- User Management — Create, edit, and deactivate system users
- Application Types — Configure available services and their fees
- License Classes — Manage validity periods and fee structures
- Audit Logging — Track all system changes and user activities
The system implements a clean 3-Tier Architecture ensuring separation of concerns, maintainability, and testability.
┌─────────────────────────────────────────────────────────────────┐
│ PRESENTATION LAYER │
│ (DVLD.WinForms) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Forms │ │ User │ │Controls │ │Navigation│ │Resources│ │
│ │ │ │Controls │ │ │ │ Forms │ │ │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │
└───────┼──────────┼──────────┼──────────┼──────────┼───────────┘
│ │ │ │ │
└──────────┴──────────┴──────────┴──────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ BUSINESS LAYER │
│ (DVLD.Business) │
│ ┌──────────────────┐ ┌──────────────────┐ ┌───────────────┐ │
│ │ Application │ │ License │ │ Test │ │
│ │ Services │ │ Services │ │ Services │ │
│ ├──────────────────┤ ├──────────────────┤ ├───────────────┤ │
│ │ • ApplicationSvc │ │ • LicenseService │ │ • TestService │ │
│ │ • LocalDLAppSvc │ │ • DetainedLicSvc │ │ • Appointment │ │
│ │ • AppTypeSvc │ │ • IntlLicenseSvc │ │ Service │ │
│ └────────┬─────────┘ └────────┬─────────┘ └───────┬───────┘ │
│ │ ┌─────────────────────────────────────┐ │ │
│ │ │ Entity Validators │ │ │
│ │ │ (Business Rule Enforcement) │ │ │
│ │ └─────────────────────────────────────┘ │ │
└───────────┼────────────────────┼────────────────────┼──────────┘
│ │ │
└────────────────────┴────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ DATA LAYER │
│ (DVLD.Data) │
│ ┌──────────────────┐ ┌──────────────────┐ ┌───────────────┐ │
│ │ Application │ │ License │ │ Test │ │
│ │ Repositories │ │ Repositories │ │ Repositories │ │
│ ├──────────────────┤ ├──────────────────┤ ├───────────────┤ │
│ │ • ApplicationRepo│ │ • LicenseRepo │ │ • TestRepo │ │
│ │ • LocalDLAppRepo │ │ • DetainedLicRepo│ │ • Appointment │ │
│ │ • AppTypeRepo │ │ • IntlLicenseRepo│ │ Repo │ │
│ └────────┬─────────┘ └────────┬─────────┘ └───────┬───────┘ │
│ │ ┌─────────────────────────────────────┐ │ │
│ │ │ Core Repositories │ │ │
│ │ │ Person │ Driver │ Country │ User │ │ │
│ │ └─────────────────────────────────────┘ │ │
└───────────┼────────────────────┼────────────────────┼──────────┘
│ │ │
└────────────────────┴────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ CORE LAYER │
│ (DVLD.Core) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────┐│
│ │ DTOs │ │ Enums │ │ Utilities ││
│ │ (Entities) │ │ │ │ ││
│ ├──────────────┤ ├──────────────┤ ├──────────────────────────┤│
│ │ • Person │ │ • Gender │ │ • Validators ││
│ │ • Driver │ │ • LicenseClass│ │ • Exceptions ││
│ │ • License │ │ • IssueReason│ │ • Logging (AppLogger) ││
│ │ • Application│ │ • AppStatus │ │ • Helpers (PathHelper) ││
│ │ • Test │ │ • TestType │ │ ││
│ │ • User │ │ • AppType │ │ ││
│ └──────────────┘ └──────────────┘ └──────────────────────────┘│
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ DATABASE │
│ Microsoft SQL Server │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Tables │ Views │ Stored Procedures │ Functions │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
DVLD-Driving-License-Management-System/
│
├── 📂 DVLD.Core/ # Core layer - shared across all layers
│ ├── DTOs/
│ │ ├── Entities/ # Data Transfer Objects
│ │ │ ├── Application.cs
│ │ │ ├── Person.cs
│ │ │ ├── Driver.cs
│ │ │ ├── License.cs
│ │ │ ├── Test.cs
│ │ │ └── ...
│ │ └── Enums/
│ │ └── Enums.cs # System enumerations
│ ├── Validators/ # Input validation
│ ├── Exceptions/ # Custom exceptions
│ ├── Logging/ # Application logging
│ └── Helpers/ # Utility classes
│
├── 📂 DVLD.Data/ # Data access layer
│ ├── Application/ # Application repositories
│ ├── License/ # License repositories
│ ├── Test/ # Test repositories
│ ├── CoreRepositories/ # Person, Driver, User, Country
│ └── DataSettings.cs # Connection string configuration
│
├── 📂 DVLD.Business/ # Business logic layer
│ ├── Application/ # Application services
│ ├── License/ # License services
│ ├── Test/ # Test services
│ ├── CoreServices/ # Person, Driver, User services
│ └── EntityValidators/ # Business rule validators
│
├── 📂 DVLD.WinForms/ # Presentation layer
│ ├── Applications/ # Application management forms
│ ├── Licenses/ # License management forms
│ ├── Tests/ # Test management forms
│ ├── People/ # Person management forms
│ ├── Drivers/ # Driver management forms
│ ├── Users/ # User management forms
│ └── NavigateForms/ # Navigation and main forms
│
├── 📂 Database/
│ ├── DVLD_Full_Script.sql # Complete database script
│ ├── Backups/ # Database backups
│ └── Diagrams/
│ ├── ERD/ # Entity Relationship Diagrams
│ └── Relational Schema/ # Database schema diagrams
│
├── 📂 Assets/ # Screenshots and images
├── 📄 DVLD.slnx # Visual Studio solution file
├── 📄 LICENSE # MIT License
└── 📄 README.md # This file
|
|
Before you begin, ensure you have the following installed:
- ✅ Visual Studio 2022 (or later) with .NET desktop development workload
- ✅ Microsoft SQL Server 2019 (or later) - Express edition works fine
- ✅ SQL Server Management Studio (SSMS) - for database setup
- ✅ Git - for cloning the repository
git clone https://github.com/MohamedRaghebOmer/DVLD-Driving-License-Management-System.git
cd DVLD-Driving-License-Management-System- Open SQL Server Management Studio (SSMS)
- Connect to your SQL Server instance
- Open the file
Database/DVLD_Full_Script.sql - Execute the script to create the database and all objects
-- The script will create:
-- • DVLD database
-- • All required tables
-- • Stored procedures
-- • Initial lookup data (countries, license classes, etc.)
-- • Sample test data (optional)Open DVLD.Data/DataSettings.cs and update the connection string:
public static readonly string connectionString =
"server=YOUR_SERVER_NAME;database=DVLD;user id=YOUR_USER;password=YOUR_PASSWORD;TrustServerCertificate=True";Examples:
// Windows Authentication (recommended for development)
"server=.;database=DVLD;Integrated Security=True;TrustServerCertificate=True"
// SQL Server Authentication
"server=localhost;database=DVLD;user id=sa;password=YourPassword;TrustServerCertificate=True"
// Named Instance
"server=.\\SQLEXPRESS;database=DVLD;Integrated Security=True;TrustServerCertificate=True"- Open
DVLD.slnxin Visual Studio 2022 - Right-click on
DVLD.WinForms→ Set as Startup Project - Press
F5or click Start to build and run
| Username | Password | Role |
|---|---|---|
admin |
admin |
Administrator |
⚠️ Security Note: Change the default credentials immediately after first login in a production environment.
👥 People Management
Searchable list of all registered persons
Detailed person information with photo
📝 License Applications
Create new driving license application
Application processing and status tracking
🧪 Test Scheduling
Schedule vision examination
Schedule written theory test
Schedule practical street driving test
Building this system provided hands-on experience with:
| Area | Skills Developed |
|---|---|
| Architecture | Designing and implementing clean 3-tier architecture from scratch |
| Business Logic | Modeling complex real-world business rules and workflows |
| Data Access | Working with ADO.NET, stored procedures, and SQL Server |
| UI Development | Building reusable WinForms UserControls and forms |
| Error Handling | Implementing structured exception handling and logging |
| Validation | Creating comprehensive input validation at multiple layers |
| Security | Implementing user authentication and role-based access |
Future enhancements planned for this project:
- 🔄 Migrate from ADO.NET to Entity Framework Core
- 🧪 Add comprehensive unit testing with xUnit
- 🎨 Upgrade UI to WPF with modern MVVM pattern
- 📄 Implement PDF report generation for licenses and statistics
- 🌐 Create a Web API version for mobile/web access
- 📊 Add dashboard analytics and reporting
- 🔔 Implement email notifications for expiring licenses
- 🌍 Add multi-language support (localization)
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2026 Mohamed Ragheb
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction...
Contributions are welcome! If you'd like to contribute:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Made with ❤️ by Mohamed Ragheb Omer










