No description
  • Java 46.4%
  • PowerShell 16.3%
  • TypeScript 12.7%
  • HCL 9.8%
  • JavaScript 6%
  • Other 8.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-19 19:32:29 +02:00
infra feat: updated readmes for clarity and cohesiveness 2026-10-19 19:32:29 +02:00
loadtest feat: updated readmes for clarity and cohesiveness 2026-10-19 19:32:29 +02:00
ride-matching-angular feat: updated readmes for clarity and cohesiveness 2026-10-19 19:32:29 +02:00
ride-matching-quarkus feat: updated readmes for clarity and cohesiveness 2026-10-19 19:32:29 +02:00
ride-matching-springboot feat: updated readmes for clarity and cohesiveness 2026-10-19 19:32:29 +02:00
.gcloudignore feat: add disposable Cloud Run benchmark matrix 2026-10-19 12:57:40 +02:00
.gitignore feat: add offline GCP load-test evidence tooling 2026-10-19 19:04:49 +02:00
cloudbuild.yaml feat: add disposable Cloud Run benchmark matrix 2026-10-19 12:57:40 +02:00
compose.benchmark.yaml feat: added local k6 load testing repeatability 2026-10-19 12:54:34 +02:00
compose.observability.yaml feat: added local k6 load testing repeatability 2026-10-19 12:54:34 +02:00
compose.yaml chore: add shared development infrastructure 2026-10-18 09:17:02 +02:00
README.md feat: updated readmes for clarity and cohesiveness 2026-10-19 19:32:29 +02:00

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.