Built a roulette mini-game and ops tooling across game UI, admin, and Node services.
I worked across a live dual-currency social-casino product: NestJS services, Prisma migrations, React admin dashboards, and a Rive-driven game surface. The work ranged from a full roulette mini-game and mission system to bulk imports, jackpot sharing, free-rounds, and i18n.
Full-stack
Real-time UI
State machines
What changed
Pulled validation, services, animation identity, and cache invalidation into the same delivery path.
Measured outcomes
- Zero → prod
- Hours → mins
- 4
Highlights
- Built a full-featured roulette mini-game from scratch: drag-and-drop chip placement, Rive state-machine animation, and a chip-identity model that stopped merge/split jitter.
- Shipped missions across backend CRUD, admin UI, nested rewards, goals, conditions, and post-creation locks on economy-critical identifiers.
- Built a spreadsheet import flow for ops with schema checks, business rules, asset-ratio validation, currency validation, and per-row errors mapped back to the source cells.
- Added jackpot image generation and social sharing with the Web Share API, clipboard fallback, Redis TTL based on amount, and locale-aware currency formatting.
- Wired free-rounds from wallet API through mission-start cache invalidation to the UI, including auto-play support and an explicit state model.
- Built assignment management with server-side overlap checks and conflict detection, keeping the authoritative date on the server.
- Added AWS SSO shell helpers and database utilities the team kept using after the feature work was done.
Outcomes
- Delivered missions, roulette, free-rounds, jackpot sharing, and the bulk-import flow across admin, game UI, and backend services.
- Three rounds on chip identity produced a pattern the team could reuse for later animated game components.
- Bulk import took an ops workflow from hours to minutes, with validation on both client and server.
Stack
- TypeScript
- React 18
- Vite
- TanStack Query
- NestJS
- Prisma
- Sequelize
- PostgreSQL
- Redis
- Rive
- AWS
- Turborepo