// 01 · the-context
The context
xGangsters was a Web3 project I co-founded and led as CTO from September 2022 to March 2024. The idea: create a living NFT collection with real game mechanics and a community engagement system that goes beyond "mint and hold".
Three planned functional pillars:
- →An NFT election system where holders vote for active project contributors
- →A hidden NFT hunt game with daily attempts based on NFT count
- →A mobile automated combat game on Unreal Engine 5, with NFT stats driving fights
Deployed on MultiversX (formerly Elrond).
// 02 · what-was-actually-shipped
What was actually shipped
Let me be clear on what was actually deployed vs what remained in progress:
Shipped to production ✅
- →NFT election system
- →Hidden NFT hunt game
- →Marketing site
- →Web3 dApp (wallet connect, NFT/token visualization)
Advanced beta, not finalized ⚠️
- →The Unreal Engine 5 mobile combat game — functional but not in a public release state when the project ended
The project ended in March 2024 due to team-internal reasons (health issues affecting a co-founder), not from a technical failure or market rejection.
// 03 · the-solution
The solution
I designed and built the entire web layer (dApp + marketing site) and the blockchain integration on the front/back side, fully autonomously and without AI assistance — back then I was hand-coding everything.
The Web3 dApp
The dApp is built with Next.js + React + ChakraUI, integrating WalletConnect + MultiversX SDK so users can connect their wallet, see their NFTs, view their project token balance, and interact with smart contracts.
// WalletConnect + MultiversX integration pattern (simplified)
async function connectWallet() {
const provider = await WalletConnectProvider.init({
chainId: "1", // MultiversX mainnet
relayUrl: WALLET_CONNECT_RELAY,
});
const { address } = await provider.login();
// Fetch user NFTs on MultiversX
const userNfts = await multiversXSdk.getNftsForAddress(address, {
collection: "XGANGSTERS-xxx",
});
return { address, nfts: userNfts };
}
The NFT election system
NFT holders vote for candidates during a defined period. Votes are weighted by NFT count. At the end of the period, elected contributors join the project (partial governance).
I built the full voting UI and the monitoring backend (NestJS). The associated smart contracts were written by another team member specialized in blockchain; I handled the dApp-side integration.
The hidden NFT hunt game
An NFT is hidden in a visual grid. Each user has a limited number of daily attempts based on their NFT holdings. First to find it wins a reward.
I built all the game logic on the frontend, the attempts system, state synced via Firebase Realtime Database, and the wallet NFT integration.
The mobile combat game (not finalized)
The Unreal Engine 5 game was developed by an external UE5-specialized freelancer. On my side, I built the interface API between the game and the blockchain: exposing NFT stats, API contracts, on-chain result submission.
The game remained in advanced beta, not finalized when the project ended.
// 04 · technical-challenges
Technical challenges
MultiversX integration in 2023. Back then MultiversX was young (Elrond → MultiversX rebrand in progress), the JavaScript SDKs were evolving fast, docs sometimes thin. I often had to read SDK source code to understand certain behaviors.
Distributed Web3 state. A dApp combines several sources of truth: the user's local wallet, on-chain state (slow to confirm), an off-chain cache layer, and the UI. Keeping all of that coherent without showing inconsistent states requires real thought on optimistic transitions and error rollback.
Coordinating a multidisciplinary team. The team had 5 people: me (web + blockchain integration), a co-founder (strategy + community), a blockchain dev (Rust smart contracts), a UE5 freelancer, a designer. My CTO role involved aligning three codebases (web dApp, smart contracts, mobile game) with three different release cycles — without slowing anyone down.
// 05 · what-im-taking-away
What I'm taking away
xGangsters taught me two essential things about being a CTO:
First, a CTO isn't just the best coder on the team. It's the person who decides what to build, when, and ensures the whole team converges. The best technical decisions I made on xGangsters were often not to build: don't develop in-house what you can delegate, don't chase technical perfection on features the community hasn't validated.
Second, projects sometimes end for human reasons, not technical ones. The tech worked. The concept attracted attention. But a 5-person team is fragile in the face of a human accident. That's a lesson I apply at Klorv today: choose co-founders and team members with as much seriousness as technical choices.
The CTO experience gained on xGangsters directly prepared me to found Klorv two years later, with more maturity on these topics.
// 06 · tech-stack
Tech stack
| Layer | Technologies |
|---|---|
| Frontend dApp | Next.js, React, ChakraUI, Tailwind, TypeScript |
| Backend | NestJS, Node.js, Firebase Realtime DB |
| Web3 | MultiversX SDK, WalletConnect (dApp-side integration) |
| Smart Contracts | Rust (written by a dedicated team dev) |
| Game | Unreal Engine 5 (developed by an external freelancer) |
| Storage & deploy | AWS S3, Firebase, Netlify, Vercel |

