Skip to content
← All work
2026ShippedPublic

Flaky Not Flaky — Con Weekend Bingo

An offline-first bingo and scavenger-hunt PWA, plus print pieces, for an Atlanta bake shop’s Dragon Con weekend.

Solo — app design and build, print comps

Quest squares
25
Art payload
7.2 MB → 0.84 MB
Set pieces
4
Share images
6 at 1080x1350

01 / problem

The problem

Flaky Not Flaky is a family bake shop in a downtown Atlanta food court. For Dragon Con weekend they wanted a game that would pull convention crowds to the counter: a 25-square scavenger hunt dressed in a retro-futurist wasteland theme, with prizes redeemed in pastry.

The catch was the venue. The game is played in a food-court sub-level on convention wifi, so offline is the normal case, not the edge case. The design prototype pulled React, Babel, fonts and an icon webfont from CDNs at runtime: five network round-trips before a single pixel.

02 / build

What I built

I ported the prototype into a real Vite + React PWA and removed every runtime network dependency.

  • Offline after one load. Self-hosted font subsets (~91 KB), icons tree-shaken to the ~28 glyphs used, and a precaching service worker. Art went from 7.2 MB of PNG to 0.84 MB of WebP.
  • Four set pieces. A password-deduction terminal, a first-person raycaster over the food-court blueprint (with a headless test that walks it), a hold-to-open whack-a-mole, and an eight-phase blackout sequence that still resolves under reduced motion.
  • Shareable merit cards. Six 1080x1350 images composed on canvas, delivered through Web Share, then download, then press-and-hold as a fallback that cannot fail.
  • No accounts. Progress lives in one localStorage key, with transfer codes to move a card between phones.
  • Print pieces. A Python/OpenCV compositor places the meal box into location plates with colour matching and ground shadows, which produced the poster set.

03 / signal

What it shows

Designing for the real environment instead of the demo. The constraints (bad wifi, iOS share quirks, a QR code that has to outlive any deploy) drove the architecture. It also shows I can carry a small client from concept to a live event: app, print, and the unglamorous checks, like an asset-integrity script that pins one image to exact pixel dimensions because the minigame crops it by coordinate.

Gallery 1 / 5

Part of a five-poster set built from one composited box render.