A Windows Forms desktop application for managing equipment rentals within an organization. Employees can check out equipment, return items, and administrators can manage both the inventory and employee records.
- Employee Login — Authenticated login with PBKDF2-hashed passwords and masked input
- Equipment Checkout — Cart-based system for renting multiple items at once
- Equipment Returns — Return rented equipment by ID
- Admin Panel — Add/remove employees and equipment (admin-only access)
- Overdue Tracking — View all currently rented equipment (admin-only)
- Dashboard — Central navigation hub with role-based access control
- Framework: .NET 8.0 Windows Forms
- Language: C#
- Database: SQLite via Entity Framework Core
- ORM: Entity Framework Core 9.0
- Security: PBKDF2 password hashing (SHA-256, 100k iterations)
├── Models/
│ ├── DatabaseContext.cs # EF Core DbContext configuration
│ ├── Employee.cs # Employee entity
│ └── Equipment.cs # Equipment entity
├── Services/
│ ├── EmployeeService.cs # Employee business logic (login, CRUD)
│ ├── EquipmentService.cs # Equipment business logic (rent, return, CRUD)
│ └── PasswordHasher.cs # PBKDF2 password hashing utility
├── LoginForm.cs # Login form with password masking
├── Dashboard.cs # Main navigation dashboard
├── Admin.cs # Admin management panel
├── Checkout.cs # Equipment checkout with cart
├── Return Equipment.cs # Equipment return form
├── Overdue Equipment.cs # Rented equipment tracking
├── Cart.cs # Shopping cart for batch checkout
└── NavigationHelper.cs # Centralized form navigation
The application follows a layered architecture:
- Models — Entity classes mapped to SQLite tables via EF Core
- Services — Business logic layer handling data operations, validation, and password security
- Forms — Windows Forms UI layer with event-driven interactions
- Utilities — Shared helpers (navigation, password hashing)
- .NET 8.0 SDK
- Windows OS (WinForms requirement)
dotnet restore
dotnet runThe application requires a pre-seeded SQLite database with employee records. New employees can be added through the Admin panel — passwords are automatically hashed on creation.
| Column | Type | Description |
|---|---|---|
| EmployeeId | varchar(255) | Primary key |
| Password | varchar(255) | PBKDF2-hashed password |
| Name | varchar(255) | Full name |
| varchar(255) | Email address | |
| Phone | varchar(255) | Phone number |
| Role | varchar(255) | Job role |
| IsAdmin | BOOL | Admin access flag |
| LastLogin | DATETIME | Last login timestamp |
| Column | Type | Description |
|---|---|---|
| EquipmentId | varchar(255) | Primary key |
| EquipmentName | varchar(255) | Equipment name |
| RentingEmployee | varchar(255) | ID of employee renting (null if available) |
- Email notifications for overdue equipment are planned but not yet implemented
- No password reset flow — admin must create a new employee record
- Session state is passed between forms rather than using a centralized store