fullstack · July 2026
Shansi
A gamified cashback app for Georgia: earn cashback at partner merchants by scanning QR codes, then spend the coins across arcade games, mystery boxes, and a build-and-raid village with real-time PvP attacks. Bilingual (Georgian/English), mobile-first, live on Vercel.
Tornike Kalandadze — software engineer & technical lead, client delivery since 2019 · Tbilisi (GMT+4)

Problem
Cashback programs are boring: points accumulate in a forgotten wallet and merchants get no repeat engagement. In Georgia there was no loyalty product that made earning — and spending — cashback something users actually come back for daily.
Approach
Make the wallet a game currency. One monorepo: a Next.js 14 frontend where React Three Fiber and Remotion render the games and village, and a Hono backend on Drizzle/Turso owning the coin economy — QR merchant crediting, game payouts, mystery boxes, referrals. Socket.IO carries the real-time layer (village raids, live balances), Twilio Verify OTP + JWT keeps auth phone-native, and separate merchant and admin portals close the loop: merchants see transactions and commissions, admins simulate the economy before tuning it.
Impact
A complete two-sided product live at shansi-nine.vercel.app: five games, village building with PvP raids, mystery boxes, promotions, referrals, and leaderboards for users — QR crediting and commission tracking for merchants — economy simulation for the operator. Fully bilingual Georgian/English and mobile-first throughout.
Through every lens
01 · Full-stack
Next.js 14 + TypeScript frontend (React Three Fiber game scenes, Remotion animation) over a Hono backend with Drizzle ORM on Turso (libSQL). Socket.IO for real-time village raids and balances, Zod-validated APIs, Twilio Verify OTP + JWT auth, and three surfaces from one codebase: player app, merchant portal, admin dashboard.
Built with
Next.js 14 · TypeScript · Tailwind CSS · React Three Fiber · Remotion · Hono · Drizzle ORM · Turso (libSQL) · Socket.IO · Zod · Twilio Verify · JWT
Notes
Shansi turns loyalty points into a game economy. Users log in with a phone number (Twilio Verify OTP + JWT), scan a merchant's QR code at checkout, and cashback lands in their wallet as coins. Those coins feed a full game layer — Air Hockey, Chicken Rush, Lucky Drop, Lucky Step, and the Midnight Machine — plus mystery boxes, promotions, referrals, and leaderboards. The village mode adds persistence: build structures, earn attack charges, and raid other players' villages, with Socket.IO keeping battles and balances live. On the business side, a merchant portal tracks transactions and commissions, and an admin dashboard manages users and simulates the coin economy. The monorepo splits a Next.js 14 frontend (React Three Fiber and Remotion for game visuals and animation) from a Hono backend on Drizzle ORM over Turso (libSQL).