finds.dev← search

// the find

rasadov/EcommerceAPI

★ 686 · Go · Apache-2.0 · updated Feb 2026

Modular e-commerce backend with a GraphQL gateway and gRPC microservices for accounts, products, orders, payments, and recommendations.

A learning-oriented Go microservices project implementing a full e-commerce backend: GraphQL gateway, gRPC inter-service communication, Kafka event streaming, Elasticsearch for product search, and a Python recommender service. Aimed at developers who want a concrete reference for wiring these technologies together, not a production-ready platform.

Each service has a clean internal layout (server/service/repository layers) with protobuf contracts checked into the repo, so the boundaries are explicit. The Kafka event flow is architecturally sound — Order publishes, Payment and Recommender consume independently, which is the right shape for this domain. The mix of Go and Python for the recommender is a realistic polyglot setup, and the gRPC client/server generated code is present for both languages. docker-compose brings the full stack up in one command, which is genuinely useful for a project of this complexity.

The recommender is essentially a stub — the Python service consumes Kafka events but the actual recommendation logic (collaborative filtering, embeddings, even a basic frequency count) appears to be unimplemented or trivially simple. No distributed tracing or structured logging across services, so when something breaks in the gRPC chain you are reading Docker logs and guessing. Test coverage is thin — a handful of service-layer unit tests for account and top-level integration tests, nothing for order/payment flows or the Kafka consumers. The Payment service calls DodoPayments but there is no documentation on obtaining credentials or configuring the webhook endpoint, making it effectively unusable without digging through the code.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →