Overview
Overview
A decoupled microservices architecture, sized for your constraints.
Every choice answers a requirement in the specification: ≤ 3s on 4G, 99.5% availability, 2,000 concurrent users, FR/EN bilingual, offline, bank-grade security, and a roadmap reaching financial services.
The end-to-end architecture
From a site manager's smartphone to replicated object storage.
ERK+ · microservices · live traffic
GraphQL at the edge · gRPC + NATS inside
Kubernetes · Docker · GitHub Actions (CI/CD, security scan) · Blue-Green deploys · auto-scaling to 2,000 users. Dots are messages in flight.
Every service has a single responsibility. The client never talks directly to the database; services communicate through explicit contracts. This decoupling keeps the system maintainable, resilient and workable by several engineers.
Six layers, one deployment
Microservices
Each domain (authentication, site, notifications, finance, media) is an autonomous service, deployed and scaled independently.
| Building block | Role |
|---|---|
| Traefik (API Gateway) | Single entry point: TLS termination, routing, load balancing |
| NATS + JetStream (event bus) | Persistent async communication — no message lost, full traceability |
| gRPC (internal) | Typed, binary exchanges between services |
| GraphQL (mobile) | The mobile downloads only the data it needs — decisive on 4G |
| Kubernetes | Auto-scaling to 2,000 users · Blue-Green deploys with zero downtime |
Decoupling isolates failures, lets each block evolve independently, and scales exactly where needed.
Go + Rust
- Go — high-concurrency services (Auth, Site, Notifications): millisecond startup, tiny memory footprint, thousands of concurrent connections.
- Rust — critical modules (Finance, Media): memory safety, arithmetic precision, vault encryption.
Ready for your V2 and V3
- The marketplace (V2) and financial services (V3) plug in as new services, without touching existing ones
- The NATS bus is already there: a new domain subscribes to events
- A versioned, documented API from day one

