Real-time microservices app

YNER

A real-time role-playing tabletop, built as microservices and run on my cluster.

A monorepo: a Next.js front end and independent services behind a gateway, each usable through its API without the front end. The game rules are recomputed on the server and the dice are rolled by the server. The whole thing is deployed to my cluster by Argo CD.

What I built

  • 10 Node.js and TypeScript services (Fastify) behind a gateway, with one PostgreSQL schema per service.
  • Event-driven architecture: transactional outbox to NATS JetStream, real-time Socket.IO, Valkey cache, WebRTC voice.
  • Next.js front end with 3D dice (Three.js) and Stripe payments.

Highlights

  • Secured supply chain: SonarQube quality gate, Trivy, Gitleaks, CodeQL and Playwright e2e tests; cosign signed images with an SBOM, verified by Kyverno and shipped by Argo CD.
  • Point-in-time recovery to the second (Barman Cloud PITR), encrypted backups and an automatic restore test every week.