๋ฐ๋ก๊ทธ๋ฆผ (Ballo-geurim) โ Draw it, guess it
A non-realtime social game where you draw a given keyword and others guess the word. Built solo end-to-end with Next.js, React Konva, and Supabase.
Duration
2026-07 - Present

Tech stack
Details
๋ฐ๋ก๊ทธ๋ฆผ (Ballo-geurim) โ Draw it, guess it
๋ฐ๋ก๊ทธ๋ฆผ is a non-realtime social drawing-and-guessing game. You get a keyword, draw it on a mobile canvas, and submit it as a puzzle. Other players see the drawing and try to guess the word. Because it isn't realtime, anyone can play whenever they have a spare minute.
๐ก Overview
Most drawing games are realtime and need a room full of friends online at once. ๋ฐ๋ก๊ทธ๋ฆผ removes that friction: every drawing becomes a standalone puzzle that lives on, so you can challenge friends with a link or dive into random and trending drawings from strangers.
๐ Key features
โ๏ธ Draw
Get a keyword (swap it if you don't like it) and draw on a mobile-first canvas with pen/eraser, colors, brush sizes, undo, and clear. Submit your drawing as a puzzle.
๐ฏ Guess
Take on a random puzzle with a 1-minute timer. After 20 seconds an initial-consonant (์ด์ฑ) hint appears, and the answer input shows one box per character so you know the length.
๐ Ranking & profile
Weekly "popular drawings" and "popular artists" rankings, a personal profile with the drawings you've made, and other users' profiles you can browse and challenge.
๐ Social & share
Share any puzzle as a link โ KakaoTalk and social previews show the actual drawing as the thumbnail (without spoiling the answer) to pull friends in.
๐ How it was built
Architecture
- Next.js 14 (App Router) + TypeScript, organized as feature modules (drawing / play / ranking / profile / auth)
- A DB-agnostic service layer so the app ran on mock data first, then swapped to Supabase with zero UI changes
- React Konva for the drawing canvas, exported to PNG and stored in Supabase Storage
Backend
- Supabase Postgres with row-level security; server-side RPCs for random selection, answer scoring, hints, votes, and weekly rankings โ the answer never ships to the client during play
- Supabase Auth (Google OAuth) with anonymous drawings as a fallback, plus self-serve account deletion that anonymizes past work
Delivery
- Deployed on Vercel; installable as a PWA and packaged as a Trusted Web Activity (TWA) for the Google Play Store
๐ฏ Outcome
The complete loop โ draw, submit, guess, vote, rank, and share โ shipped as a polished, mobile-first experience, with the whole product, design, and engineering done solo.
๐ฎ What's next
- Growing the keyword set and community seeding for Korean users
- Push notifications for new daily puzzles
- Friend invites and richer profile stats