Emin Gevorgian
CV (PDF, opens in a new tab)Contact

Emin Gevorgian

Senior Software Engineer

I build real-time systems that stay correct under load.

Get in touchCV (PDF, opens in a new tab)

Bondit Club

A community platform with game mechanics, and the ERC-721 and ERC-20 contracts on Polygon behind its token economy.

The Bondit web dashboard with leaderboard, activity feed and polls, beside the mobile quests screen.

TL;DR

Outcome
Shipped and ran a gamified community-building platform with an on-chain token economy
Role
Solo developer at the start, then team lead as the team grew
Context
Gamified community builder for community managers

Context

Bondit Club is a gamified community builder for community managers. Members complete quests and missions, send each other badges, climb XP leaderboards, dress avatars from a store of layered parts, and follow a social feed built mostly from events such as wins and level-ups. Part of it lived on-chain: a token economy with an ERC-20 token and an ERC-721 collection on Polygon, which meant learning Solidity from scratch.

Architecture

MembersAPI gatewayauthWebSocket gatewaylive updatesSchedulerrewards · resetsMessage busevents · request/reply · job queuesDomain servicesquests · feed · rewardsAvatar compositorlayered imagesChain listenerNFT transfersData storesrelational · docs · cachePolygonERC-20 · ERC-721externalMembersAPI gatewayauthWebSocket gatewaylive updatesSchedulerrewards · resetsMessage busevents · request/reply · job queuesDomain servicesquests · feed · rewardsAvatar compositorlayered imagesChain listenerNFT transfersData storesrelational · docs · cachePolygonERC-20 · ERC-721external
Fig. 1Services talk over one message bus, and a chain listener brings NFT transfers from Polygon onto it.
  • Services. NestJS microservices behind an API gateway, talking over RabbitMQ (request/reply and events), with job queues on Redis. Data in PostgreSQL, MongoDB and Redis.
  • Reward engine. Rewards are declarative rules; a handler applies each one, writes a ledger row and publishes an update event.
  • Live updates and schedules. A WebSocket gateway on Socket.IO pushes events to members; a scheduler runs daily rewards, leaderboard snapshots and monthly resets.
  • Avatar compositor. A .NET service that stacks trait layers into one image, called over the queue.
  • On-chain. A plain ERC-20 and an upgradeable ERC-721 behind a proxy, in Solidity on OpenZeppelin. A small listener publishes NFT transfers to the message bus. The in-app balance, XP and badges stay off-chain.

Decisions

Rewards as data, not code. Each reward could have been written as code. As rules, admins attach rewards without a code change, and every reward leaves a ledger row as an audit trail.

Messages instead of service-to-service HTTP. Services publish events rather than calling each other directly, which keeps them decoupled and gives retries. The feed and the live updates are built from the same events.

Polygon for the contracts. I deployed the contracts on Polygon because its fees are lower than Ethereum mainnet’s.

Result

We shipped and ran a gamified community-building platform: quests and missions, badges, XP leaderboards, layered avatars and a social feed, with its own token economy. I wrote its ERC-721 and ERC-20 contracts on Polygon, learning Solidity from scratch.

My role

I was the solo developer at the start, then the team lead as more people joined.

Contact

© 2026 Emin Gevorgian