// the find
thangchung/go-coffeeshop
☕ A practical event-driven microservices demo built with Golang. Nomad, Consul Connect, Vault, and Terraform for deployment
A Go microservices demo using a coffee shop as the domain, implementing choreography-based saga with RabbitMQ for inter-service communication and gRPC for synchronous calls. It's aimed at developers who want to see DDD, vertical slice architecture, and the HashiCorp stack (Nomad, Consul Connect, Vault) working together in a realistic-ish scenario. Not production software — a teaching example.
sqlc for type-safe SQL generation is a good choice that keeps database code honest rather than hiding it behind a leaky ORM. The separation between cmd/ (wiring) and internal/ (domain logic) is clean and follows idiomatic Go layout. Wire for dependency injection is used consistently rather than bolted on as an afterthought. The devcontainer setup means anyone can clone and get a working environment without fighting local toolchain differences.
The roadmap openly admits there are no tests, no observability, and no auth — so this is a structural skeleton, not a working system you'd learn operational patterns from. Last commit was May 2023 and the repo shows no signs of resuming, so the Nomad job specs and Terraform config may already be stale against current HashiCorp APIs. Product data is hardcoded in-memory (products_inmem.go) which is an odd choice for a demo meant to show real persistence patterns. RabbitMQ error handling in the consumer is minimal — dropped messages and reconnection logic are left as an exercise for whoever reads the code.