// the find
saalikmubeen/microservices-architectured-app
Event-driven microservices architectured e-commerce app created using Express.js, Typescript, NATS-Streaming and Next.js
A course-project-style e-commerce app that sells event tickets, built across 7 microservices communicating via NATS Streaming. It's primarily a learning vehicle for the microservices + Kubernetes pattern — the author's README explicitly warns you not to run it locally unless you 'don't have a life'. Not production software.
Each service owns its own MongoDB instance, which is correct data isolation for this architecture — no shared database antipattern. The shared `common` package published as an npm module is a pragmatic way to handle cross-service types and middleware without copy-pasting. Test coverage is real: route-level and listener-level tests exist in every service using supertest + Jest with proper mocks for NATS. The NATS Streaming listener/publisher abstraction in `common/src/events` is clean — typed event subjects, generic base classes, less boilerplate per new event.
NATS Streaming is end-of-life and has been superseded by NATS JetStream — anyone building on this today would be starting on deprecated infrastructure. The client is plain JavaScript while every backend service is TypeScript, which undercuts the 'TypeScript to prevent event-type headaches' argument at the UI boundary. No API gateway or BFF layer: the ingress routes directly to individual services, so the client is tightly coupled to internal service topology. Last commit was 2022; Kubernetes manifests don't specify resource limits, which means it will eat whatever node it lands on.