# kavindunimesh1030/easy-car-rental-service- architecture

> Architecture diagram of the GitHub repository kavindunimesh1030/easy-car-rental-service-, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/kavindunimesh1030/easy-car-rental-service-
- Repository: https://github.com/kavindunimesh1030/easy-car-rental-service-

## Overview

Easy Car Rental is a full-stack rental-management application. Its principal backend workflow accepts rental operations through MVC controllers, delegates business operations to services, and persists rental, customer, vehicle, and driver data through repositories. The frontend tree also shows customer rental, registration, and administration screens. The supplied excerpts and index support several backend call relationships, but do not show frontend-to-backend requests or the JPA database wiring, so those links are left unverified rather than inferred.

Main entry points: [`BackEnd/src/main/java/lk/ijse/spring/service/impl/RentCarServiceImpl.java`](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/service/impl/RentCarServiceImpl.java) (Rental Service), [`BackEnd/src/main/java/lk/ijse/spring/dto`](https://github.com/kavindunimesh1030/easy-car-rental-service-/tree/master/BackEnd/src/main/java/lk/ijse/spring/dto) (Transfer Models), [`BackEnd/src/main/java/lk/ijse/spring/entity`](https://github.com/kavindunimesh1030/easy-car-rental-service-/tree/master/BackEnd/src/main/java/lk/ijse/spring/entity) (JPA Entities), [`BackEnd/src/main/java/lk/ijse/spring/controller/DriverController.java`](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/controller/DriverController.java) (Driver API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_customer["Customer Experience"]
  node_car_browse["Browse Cars<br/>[CarHome.js]"]
  node_customer_home["Customer Home<br/>[CustomerHome.js]"]
  node_registration["Registration"]
  node_rental_detail_ui["Rental Details<br/>[RentDetail.js]"]
  node_cart_ui["Cart Details<br/>[CartDetail.js]"]
end

subgraph group_admin["Rental Administration"]
  node_admin_requests["Rental Requests<br/>[AdminRentalReq.js]"]
  node_admin_dashboard["Admin Dashboard<br/>[AdminDashBoard.js]"]
  node_customer_admin["Customer Admin"]
  node_vehicle_admin["Vehicle Management<br/>[VehicleManage.js]"]
  node_driver_admin["Driver Management<br/>[DriverManage.js]"]
  node_income_ui["Income View"]
end

subgraph group_api["Backend API"]
  node_customer_api["Customer API"]
  node_driver_api["Driver API"]
  node_rental_api["Rental API"]
  node_vehicle_api["Vehicle API"]
  node_income_api["Income API"]
end

subgraph group_domain["Rental Domain"]
  node_customer_service["Customer Service"]
  node_driver_service["Driver Service"]
  node_rental_service["Rental Service"]
  node_vehicle_service["Vehicle Service"]
  node_income_service["Income Service<br/>[IncomeService.java]"]
  node_dto["Transfer Models"]
end

subgraph group_persistence["Persistence"]
  node_customer_data[("Customer Data<br/>[CustomerRepo.java]")]
  node_driver_data[("Driver Data<br/>[DriverRepo.java]")]
  node_rental_data[("Rental Data<br/>[RentCarRepo.java]")]
  node_rent_detail_data[("Rent Details")]
  node_vehicle_data[("Vehicle Data<br/>[VehicleRepo.java]")]
  node_entities["JPA Entities"]
end

node_renter(("Renter"))
node_admin_user(("Administrator"))

node_renter -.->|"browses"| node_car_browse
node_renter -.->|"registers"| node_registration
node_renter -.->|"enters rental"| node_rental_detail_ui
node_admin_user -.->|"reviews"| node_admin_requests
node_admin_user -.->|"manages vehicles"| node_vehicle_admin
node_admin_user -.->|"manages drivers"| node_driver_admin
node_admin_user -.->|"views income"| node_income_ui
node_customer_api -->|"delegates to"| node_customer_service
node_customer_api -->|"uses"| node_dto
node_driver_api -->|"delegates to"| node_driver_service
node_driver_api -->|"queries rentals"| node_rental_service
node_driver_api -->|"uses"| node_dto
node_rental_api -->|"delegates to"| node_rental_service
node_rental_api -->|"uses"| node_dto
node_vehicle_api -->|"delegates to"| node_vehicle_service
node_vehicle_api -->|"uses"| node_dto
node_income_api -->|"delegates to"| node_income_service
node_customer_service -->|"uses repository"| node_customer_data
node_driver_service -->|"uses repository"| node_driver_data
node_rental_service -->|"reads and writes"| node_rental_data
node_rental_service -->|"queries details"| node_rent_detail_data
node_vehicle_service -->|"uses repository"| node_vehicle_data
node_customer_data -->|"references"| node_entities
node_driver_data -->|"references"| node_entities
node_rental_data -->|"references"| node_entities
node_vehicle_data -->|"references"| node_entities

click node_car_browse "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/CarHome.js"
click node_customer_home "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/CustomerHome.js"
click node_registration "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/CustomerRegistration.js"
click node_rental_detail_ui "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/RentDetail.js"
click node_admin_requests "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/AdminRentalReq.js"
click node_admin_dashboard "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/AdminDashBoard.js"
click node_customer_admin "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/AdminViewAllCustomer.js"
click node_vehicle_admin "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/VehicleManage.js"
click node_driver_admin "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/DriverManage.js"
click node_income_ui "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/IncomeController.js"
click node_cart_ui "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/CartDetail.js"
click node_customer_api "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/controller/CustomerController.java"
click node_driver_api "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/controller/DriverController.java"
click node_rental_api "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/controller/RentCarController.java"
click node_vehicle_api "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/controller/VehicleController.java"
click node_income_api "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/controller/IncomeManageController.java"
click node_customer_service "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/service/impl/CustomerServiceImpl.java"
click node_driver_service "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/service/impl/DriverServiceImpl.java"
click node_rental_service "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/service/impl/RentCarServiceImpl.java"
click node_vehicle_service "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/service/impl/VehicleServiceImpl.java"
click node_income_service "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/service/IncomeService.java"
click node_customer_data "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/repo/CustomerRepo.java"
click node_driver_data "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/repo/DriverRepo.java"
click node_rental_data "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/repo/RentCarRepo.java"
click node_rent_detail_data "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/repo/RentDetailRepo.java"
click node_vehicle_data "https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/repo/VehicleRepo.java"
click node_dto "https://github.com/kavindunimesh1030/easy-car-rental-service-/tree/master/BackEnd/src/main/java/lk/ijse/spring/dto"
click node_entities "https://github.com/kavindunimesh1030/easy-car-rental-service-/tree/master/BackEnd/src/main/java/lk/ijse/spring/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_car_browse,node_customer_home,node_registration,node_rental_detail_ui,node_cart_ui toneBlue
class node_admin_requests,node_admin_dashboard,node_customer_admin,node_vehicle_admin,node_driver_admin,node_income_ui toneAmber
class node_customer_api,node_driver_api,node_rental_api,node_vehicle_api,node_income_api toneMint
class node_customer_service,node_driver_service,node_rental_service,node_vehicle_service,node_income_service,node_dto toneRose
class node_customer_data,node_driver_data,node_rental_data,node_rent_detail_data,node_vehicle_data,node_entities,node_renter,node_admin_user toneIndigo
```

## Components

### Customer Experience

- [Browse Cars](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/CarHome.js): `FrontEnd/controller/CarHome.js`
- [Customer Home](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/CustomerHome.js): `FrontEnd/controller/CustomerHome.js`
- [Registration](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/CustomerRegistration.js): `FrontEnd/controller/CustomerRegistration.js`
- [Rental Details](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/RentDetail.js): `FrontEnd/controller/RentDetail.js`
- [Cart Details](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/CartDetail.js): `FrontEnd/controller/CartDetail.js`

### Rental Administration

- [Rental Requests](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/AdminRentalReq.js): `FrontEnd/controller/AdminRentalReq.js`
- [Admin Dashboard](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/AdminDashBoard.js): `FrontEnd/controller/AdminDashBoard.js`
- [Customer Admin](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/AdminViewAllCustomer.js): `FrontEnd/controller/AdminViewAllCustomer.js`
- [Vehicle Management](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/VehicleManage.js): `FrontEnd/controller/VehicleManage.js`
- [Driver Management](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/DriverManage.js): `FrontEnd/controller/DriverManage.js`
- [Income View](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/FrontEnd/controller/IncomeController.js): `FrontEnd/controller/IncomeController.js`

### Backend API

- [Customer API](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/controller/CustomerController.java): `BackEnd/src/main/java/lk/ijse/spring/controller/CustomerController.java`
- [Driver API](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/controller/DriverController.java): `BackEnd/src/main/java/lk/ijse/spring/controller/DriverController.java`
- [Rental API](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/controller/RentCarController.java): `BackEnd/src/main/java/lk/ijse/spring/controller/RentCarController.java`
- [Vehicle API](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/controller/VehicleController.java): `BackEnd/src/main/java/lk/ijse/spring/controller/VehicleController.java`
- [Income API](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/controller/IncomeManageController.java): `BackEnd/src/main/java/lk/ijse/spring/controller/IncomeManageController.java`

### Rental Domain

- [Customer Service](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/service/impl/CustomerServiceImpl.java): `BackEnd/src/main/java/lk/ijse/spring/service/impl/CustomerServiceImpl.java`
- [Driver Service](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/service/impl/DriverServiceImpl.java): `BackEnd/src/main/java/lk/ijse/spring/service/impl/DriverServiceImpl.java`
- [Rental Service](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/service/impl/RentCarServiceImpl.java): `BackEnd/src/main/java/lk/ijse/spring/service/impl/RentCarServiceImpl.java`
- [Vehicle Service](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/service/impl/VehicleServiceImpl.java): `BackEnd/src/main/java/lk/ijse/spring/service/impl/VehicleServiceImpl.java`
- [Income Service](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/service/IncomeService.java): `BackEnd/src/main/java/lk/ijse/spring/service/IncomeService.java`
- [Transfer Models](https://github.com/kavindunimesh1030/easy-car-rental-service-/tree/master/BackEnd/src/main/java/lk/ijse/spring/dto): `BackEnd/src/main/java/lk/ijse/spring/dto`

### Persistence

- [Customer Data](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/repo/CustomerRepo.java): `BackEnd/src/main/java/lk/ijse/spring/repo/CustomerRepo.java`
- [Driver Data](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/repo/DriverRepo.java): `BackEnd/src/main/java/lk/ijse/spring/repo/DriverRepo.java`
- [Rental Data](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/repo/RentCarRepo.java): `BackEnd/src/main/java/lk/ijse/spring/repo/RentCarRepo.java`
- [Rent Details](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/repo/RentDetailRepo.java): `BackEnd/src/main/java/lk/ijse/spring/repo/RentDetailRepo.java`
- [Vehicle Data](https://github.com/kavindunimesh1030/easy-car-rental-service-/blob/master/BackEnd/src/main/java/lk/ijse/spring/repo/VehicleRepo.java): `BackEnd/src/main/java/lk/ijse/spring/repo/VehicleRepo.java`
- [JPA Entities](https://github.com/kavindunimesh1030/easy-car-rental-service-/tree/master/BackEnd/src/main/java/lk/ijse/spring/entity): `BackEnd/src/main/java/lk/ijse/spring/entity`

### Other components

- **Renter**
- **Administrator**

## Connections

- Renter → Browse Cars: browses
- Renter → Registration: registers
- Renter → Rental Details: enters rental
- Administrator → Rental Requests: reviews
- Administrator → Vehicle Management: manages vehicles
- Administrator → Driver Management: manages drivers
- Administrator → Income View: views income
- Customer API → Customer Service: delegates to (evidence: `BackEnd/src/main/java/lk/ijse/spring/controller/CustomerController.java`)
- Customer API → Transfer Models: uses (evidence: `BackEnd/src/main/java/lk/ijse/spring/controller/CustomerController.java`)
- Driver API → Driver Service: delegates to (evidence: `BackEnd/src/main/java/lk/ijse/spring/controller/DriverController.java`)
- Driver API → Rental Service: queries rentals (evidence: `BackEnd/src/main/java/lk/ijse/spring/controller/DriverController.java`)
- Driver API → Transfer Models: uses (evidence: `BackEnd/src/main/java/lk/ijse/spring/controller/DriverController.java`)
- Rental API → Rental Service: delegates to (evidence: `BackEnd/src/main/java/lk/ijse/spring/controller/RentCarController.java`)
- Rental API → Transfer Models: uses (evidence: `BackEnd/src/main/java/lk/ijse/spring/controller/RentCarController.java`)
- Vehicle API → Vehicle Service: delegates to (evidence: `BackEnd/src/main/java/lk/ijse/spring/controller/VehicleController.java`)
- Vehicle API → Transfer Models: uses (evidence: `BackEnd/src/main/java/lk/ijse/spring/controller/VehicleController.java`)
- Income API → Income Service: delegates to (evidence: `BackEnd/src/main/java/lk/ijse/spring/controller/IncomeManageController.java`)
- Customer Service → Customer Data: uses repository (evidence: `BackEnd/src/main/java/lk/ijse/spring/service/impl/CustomerServiceImpl.java`)
- Driver Service → Driver Data: uses repository (evidence: `BackEnd/src/main/java/lk/ijse/spring/service/impl/DriverServiceImpl.java`)
- Rental Service → Rental Data: reads and writes (evidence: `BackEnd/src/main/java/lk/ijse/spring/service/impl/RentCarServiceImpl.java`)
- Rental Service → Rent Details: queries details (evidence: `BackEnd/src/main/java/lk/ijse/spring/service/impl/RentCarServiceImpl.java`)
- Vehicle Service → Vehicle Data: uses repository (evidence: `BackEnd/src/main/java/lk/ijse/spring/service/impl/VehicleServiceImpl.java`)
- Customer Data → JPA Entities: references (evidence: `BackEnd/src/main/java/lk/ijse/spring/repo/CustomerRepo.java`)
- Driver Data → JPA Entities: references (evidence: `BackEnd/src/main/java/lk/ijse/spring/repo/DriverRepo.java`)
- Rental Data → JPA Entities: references (evidence: `BackEnd/src/main/java/lk/ijse/spring/repo/RentCarRepo.java`)
- Vehicle Data → JPA Entities: references (evidence: `BackEnd/src/main/java/lk/ijse/spring/repo/VehicleRepo.java`)
