Skip to content

New guideModernizing a legacy system without stopping the business

Logistics & Delivery · Case Study

CraveRush

A delivery platform where a failure in one service does not stop customers from ordering and paying.

Industry
Logistics
Platform
Web
Business type
B2C
Scope
Event-driven food delivery platform
CraveRush: Event-driven food delivery platform

Impact

Checkout and payments are isolated from the rest of the platform, each service can be scaled on its own, and engineers can trace any order across every service it touched.

Project overview

CraveRush is a food delivery platform covering customer ordering, restaurant management, fleet dispatch and administration. It was designed so that ordering and payments keep working even when other parts of the system are under strain.

The challenge

Order volume in food delivery arrives in sharp peaks around meal times. In a single application, a slow menu search or recommendation query can exhaust resources shared by checkout. The platform needed clear fault boundaries and full visibility into requests moving across services.

The approach

We separated the system along business boundaries — orders, payments, menus, dispatch — and made services communicate through events rather than direct calls where possible. Each service owns its data and can fail or scale independently.

The architecture

  • Java Spring Boot microservices for orders, payments, menus and dispatch
  • Apache Kafka for asynchronous events between services
  • PostgreSQL for orders and payments (ACID transactions)
  • MongoDB for menu and catalogue documents
  • React single-page app with React Query for server state
  • Distributed tracing with Zipkin; Docker-based environment
  • Stripe for payments

The product

Customers browse restaurants, order and pay. Restaurants manage menus and incoming orders. Dispatchers track the fleet on a live dashboard, and administrators oversee the whole platform.

Key features

  • Customer ordering and checkout
  • Restaurant menu and order management
  • Fleet dashboard for dispatch
  • Administrative dashboard across restaurants and orders
  • Event-driven order state updates
  • Distributed tracing across services

UX decisions

  • Order status is driven by events, so customers see changes as they happen rather than on refresh.
  • The fleet dashboard prioritises exceptions — late or unassigned orders — over a full list.

Technology

  • Java
  • Spring Boot
  • Apache Kafka
  • React
  • PostgreSQL
  • MongoDB
  • Docker
  • Stripe

Deployment

Containerised services with a Docker-based stack, per-service configuration and tracing enabled across environments.

Outcome

Checkout and payments are isolated from the rest of the platform, each service can be scaled on its own, and engineers can trace any order across every service it touched.

Need something
like CraveRush?

Tell us about the operation behind it. We'll reply within 24 hours.