| Container | Image | Port | Description |
|---|---|---|---|
| 🗄️ postgres-user | postgres:16-alpine | :5433 | User accounts, auth tokens, password hashes |
| 🗄️ postgres-product | postgres:16-alpine | :5434 | Product catalog, inventory, 20 seed products |
| 🗄️ postgres-order | postgres:16-alpine | :5435 | Event store (append-only order events) |
| 🗄️ postgres-payment | postgres:16-alpine | :5436 | Payment records and status tracking |
| 🗄️ postgres-notification | postgres:16-alpine | :5437 | Notification audit log |
| ⚡ redis | redis:7-alpine | :6379 | CQRS read model (denormalized order views) |
| 📨 nats | nats:2-alpine | :4222 | Event bus with JetStream persistence |
| 🐇 rabbitmq | rabbitmq:3-management-alpine | :5672 :15672 | Notification queue with management UI |
| Container | Dockerfile | Port | Description |
|---|---|---|---|
| ⚛️ frontend | frontend/Dockerfile | :3000 | Node 22 build + Nginx 1.27 serve (React SPA) |
| 🛡️ gateway | deployments/docker/gateway.Dockerfile | :8080 | REST-to-gRPC reverse proxy, CORS |
| 👤 user-service | deployments/docker/user-service.Dockerfile | :50051 | Auth, JWT, registration, profile |
| 📦 product-service | deployments/docker/product-service.Dockerfile | :50052 | Catalog CRUD, atomic stock reservation |
| 📋 order-service | deployments/docker/order-service.Dockerfile | :50053 | CQRS + Event Sourcing, projector |
| 💳 payment-service | deployments/docker/payment-service.Dockerfile | :50054 | Event-driven payment processing |
| 🌉 bridge-service | deployments/docker/bridge-service.Dockerfile | — | NATS → RabbitMQ event forwarder |
| 🔔 notification-service | deployments/docker/notification-service.Dockerfile | — | RabbitMQ consumer, SMTP email, audit log |