- Java 46.4%
- PowerShell 16.3%
- TypeScript 12.7%
- HCL 9.8%
- JavaScript 6%
- Other 8.8%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| infra | ||
| loadtest | ||
| ride-matching-angular | ||
| ride-matching-quarkus | ||
| ride-matching-springboot | ||
| .gcloudignore | ||
| .gitignore | ||
| cloudbuild.yaml | ||
| compose.benchmark.yaml | ||
| compose.observability.yaml | ||
| compose.yaml | ||
| README.md | ||
Ride Matching
Ride Matching is a Java service that assigns the nearest available driver to a rider, with Angular passenger and driver applications for the local journey. The core exercise uses in-memory state; the benchmark and GCP material are optional engineering extensions.
Quick Start
Run these commands from the repository root. You need Java 21, Docker Desktop with Docker Compose v2, Node.js, and npm.
Start the local OIDC test issuer:
docker compose up -d mock-idp
Start the Spring Boot API:
.\ride-matching-springboot\mvnw.cmd "-Dspring-boot.run.profiles=local" spring-boot:run
In a second terminal, install the frontend dependencies and start the passenger application:
Set-Location .\ride-matching-angular
npm ci
npm run start:passenger
In a third terminal, from ride-matching-angular, start the driver application:
npm run start:driver
Open http://localhost:4200 for the passenger application and http://localhost:4201 for the driver application.
At the mock OIDC sign-in screen, use rider-1 in the passenger application and driver-1 in the driver application. Leave optional claims blank, then select Sign-in. The rider- and driver- prefixes assign the required local roles automatically.
Documentation Map
| Guide | Use it for |
|---|---|
| Spring Boot API | API setup, authentication, lifecycle rules, configuration, and the full state diagram. |
| Angular applications | Passenger and driver frontend setup and manual demo flow. |
| Quarkus API | Alternative JVM implementation used by the benchmark. |
| Local benchmark | Repeatable Spring or Quarkus k6 runs and local Grafana results. |
| Local observability | Prometheus, Grafana, and cAdvisor used by local benchmarks. |
| Mock identity provider | Local OIDC issuer, test identities, and token debugger. |
| Bruno collection | Calling the Spring Boot API without the Angular applications. |
| GCP load test | Disposable Cloud Run benchmark matrix, export, and teardown. |
| Offline GCP evidence viewer | Opening an exported GCP archive locally without recreating cloud resources. |
| Shared Angular API | Typed API client and shared ride and driver models. |
| Shared Angular authentication | OIDC facade, interceptor, and authentication configuration. |
| Shared Angular map | Leaflet map component and map types. |
Repository Layout
ride-matching-springboot: primary Spring Boot implementation.ride-matching-quarkus: parallel Quarkus JVM implementation.ride-matching-angular: passenger, driver, and shared Angular projects.loadtest: k6 workload and local benchmark runner.infra: local OIDC, observability, and disposable GCP benchmark infrastructure.
Generated benchmark archives live under results/ and are intentionally ignored by Git.