ENTERPRISE BACKEND / INTERNSHIP
Connecting the moving parts of fleet management.
Java and Spring Boot backend work for an enterprise fleet-management system at Morocco’s Ministry of Economy and Finance, connecting vehicles with their insurance, fuel, maintenance, and operational costs.
- CONTEXT
- Ministry of Economy and Finance
- CONTRIBUTION
- Software Engineering Intern
- PERIOD
- Jul 2026 – Sep 2026
- Java 17
- Spring Boot
- Spring Data JPA
- Hibernate
- REST APIs
- PostgreSQL
- JUnit 5
- Maven
The system behind the interface.
Fleet information spans several related workflows: a vehicle has a lifecycle, insurance records, fuel consumption, maintenance events, and associated expenditure. The engineering problem is to represent those relationships consistently and expose clear APIs for the people working with them.
What I worked on.
- Developed backend features using Java, Spring Boot, Spring Data JPA, and Hibernate.
- Implemented features across vehicle, insurance, fuel, maintenance, and operational cost management.
- Designed and integrated REST APIs backed by relational data and JPA entity relationships.
- Worked with Git, Agile development, unit testing, and clean architecture principles during the internship.
How the pieces connect.
An original diagram of the documented stack and application boundaries.
- 01REST controllers
HTTP endpoints and request/response DTOs expose fleet operations.
- 02Domain services
Vehicle, insurance, fuel, maintenance, and budget workflows hold business rules.
- 03JPA repositories
Spring Data JPA and Hibernate connect services to related entities.
- 04PostgreSQL
Relational persistence for fleet records and their operational relationships.
Decisions and their tradeoffs.
Keep the fleet connected through relational data.
JPA entity relationships represent the links between vehicles and their associated records. This supports structured queries across modules, while making relationship ownership and persistence boundaries important implementation concerns.
Give business rules a service boundary.
The source separates controllers, DTOs, services, entities, and repositories. This keeps HTTP handling distinct from domain workflows and database access, with additional mapping code as the cost of that separation.
Treat lifecycle changes as business events.
The maintenance source includes preventive alerts and changes to vehicle status when a breakdown is immobilizing. These interactions make consistency across maintenance, vehicle availability, and costs a central concern.
Testing and validation scope.
- Unit testing is part of the documented internship practice.
- The available source contains JUnit 5 tests using SpringBootTest, a test profile, and transactional service/database integration.
- Maintenance test source checks preventive alerts, vehicle status changes after breakdowns, incident handling, and budget effects; separate source covers budget/dashboard and acceptance scenarios.
What the project demonstrates.
A fleet system is a set of connected lifecycles. A change in maintenance can also affect availability and budget records.
Clear service boundaries and explicit entity relationships provide concrete places to review those interactions.