How anupam2741/event-driven-logistics-engine works
This is an event-driven logistics platform for placing and tracking deliveries, dispatching riders, and ingesting live GPS updates. The main workflow starts with an order API request, checks rider availability over gRPC, persists and publishes the order, assigns a rider in the tracking service, and relays simulator pings and status changes back to the order service. The README documents cross-service behavior; source excerpts show key controller, assignment, and consumer calls. Some internals are unsampled, so their links are omitted or marked unverified.
Main entry points: OrderServiceImpl.java Order lifecycle · RiderAssignmentService.java Rider assignment · LocationIngestionController.java Location ingestion · OrderSafetyNetService.java Availability client
Components 23
Order lifecycle
- Order API
order-service/src/main/java/com/project/restController/OrderController.java - Order lifecycle
order-service/src/main/java/com/project/service/OrderServiceImpl.java - Availability client
order-service/src/main/java/com/project/service/OrderSafetyNetService.java - Tracking client
order-service/src/main/java/com/project/service/OrderTrackingClient.java - Order persistence
order-service/src/main/java/com/project/repository/OrderRepository.java - Release retry state
order-service/src/main/java/com/project/repository/PendingRiderReleaseRepository.java - Order status consumer
order-service/src/main/java/com/project/kafka/OrderUpdateConsumer.java
Rider dispatch
- Rider discovery RPC
tracking-service/src/main/java/com/project/service - Order event consumer
tracking-service/src/main/java/com/project/kafka/OrderConsumerService.java - Rider assignment
tracking-service/src/main/java/com/project/service/RiderAssignmentService.java - Rider records
tracking-service/src/main/java/com/project/repository/RiderRepository.java - Rider seeding
tracking-service/src/main/java/com/project/service/DataBootstrapService.java - Rider administration
tracking-service/src/main/java/com/project/controller/RiderController.java
Live tracking
- Location ingestion
tracking-service/src/main/java/com/project/controller/LocationIngestionController.java - Mission broadcast
tracking-service/src/main/java/com/project/service/RiderNavigationService.java - Rider simulator
RiderSimulation.py
Shared events
- Order and status DTOs
common-lib/src/main/java/com/project/dto - Rider discovery contract
common-lib/src/main/proto/rider_availability.proto - Status event producer
tracking-service/src/main/java/com/project/kafka/OrderStatusProducer.java
Other components
- Customer or API client
- Apache Kafka
- Redis geo and pub/sub
- PostgreSQL
Connections 31
- Customer or API client → Order API: submits requests
order-service/src/main/java/com/project/restController/OrderController.java - Order API → Order lifecycle: delegates to
order-service/src/main/java/com/project/restController/OrderController.java - Order lifecycle → Availability client: checks availability
order-service/src/main/java/com/project/service/OrderServiceImpl.java - Availability client → Rider discovery RPC: checks riders
- Availability client → Rider discovery contract: uses contract
- Order lifecycle → Order persistence: reads and writes
order-service/src/main/java/com/project/service/OrderServiceImpl.java - Order lifecycle → Apache Kafka: publishes orders
- Order lifecycle → Order and status DTOs: creates events
order-service/src/main/java/com/project/service/OrderServiceImpl.java - Order lifecycle → Tracking client: requests tracking
order-service/src/main/java/com/project/service/OrderServiceImpl.java - Tracking client → Rider discovery RPC: fetches location
- Order lifecycle → Release retry state: queues failed releases
order-service/src/main/java/com/project/service/OrderServiceImpl.java - Apache Kafka → Order event consumer: delivers orders
tracking-service/src/main/java/com/project/kafka/OrderConsumerService.java - Order event consumer → Rider assignment: assigns riders
tracking-service/src/main/java/com/project/kafka/OrderConsumerService.java - Rider assignment → Rider records: claims rider
tracking-service/src/main/java/com/project/service/RiderAssignmentService.java - Rider assignment → Redis geo and pub/sub: moves geo entry
tracking-service/src/main/java/com/project/service/RiderAssignmentService.java - Rider assignment → Mission broadcast: broadcasts mission
tracking-service/src/main/java/com/project/service/RiderAssignmentService.java - Mission broadcast → Redis geo and pub/sub: publishes mission
- Rider assignment → Status event producer: emits assignment status
tracking-service/src/main/java/com/project/service/RiderAssignmentService.java - Status event producer → Apache Kafka: publishes status
tracking-service/src/main/java/com/project/kafka/OrderStatusProducer.java - Rider administration → Rider seeding: seeds riders
tracking-service/src/main/java/com/project/controller/RiderController.java - Rider seeding → Rider records: resets and saves
tracking-service/src/main/java/com/project/service/DataBootstrapService.java - Rider seeding → Redis geo and pub/sub: seeds geo pool
tracking-service/src/main/java/com/project/service/DataBootstrapService.java - Rider simulator → Redis geo and pub/sub: receives missions
- Rider simulator → Location ingestion: sends GPS pings
- Location ingestion → Redis geo and pub/sub: updates geo index
tracking-service/src/main/java/com/project/controller/LocationIngestionController.java - Location ingestion → Status event producer: emits status updates
tracking-service/src/main/java/com/project/controller/LocationIngestionController.java - Location ingestion → Rider assignment: releases delivered rider
tracking-service/src/main/java/com/project/controller/LocationIngestionController.java - Apache Kafka → Order status consumer: delivers statuses
- Order status consumer → Order persistence: updates order
- Order lifecycle → PostgreSQL: persists order
- Rider assignment → PostgreSQL: persists rider claim