Case study N° 09 · Tools
Party Photo Wall
A live QR-to-projector photo wall for a Buc-ee's-themed pool party, designed, built and shipped in one day.
Try the demo
Sample data, runs in your browser
- Idea to live
- 1day
- Under a “working beats pretty” rule: plain HTML, CSS and JS, no build step.
- Projector refresh
- 3s
- New photos join the rotating show seconds after they are uploaded.
- And no SDK
- 0frameworks
- Uploads go straight to Supabase Storage and REST with fetch.

What it is
Guests scan a QR code on the projector screen, which opens a phone page where they upload photos and tap an “I just cannonballed” button. A laptop by the pool projects a rotating full-screen show that updates as photos arrive.
Highlights
- Shipped the same day under a strict “working beats pretty” rule: plain HTML/CSS/JS, one file per page, no build step.
- Supabase without the SDK: uploads go straight to the Storage and REST APIs with
fetch. Row-level security means guests can only insert and read, never update or delete. - QR generated in the browser from the live URL, with the library inlined by a 10-line build script so nothing depends on a CDN at the party.
- Photos are resized on the phone before upload so the pool Wi-Fi keeps up.
Methods
- Stack
- HTML, CSS, Vanilla JS, Supabase Storage, Supabase REST, Postgres RLS, Vercel.
- Data
- The demo runs in your browser on sample data; nothing is sent anywhere.
- Status
- Shipped Oct 2026. Party guests, one afternoon.