# harshaansh/ridebookingappjava architecture

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

- Interactive diagram: https://gitdiagram.com/harshaansh/ridebookingappjava
- Repository: https://github.com/harshaansh/ridebookingappjava

## Overview

This is a Spring ride-booking backend. Passengers register or log in, request rides with pickup and destination details, and view or cancel their rides; drivers can browse available rides, accept assignments, advance ride status, and view history. Authentication uses password verification and JWTs, while ride services calculate estimated fares and persist ride state. The source index supports the main controller/service/repository calls; HTTP entry and database wiring are inferred from the framework structure, so those links are marked unverified where needed.

Main entry points: [`src/main/java/com/ridebooking/ride_booking_backend/service/RideService.java`](https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/service/RideService.java) (Ride Lifecycle), [`src/main/java/com/ridebooking/ride_booking_backend/repository/UserRepository.java`](https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/repository/UserRepository.java) (User Repository), [`src/main/java/com/ridebooking/ride_booking_backend/entity`](https://github.com/harshaansh/ridebookingappjava/tree/main/src/main/java/com/ridebooking/ride_booking_backend/entity) (Domain Entities), [`src/main/java/com/ridebooking/ride_booking_backend/service/AuthenticationService.java`](https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/service/AuthenticationService.java) (Authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_auth_api["Authentication API"]
  node_user_api["User API"]
  node_ride_api["Ride API"]
  node_health_api["Health API"]
end

subgraph group_identity["Identity and Security"]
  node_auth_service["Authentication"]
  node_user_service["Account Service<br/>[UserService.java]"]
  node_security_config["Security Configuration"]
  node_jwt_filter["JWT Filter"]
  node_jwt_service["JWT Service<br/>[JwtService.java]"]
  node_user_details["User Details Loader"]
end

subgraph group_rides["Ride Operations"]
  node_ride_service["Ride Lifecycle<br/>[RideService.java]"]
  node_fare_service["Fare Estimator<br/>[FareService.java]"]
  node_ride_status["Ride Status<br/>[RideStatus.java]"]
end

subgraph group_persistence["Domain and Persistence"]
  node_user_repository["User Repository"]
  node_ride_repository["Ride Repository"]
  node_driver_repository["Driver Repository"]
  node_vehicle_repository["Vehicle Repository"]
  node_domain_entities["Domain Entities"]
end

node_passenger(("Passenger"))
node_driver(("Driver"))
node_database[("Relational Database")]

node_passenger -.->|"sends requests"| node_auth_api
node_driver -.->|"sends requests"| node_auth_api
node_passenger -.->|"registers"| node_user_api
node_passenger -.->|"books rides"| node_ride_api
node_driver -.->|"manages rides"| node_ride_api
node_auth_api -->|"delegates to"| node_auth_service
node_user_api -->|"delegates to"| node_user_service
node_ride_api -->|"delegates to"| node_ride_service
node_user_service -->|"reads and writes"| node_user_repository
node_auth_service -->|"looks up users"| node_user_repository
node_auth_service -->|"issues token"| node_jwt_service
node_auth_service -.->|"loads identity"| node_user_details
node_security_config -->|"registers filter"| node_jwt_filter
node_jwt_filter -->|"validates token"| node_jwt_service
node_ride_service -->|"looks up users"| node_user_repository
node_ride_service -->|"reads and writes rides"| node_ride_repository
node_ride_service -->|"calculates estimate"| node_fare_service
node_ride_service -->|"updates ride state"| node_domain_entities
node_ride_service -->|"checks transitions"| node_ride_status
node_user_repository -->|"persists users"| node_domain_entities
node_ride_repository -->|"persists rides"| node_domain_entities
node_driver_repository -->|"persists drivers"| node_domain_entities
node_vehicle_repository -->|"persists vehicles"| node_domain_entities
node_user_repository -.->|"stores records"| node_database
node_ride_repository -.->|"stores records"| node_database
node_driver_repository -.->|"stores records"| node_database
node_vehicle_repository -.->|"stores records"| node_database

click node_auth_api "https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/controller/AuthController.java"
click node_user_api "https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/controller/UserController.java"
click node_ride_api "https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/controller/RideController.java"
click node_health_api "https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/controller/HealthController.java"
click node_auth_service "https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/service/AuthenticationService.java"
click node_user_service "https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/service/UserService.java"
click node_security_config "https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/config/SecurityConfig.java"
click node_jwt_filter "https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/security/JwtAuthenticationFilter.java"
click node_jwt_service "https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/security/JwtService.java"
click node_user_details "https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/security/CustomUserDetailsService.java"
click node_ride_service "https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/service/RideService.java"
click node_fare_service "https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/service/FareService.java"
click node_user_repository "https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/repository/UserRepository.java"
click node_ride_repository "https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/repository/RideRepository.java"
click node_driver_repository "https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/repository/DriverRepository.java"
click node_vehicle_repository "https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/repository/VehicleRepository.java"
click node_domain_entities "https://github.com/harshaansh/ridebookingappjava/tree/main/src/main/java/com/ridebooking/ride_booking_backend/entity"
click node_ride_status "https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/enums/RideStatus.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_auth_api,node_user_api,node_ride_api,node_health_api toneBlue
class node_auth_service,node_user_service,node_security_config,node_jwt_filter,node_jwt_service,node_user_details,node_database toneAmber
class node_ride_service,node_fare_service,node_ride_status toneMint
class node_user_repository,node_ride_repository,node_driver_repository,node_vehicle_repository,node_domain_entities toneRose
class node_passenger,node_driver toneIndigo
```

## Components

### HTTP API

- [Authentication API](https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/controller/AuthController.java): `src/main/java/com/ridebooking/ride_booking_backend/controller/AuthController.java`
- [User API](https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/controller/UserController.java): `src/main/java/com/ridebooking/ride_booking_backend/controller/UserController.java`
- [Ride API](https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/controller/RideController.java): `src/main/java/com/ridebooking/ride_booking_backend/controller/RideController.java`
- [Health API](https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/controller/HealthController.java): `src/main/java/com/ridebooking/ride_booking_backend/controller/HealthController.java`

### Identity and Security

- [Authentication](https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/service/AuthenticationService.java): `src/main/java/com/ridebooking/ride_booking_backend/service/AuthenticationService.java`
- [Account Service](https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/service/UserService.java): `src/main/java/com/ridebooking/ride_booking_backend/service/UserService.java`
- [Security Configuration](https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/config/SecurityConfig.java): `src/main/java/com/ridebooking/ride_booking_backend/config/SecurityConfig.java`
- [JWT Filter](https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/security/JwtAuthenticationFilter.java): `src/main/java/com/ridebooking/ride_booking_backend/security/JwtAuthenticationFilter.java`
- [JWT Service](https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/security/JwtService.java): `src/main/java/com/ridebooking/ride_booking_backend/security/JwtService.java`
- [User Details Loader](https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/security/CustomUserDetailsService.java): `src/main/java/com/ridebooking/ride_booking_backend/security/CustomUserDetailsService.java`

### Ride Operations

- [Ride Lifecycle](https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/service/RideService.java): `src/main/java/com/ridebooking/ride_booking_backend/service/RideService.java`
- [Fare Estimator](https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/service/FareService.java): `src/main/java/com/ridebooking/ride_booking_backend/service/FareService.java`
- [Ride Status](https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/enums/RideStatus.java): `src/main/java/com/ridebooking/ride_booking_backend/enums/RideStatus.java`

### Domain and Persistence

- [User Repository](https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/repository/UserRepository.java): `src/main/java/com/ridebooking/ride_booking_backend/repository/UserRepository.java`
- [Ride Repository](https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/repository/RideRepository.java): `src/main/java/com/ridebooking/ride_booking_backend/repository/RideRepository.java`
- [Driver Repository](https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/repository/DriverRepository.java): `src/main/java/com/ridebooking/ride_booking_backend/repository/DriverRepository.java`
- [Vehicle Repository](https://github.com/harshaansh/ridebookingappjava/blob/main/src/main/java/com/ridebooking/ride_booking_backend/repository/VehicleRepository.java): `src/main/java/com/ridebooking/ride_booking_backend/repository/VehicleRepository.java`
- [Domain Entities](https://github.com/harshaansh/ridebookingappjava/tree/main/src/main/java/com/ridebooking/ride_booking_backend/entity): `src/main/java/com/ridebooking/ride_booking_backend/entity`

### Other components

- **Passenger**
- **Driver**
- **Relational Database**

## Connections

- Passenger → Authentication API: sends requests
- Driver → Authentication API: sends requests
- Passenger → User API: registers
- Passenger → Ride API: books rides
- Driver → Ride API: manages rides
- Authentication API → Authentication: delegates to (evidence: `src/main/java/com/ridebooking/ride_booking_backend/controller/AuthController.java`)
- User API → Account Service: delegates to (evidence: `src/main/java/com/ridebooking/ride_booking_backend/controller/UserController.java`)
- Ride API → Ride Lifecycle: delegates to (evidence: `src/main/java/com/ridebooking/ride_booking_backend/controller/RideController.java`)
- Account Service → User Repository: reads and writes (evidence: `src/main/java/com/ridebooking/ride_booking_backend/service/UserService.java`)
- Authentication → User Repository: looks up users (evidence: `src/main/java/com/ridebooking/ride_booking_backend/service/AuthenticationService.java`)
- Authentication → JWT Service: issues token (evidence: `src/main/java/com/ridebooking/ride_booking_backend/service/AuthenticationService.java`)
- Authentication → User Details Loader: loads identity
- Security Configuration → JWT Filter: registers filter (evidence: `src/main/java/com/ridebooking/ride_booking_backend/config/SecurityConfig.java`)
- JWT Filter → JWT Service: validates token (evidence: `src/main/java/com/ridebooking/ride_booking_backend/security/JwtAuthenticationFilter.java`)
- Ride Lifecycle → User Repository: looks up users (evidence: `src/main/java/com/ridebooking/ride_booking_backend/service/RideService.java`)
- Ride Lifecycle → Ride Repository: reads and writes rides (evidence: `src/main/java/com/ridebooking/ride_booking_backend/service/RideService.java`)
- Ride Lifecycle → Fare Estimator: calculates estimate (evidence: `src/main/java/com/ridebooking/ride_booking_backend/service/RideService.java`)
- Ride Lifecycle → Domain Entities: updates ride state (evidence: `src/main/java/com/ridebooking/ride_booking_backend/service/RideService.java`)
- Ride Lifecycle → Ride Status: checks transitions (evidence: `src/main/java/com/ridebooking/ride_booking_backend/service/RideService.java`)
- User Repository → Domain Entities: persists users (evidence: `src/main/java/com/ridebooking/ride_booking_backend/repository/UserRepository.java`)
- Ride Repository → Domain Entities: persists rides (evidence: `src/main/java/com/ridebooking/ride_booking_backend/repository/RideRepository.java`)
- Driver Repository → Domain Entities: persists drivers (evidence: `src/main/java/com/ridebooking/ride_booking_backend/repository/DriverRepository.java`)
- Vehicle Repository → Domain Entities: persists vehicles (evidence: `src/main/java/com/ridebooking/ride_booking_backend/repository/VehicleRepository.java`)
- User Repository → Relational Database: stores records
- Ride Repository → Relational Database: stores records
- Driver Repository → Relational Database: stores records
- Vehicle Repository → Relational Database: stores records
