# karthikchejarla/cars-rental architecture

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

- Interactive diagram: https://gitdiagram.com/karthikchejarla/cars-rental
- Repository: https://github.com/karthikchejarla/cars-rental

## Overview

This repository implements a car-rental booking platform with a React client and Spring backend. Users register or log in, browse cars and availability, create bookings, and review or cancel their bookings; administrators manage cars and review or update bookings. The sampled services show date-overlap checks, booking totals and role checks backed by repositories. The tree and UI text identify additional client areas, but their source was not sampled, so detailed component-to-endpoint wiring is not asserted.

Main entry points: [`car/frontend/src/App.jsx`](https://github.com/karthikchejarla/cars-rental/blob/main/car/frontend/src/App.jsx) (Application shell), [`car/src/main/java/com/rental/car/service/UserService.java`](https://github.com/karthikchejarla/cars-rental/blob/main/car/src/main/java/com/rental/car/service/UserService.java) (Accounts and roles), [`car/frontend/src/api.js`](https://github.com/karthikchejarla/cars-rental/blob/main/car/frontend/src/api.js) (HTTP client), [`car/src/main/java/com/rental/car/service/CarService.java`](https://github.com/karthikchejarla/cars-rental/blob/main/car/src/main/java/com/rental/car/service/CarService.java) (Car availability/admin)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Rental client"]
  node_app["Application shell<br/>[App.jsx]"]
  node_auth_ui["Sign in/register<br/>[Auth.jsx]"]
  node_cars_ui["Car browsing/admin<br/>[Cars.jsx]"]
  node_bookings_ui["Customer bookings<br/>[Bookings.jsx]"]
  node_admin_ui["Admin bookings<br/>[AdminBookings.jsx]"]
  node_frontend_api["HTTP client<br/>[api.js]"]
end

subgraph group_api["HTTP API"]
  node_auth_controller["Authentication API"]
  node_car_controller["Cars API<br/>[CarController.java]"]
  node_booking_controller["Bookings API"]
end

subgraph group_domain["Rental services"]
  node_user_service["Accounts and roles<br/>[UserService.java]"]
  node_car_service["Car availability/admin<br/>[CarService.java]"]
  node_booking_service["Booking lifecycle"]
end

subgraph group_data["Persistence"]
  node_car_store[("Car repository<br/>[CarRepository.java]")]
  node_booking_store[("Booking repository")]
  node_user_store[("User repository")]
end

node_customer(("Customer or admin"))
node_password_encoder["Password encoder"]

node_customer -->|"uses"| node_app
node_app -->|"renders"| node_auth_ui
node_app -->|"renders"| node_cars_ui
node_app -->|"renders"| node_bookings_ui
node_app -->|"renders"| node_admin_ui
node_auth_ui -->|"calls"| node_frontend_api
node_frontend_api -->|"HTTP requests"| node_auth_controller
node_frontend_api -->|"HTTP requests"| node_car_controller
node_frontend_api -->|"HTTP requests"| node_booking_controller
node_auth_controller -->|"calls"| node_user_service
node_car_controller -->|"calls"| node_car_service
node_booking_controller -->|"calls"| node_booking_service
node_user_service -->|"reads/writes"| node_user_store
node_user_service -->|"encodes/checks"| node_password_encoder
node_car_service -->|"checks roles"| node_user_service
node_car_service -->|"reads/writes"| node_car_store
node_car_service -->|"checks availability"| node_booking_store
node_booking_service -->|"checks users"| node_user_service
node_booking_service -->|"loads cars"| node_car_store
node_booking_service -->|"reads/writes"| node_booking_store

click node_app "https://github.com/karthikchejarla/cars-rental/blob/main/car/frontend/src/App.jsx"
click node_auth_ui "https://github.com/karthikchejarla/cars-rental/blob/main/car/frontend/src/components/Auth.jsx"
click node_cars_ui "https://github.com/karthikchejarla/cars-rental/blob/main/car/frontend/src/components/Cars.jsx"
click node_bookings_ui "https://github.com/karthikchejarla/cars-rental/blob/main/car/frontend/src/components/Bookings.jsx"
click node_admin_ui "https://github.com/karthikchejarla/cars-rental/blob/main/car/frontend/src/components/AdminBookings.jsx"
click node_frontend_api "https://github.com/karthikchejarla/cars-rental/blob/main/car/frontend/src/api.js"
click node_auth_controller "https://github.com/karthikchejarla/cars-rental/blob/main/car/src/main/java/com/rental/car/controller/AuthController.java"
click node_car_controller "https://github.com/karthikchejarla/cars-rental/blob/main/car/src/main/java/com/rental/car/controller/CarController.java"
click node_booking_controller "https://github.com/karthikchejarla/cars-rental/blob/main/car/src/main/java/com/rental/car/controller/BookingController.java"
click node_user_service "https://github.com/karthikchejarla/cars-rental/blob/main/car/src/main/java/com/rental/car/service/UserService.java"
click node_car_service "https://github.com/karthikchejarla/cars-rental/blob/main/car/src/main/java/com/rental/car/service/CarService.java"
click node_booking_service "https://github.com/karthikchejarla/cars-rental/blob/main/car/src/main/java/com/rental/car/service/BookingService.java"
click node_car_store "https://github.com/karthikchejarla/cars-rental/blob/main/car/src/main/java/com/rental/car/repository/CarRepository.java"
click node_booking_store "https://github.com/karthikchejarla/cars-rental/blob/main/car/src/main/java/com/rental/car/repository/BookingRepository.java"
click node_user_store "https://github.com/karthikchejarla/cars-rental/blob/main/car/src/main/java/com/rental/car/repository/UserRepository.java"

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_app,node_auth_ui,node_cars_ui,node_bookings_ui,node_admin_ui,node_frontend_api toneBlue
class node_auth_controller,node_car_controller,node_booking_controller toneAmber
class node_user_service,node_car_service,node_booking_service toneMint
class node_car_store,node_booking_store,node_user_store toneRose
class node_customer,node_password_encoder toneIndigo
```

## Components

### Rental client

- [Application shell](https://github.com/karthikchejarla/cars-rental/blob/main/car/frontend/src/App.jsx): `car/frontend/src/App.jsx`
- [Sign in/register](https://github.com/karthikchejarla/cars-rental/blob/main/car/frontend/src/components/Auth.jsx): `car/frontend/src/components/Auth.jsx`
- [Car browsing/admin](https://github.com/karthikchejarla/cars-rental/blob/main/car/frontend/src/components/Cars.jsx): `car/frontend/src/components/Cars.jsx`
- [Customer bookings](https://github.com/karthikchejarla/cars-rental/blob/main/car/frontend/src/components/Bookings.jsx): `car/frontend/src/components/Bookings.jsx`
- [Admin bookings](https://github.com/karthikchejarla/cars-rental/blob/main/car/frontend/src/components/AdminBookings.jsx): `car/frontend/src/components/AdminBookings.jsx`
- [HTTP client](https://github.com/karthikchejarla/cars-rental/blob/main/car/frontend/src/api.js): `car/frontend/src/api.js`

### HTTP API

- [Authentication API](https://github.com/karthikchejarla/cars-rental/blob/main/car/src/main/java/com/rental/car/controller/AuthController.java): `car/src/main/java/com/rental/car/controller/AuthController.java`
- [Cars API](https://github.com/karthikchejarla/cars-rental/blob/main/car/src/main/java/com/rental/car/controller/CarController.java): `car/src/main/java/com/rental/car/controller/CarController.java`
- [Bookings API](https://github.com/karthikchejarla/cars-rental/blob/main/car/src/main/java/com/rental/car/controller/BookingController.java): `car/src/main/java/com/rental/car/controller/BookingController.java`

### Rental services

- [Accounts and roles](https://github.com/karthikchejarla/cars-rental/blob/main/car/src/main/java/com/rental/car/service/UserService.java): `car/src/main/java/com/rental/car/service/UserService.java`
- [Car availability/admin](https://github.com/karthikchejarla/cars-rental/blob/main/car/src/main/java/com/rental/car/service/CarService.java): `car/src/main/java/com/rental/car/service/CarService.java`
- [Booking lifecycle](https://github.com/karthikchejarla/cars-rental/blob/main/car/src/main/java/com/rental/car/service/BookingService.java): `car/src/main/java/com/rental/car/service/BookingService.java`

### Persistence

- [Car repository](https://github.com/karthikchejarla/cars-rental/blob/main/car/src/main/java/com/rental/car/repository/CarRepository.java): `car/src/main/java/com/rental/car/repository/CarRepository.java`
- [Booking repository](https://github.com/karthikchejarla/cars-rental/blob/main/car/src/main/java/com/rental/car/repository/BookingRepository.java): `car/src/main/java/com/rental/car/repository/BookingRepository.java`
- [User repository](https://github.com/karthikchejarla/cars-rental/blob/main/car/src/main/java/com/rental/car/repository/UserRepository.java): `car/src/main/java/com/rental/car/repository/UserRepository.java`

### Other components

- **Customer or admin**
- **Password encoder**

## Connections

- Customer or admin → Application shell: uses
- Application shell → Sign in/register: renders
- Application shell → Car browsing/admin: renders
- Application shell → Customer bookings: renders
- Application shell → Admin bookings: renders
- Sign in/register → HTTP client: calls
- HTTP client → Authentication API: HTTP requests
- HTTP client → Cars API: HTTP requests
- HTTP client → Bookings API: HTTP requests
- Authentication API → Accounts and roles: calls
- Cars API → Car availability/admin: calls
- Bookings API → Booking lifecycle: calls
- Accounts and roles → User repository: reads/writes
- Accounts and roles → Password encoder: encodes/checks
- Car availability/admin → Accounts and roles: checks roles
- Car availability/admin → Car repository: reads/writes
- Car availability/admin → Booking repository: checks availability
- Booking lifecycle → Accounts and roles: checks users
- Booking lifecycle → Car repository: loads cars
- Booking lifecycle → Booking repository: reads/writes
