How hamilton2959/uber-application works
This repository implements a ride-hailing backend split into ride, matching, and location services. A rider submits a request; Ride Service persists it, estimates the fare, and publishes a request event. Matching Service finds and scores nearby drivers through Location Service, then publishes a match event that Ride Service uses to update the ride. Ride Service also supports lookup, cancellation, starting, and completion. The excerpts show the core calls and Redis geospatial behavior; some Kafka and database wiring is known only from the source index and event documentation.
Main entry points: RideService.java Ride lifecycle · MatchingService.java Driver selection · LocationService.java Location search · RideController.java Ride API
Components 23
Ride management
- Ride API
ride-service/src/main/java/com/hamilton/rideservice/controller/RideController.java - Ride lifecycle
ride-service/src/main/java/com/hamilton/rideservice/service/RideService.java - Ride request
ride-service/src/main/java/com/hamilton/rideservice/dto/RideRequest.java - Ride response
ride-service/src/main/java/com/hamilton/rideservice/dto/RideResponse.java - Ride state
ride-service/src/main/java/com/hamilton/rideservice/model/Ride.java - Lifecycle statuses
ride-service/src/main/java/com/hamilton/rideservice/model/RideStatus.java - Ride database
ride-service/src/main/java/com/hamilton/rideservice/repository/RideRepository.java - Match event handler
ride-service/src/main/java/com/hamilton/rideservice/service/RideEventConsumer.java - Ride request event
ride-service/src/main/java/com/hamilton/rideservice/event/RideRequestedEvent.java - Match event schema
ride-service/src/main/java/com/hamilton/rideservice/event/RideMatchedEvent.java
Driver matching
- Request event handler
matching-service/src/main/java/com/hamilton/matchingservice/service/RideEventConsumer.java - Driver selection
matching-service/src/main/java/com/hamilton/matchingservice/service/MatchingService.java - Location client
matching-service/src/main/java/com/hamilton/matchingservice/client/LocationServiceClient.java - Match event
matching-service/src/main/java/com/hamilton/matchingservice/event/RideMatchedEvent.java - Nearby driver data
matching-service/src/main/java/com/hamilton/matchingservice/dto/NearByDriverResponse.java - Request event schema
matching-service/src/main/java/com/hamilton/matchingservice/event/RideRequestedEvent.java
Driver locations
- Location API
location-service/src/main/java/com/hamilton/locationservice/controller/LocationController.java - Location search
location-service/src/main/java/com/hamilton/locationservice/service/LocationService.java - Location update data
location-service/src/main/java/com/hamilton/locationservice/dto/DriverLocationRequest.java - Nearby driver result
location-service/src/main/java/com/hamilton/locationservice/dto/NearByDriverResponse.java
Shared infrastructure
- Redis geospatial store
location-service/src/main/java/com/hamilton/locationservice/config/RedisConfig.java - Kafka topics
Other components
- Rider or driver
Connections 27
- Rider or driver → Ride API: requests or manages
ride-service/src/main/java/com/hamilton/rideservice/controller/RideController.java - Ride API → Ride lifecycle: calls
ride-service/src/main/java/com/hamilton/rideservice/controller/RideController.java - Ride API → Ride request: accepts
ride-service/src/main/java/com/hamilton/rideservice/controller/RideController.java - Ride lifecycle → Ride state: creates and updates
ride-service/src/main/java/com/hamilton/rideservice/service/RideService.java - Ride lifecycle → Ride database: reads and writes
ride-service/src/main/java/com/hamilton/rideservice/service/RideService.java - Ride lifecycle → Ride request: uses
ride-service/src/main/java/com/hamilton/rideservice/service/RideService.java - Ride lifecycle → Ride response: returns
ride-service/src/main/java/com/hamilton/rideservice/service/RideService.java - Ride lifecycle → Lifecycle statuses: sets
ride-service/src/main/java/com/hamilton/rideservice/service/RideService.java - Ride lifecycle → Ride request event: publishes
ride-service/src/main/java/com/hamilton/rideservice/service/RideService.java - Ride lifecycle → Kafka topics: sends request
ride-service/src/main/java/com/hamilton/rideservice/service/RideService.java - Kafka topics → Request event handler: delivers request
matching-service/src/main/java/com/hamilton/matchingservice/service/RideEventConsumer.java - Request event handler → Driver selection: dispatches
matching-service/src/main/java/com/hamilton/matchingservice/service/RideEventConsumer.java - Request event handler → Request event schema: deserializes
matching-service/src/main/java/com/hamilton/matchingservice/service/RideEventConsumer.java - Driver selection → Location client: queries nearby drivers
matching-service/src/main/java/com/hamilton/matchingservice/service/MatchingService.java - Location client → Location API: requests nearby drivers
matching-service/src/main/java/com/hamilton/matchingservice/client/LocationServiceClient.java - Location API → Location search: calls
location-service/src/main/java/com/hamilton/locationservice/controller/LocationController.java - Location search → Redis geospatial store: searches and updates
location-service/src/main/java/com/hamilton/locationservice/service/LocationService.java - Location search → Location update data: uses for updates
location-service/src/main/java/com/hamilton/locationservice/service/LocationService.java - Location search → Nearby driver result: returns nearby results
location-service/src/main/java/com/hamilton/locationservice/service/LocationService.java - Location client → Nearby driver data: returns driver data
matching-service/src/main/java/com/hamilton/matchingservice/client/LocationServiceClient.java - Driver selection → Nearby driver data: scores drivers
matching-service/src/main/java/com/hamilton/matchingservice/service/MatchingService.java - Driver selection → Match event: creates
matching-service/src/main/java/com/hamilton/matchingservice/service/MatchingService.java - Driver selection → Kafka topics: sends match
matching-service/src/main/java/com/hamilton/matchingservice/service/MatchingService.java - Kafka topics → Match event handler: delivers match
ride-service/src/main/java/com/hamilton/rideservice/service/RideEventConsumer.java - Match event handler → Ride lifecycle: updates assigned driver
ride-service/src/main/java/com/hamilton/rideservice/service/RideEventConsumer.java - Match event handler → Match event schema: deserializes
ride-service/src/main/java/com/hamilton/rideservice/service/RideEventConsumer.java - Ride state → Lifecycle statuses: stores status
ride-service/src/main/java/com/hamilton/rideservice/model/Ride.java