Skip to content
Shashi Gyawali
← All work

Case study 02 / Skill Up

A skill-tournament platform, built solo

Skill Up is a skill-based esports app where players pay to enter tournaments and win prizes. I was the only engineer on it: iOS, Android and the back end.

Skill Up · 01 / 03 · Live tournament
Skill Up home screen with a live MacBook Air tournament, its tickets sold, countdown and buy button
Skill Up · 02 / 03 · Buying a ticket
Buy Tickets sheet for the MacBook Air tournament: price per ticket, a quantity stepper with the per-player maximum, and the total in coins
Skill Up · 03 / 03 · Mid-game
Shatter Grid mid-game: an 8×8 board with blocked tiles, the score, shatter countdown and timer, and the pieces left to place

Result

60 FPSGameplay on device
1 codebaseiOS and Android
1 engineerWhole platform, end to end
Role

Sole full-stack engineer

Years

2025 – 2026

Stack

React Native, Skia, Node.js, PostgreSQL, Stripe

Scope

Mobile, back end, payments, anti-cheat

The problem

When money rides on a score, every part of the product becomes a trust problem. The game had to feel instant on a phone, two players entering the same tournament had to get exactly the same puzzle, and a score arriving from a client could never be taken at face value. All of it built by one person, for iOS and Android.

Architecture

  • I built
  • Managed service
  • Trust boundary
  • 01Matches a build point
PLAYERiOS or AndroidMOBILE APPReact Native,iOS and AndroidGAME ENGINESkia + Reanimated,60 FPSSEEDED RNGSame pieces onclient and serverSCORE CHECKRecomputes everyscore from movesTOURNAMENTSTickets, entrycaps, wallet limitsREWARDSXP, levels,daily wheelPAYMENTSOne provider layer,idempotency keysRECEIPT CHECKServer-sideverificationPOSTGRESQLTransactionalguardsSTRIPECard payments,Android and webAPPLE IAPIn-app purchase

What I built

  1. A custom real-time game engine: an 8×8 block-placement game in React Native with Skia and Reanimated, holding 60 FPS with combo scoring and timed mechanics.

  2. Server-authoritative anti-cheat: the server recomputes every score from batched client moves, checking sequence integrity, timestamp monotonicity and sanity caps.

  3. A shared seeded RNG that deterministically generates identical piece sequences on client and server, so every entrant plays the same board.

  4. Payments through Stripe and Apple In-App Purchase with server-side receipt verification, behind one pluggable provider abstraction with idempotency keys.

  5. A concurrency-safe tournament and ticketing system in PostgreSQL with transactional guards on ticket capacity, entry caps and wallet limits, plus XP and levelling, a timezone-aware daily reward wheel, biometric login, age-gated onboarding and EN/FR localisation.

Next caseHiring platform03 →