๐ŸŒ
web-app

๋ฐœ๋กœ๊ทธ๋ฆผ (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

๋ฐœ๋กœ๊ทธ๋ฆผ (Ballo-geurim) โ€” Draw it, guess it

Tech stack

Next.js 14 (App Router)TypeScriptReact KonvaSupabase (Auth ยท Postgres ยท Storage)Tailwind CSSVercelPWA / TWANext.jsTypeScriptReact KonvaSupabaseTailwind CSSPWA

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

Explore more projects

Back to home