The FTGO Application (Food To Go) is the example code from Chris Richardson’s book Microservice Patterns. It implements a realistic food delivery platform using a full microservice architecture, demonstrating key patterns including Sagas for distributed transactions, CQRS for query optimization, event sourcing, and transactional messaging via Apache Kafka. This documentation covers the architecture, service design, deployment, and REST/GraphQL APIs of the FTGO application.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/microservices-patterns/ftgo-application/llms.txt
Use this file to discover all available pages before exploring further.
Architecture Overview
Explore the system design, service boundaries, and how the services communicate
Getting Started
Set up prerequisites and run the application locally with Docker Compose
Microservice Patterns
Learn how Sagas, CQRS, event sourcing, and transactional messaging are applied
API Reference
Browse REST endpoints and the GraphQL API across all services
Key patterns demonstrated
The FTGO application illustrates the following patterns from the Microservice Patterns book:Saga Pattern
Maintain data consistency across services using orchestration-based sagas
CQRS
Separate reads from writes using the Order History Service and DynamoDB
Event Sourcing
Persist aggregates as a sequence of events in the Accounting Service
API Gateway
Compose multiple service responses at the edge via REST or GraphQL
Transactional Messaging
Publish domain events reliably using the outbox pattern with Kafka
Domain-Driven Design
Services modeled around bounded contexts with aggregate roots
Services at a glance
| Service | Port | Responsibility |
|---|---|---|
| Order Service | 8082 | Order lifecycle management, saga orchestration |
| Consumer Service | 8081 | Consumer registration and validation |
| Restaurant Service | 8084 | Restaurant and menu management |
| Kitchen Service | 8083 | Kitchen ticket creation and acceptance |
| Accounting Service | 8085 | Account authorization via event sourcing |
| Delivery Service | 8089 | Courier assignment and delivery tracking |
| Order History Service | 8086 | CQRS view of order history (DynamoDB) |
| API Gateway | 8087 | REST and GraphQL composition layer |
The application requires significant memory (16 GB RAM recommended) as it runs many services and infrastructure components concurrently.