Funcy Network: 23 Go services, one identity, one balance by Alikhan UrumovFuncy Network: 23 Go services, one identity, one balance by Alikhan Urumov

Funcy Network: 23 Go services, one identity, one balance

Alikhan Urumov

Alikhan Urumov

What shipped

Funcy Network is a network of independent games that share exactly two things: one player account and one balance of the network's play-money token, FNC. Three products run on it — provably-fair instant games, a weekly six-match prediction game on web and mobile, and fantasy football — each with its own site, frontend, backend, database and deployment.
I designed and built the platform underneath them: 23 repositories and 23 Go services, 223 database migrations, 57 Terraform files and 597 test files, delivered through GitOps onto GKE.

The constraint

Every game had to ship, fail and be redesigned on its own, with no shared game database and no game aware of any other. The only things they could share were identity and money — and both had to be impossible to spoof from a client.

Identity: one account, verified at every door

An in-house identity provider issues RS256 access tokens and publishes a JWKS that every product verifies locally; sessions can be revoked by id
Sign-in by password (argon2id), email code, Google, Telegram or crypto wallet; accounts merge only on a verified email
Each product's gateway validates the token and passes the user id downstream in a header it sets itself. Any client-supplied copy of that header is stripped, so identity cannot be forged from outside

Money: one balance, every movement on the record

A single adapter is the only door to the external wallet API. That upstream is not idempotent, so every balance movement is written to an audit ledger and credits are never blindly retried
Every money-moving request from the frontends carries an idempotency key
Instant games draw from a provably-fair RNG service whose server seed never leaves it. The fairness algorithm is frozen, because changing it would break verification of every past round

Events, rewards and delivery

Fantasy round settlement emits exactly one event through a transactional outbox; a shared rewards engine turns it into XP, levels and achievements, with idempotent issuance and a mint cap on token rewards
Notifications de-duplicate in two layers and render in English and Russian at write time
Fantasy football was ported off a legacy AWS stack (.NET, Lambda, Cognito) onto the shared Go and Next.js stack, cut over, and the old stack torn down
Infrastructure is Terraform end to end — GKE with maintenance windows, workload identity, WORM-retained buckets, Cloudflare — rolled out by ArgoCD, with a blocking image scan and a drift gate in CI and secrets delivered from the cloud secret manager
Stack: Go, PostgreSQL, Redis, Next.js 15, React 19, Expo, Terraform, GKE, ArgoCD.
Like this project

Posted Sep 25, 2026

A network of independent games sharing one account and one FNC balance. 23 Go services, own IdP, ledgered wallet, provably-fair RNG, GitOps on GKE.