// the find
mehdihadeli/go-food-delivery-microservices
🍕 A practical food delivery microservices, built with Golang, Domain-Driven Design, CQRS, Event Sourcing, Vertical Slice Architecture, Event-Driven Architecture, and the latest technologies.
A Go microservices reference implementation covering DDD, CQRS, Event Sourcing, and vertical slice architecture — all in one project. It's explicitly a learning/template project, not a business application, and the author says so upfront. Aimed at Go developers who want to see how these patterns fit together before building their own system.
Full observability stack wired in from the start: OpenTelemetry traces + metrics, Jaeger, Zipkin, Prometheus, Grafana — not bolted on later. Testcontainers-based integration tests that spin up real Postgres, RabbitMQ, and EventStoreDB instead of mocks, which is the right call for this kind of infrastructure-heavy code. The internal/pkg layer is genuinely reusable — messaging abstractions, custom error types, CQRS mediator wiring — you could lift these into your own project without much pain. Intentional architectural contrast between services: catalogs-read uses simple CRUD, orders uses event sourcing, so you can see both approaches side-by-side.
The Outbox and Inbox patterns are marked as in-progress — which means the messaging layer has no at-least-once delivery guarantee yet, making it unsuitable as a production template until those land. Three validation libraries in use simultaneously (go-playground/validator, ozzo-validation, and manual checks) with no clear rule for when to use which; you will pick the wrong one and create inconsistency. The olivere/elastic client is present but marked deprecated in its own README entry — the migration to the official client is unfinished. Kubernetes/Helm deployment is a placeholder with a .gitkeep, so anyone hoping to use this as an end-to-end deployment reference hits a dead end there.