Microservices
Microservices Overview
The primebrick-us-v3 repository contains the distributed microservices that
make up the Primebrick v3 backend. Each microservice is a self-contained
sub-folder with its own src/, package.json, Dockerfile, db-meta/, and
terraform/ configuration.
Tech stack
- Runtime: Bun (dev with
--hotreload, prod withbun dist/index.js) - Language: TypeScript (strict mode)
- HTTP: Node.js HTTP server via
@primebrick/sdk'screateHttpServer - Messaging: NATS (via
@primebrick/sdk'sNatsClient) - Database: PostgreSQL (via
@primebrick/dal-pg) - Package manager: pnpm
- Templates: Handlebars (where applicable)
Service catalog
| Service | Code | Port | Description |
|---|---|---|---|
| EmailSender | EMAILSENDER | 3003 | Email provider configuration, template rendering, and email dispatch via Brevo |
New microservices are added as new top-level sub-folders. Each must contain
a package.json with a name starting with primebrick- and a src/index.ts
entry point.
Architecture at a glance
The Backend (BE) acts as the API gateway. The Frontend (FE) never calls
microservices directly — all HTTP traffic goes through the BE's
/ws/:serviceCode/* proxy. Inter-service async communication uses NATS
subjects.
Next steps
- Architecture — NATS bus, BE proxy, SDK lifecycle
- Conventions — API path conventions, data model rules
- EmailSender — Email sending microservice
Last modified on