All work

Neighbourhood bar — comedy network site

A scroll-driven walk into the bar and a merch catalogue, built for traffic coming from social video.

Stack:
  • Astro 7
  • GSAP + ScrollTrigger
  • Lenis
  • Web Audio API
  • Cloudflare Workers
  • Vitest
  • 14Vitest cases on the tested foundations
  • 3bottles on the real counter, one each for merch, bar and social

Three bottles, three doors

A site for the audience of a comedy format shot at the bar counter: three bottles open the walk into the bar, the merch and the videos.

Tap a block to see what it does.

  • Infrastructure
  • Input
  • Logic
  • Output
  • People

Infrastructure

Astro on Cloudflare

Static-first Astro pages deployed as a Cloudflare Worker with KV sessions; a post-build guard fails the build if the adapter config is missing.

  • Astro 7
  • Cloudflare Workers
  • wrangler

Hands to Bottle counter

The problem

A neighbourhood bar had built a following with a comedy format: fake newscasts and sketches shot at the counter. Its audience arrives from short videos on a phone, and the bar wanted to turn that traffic into visits and T-shirt sales.

What I built

  1. Wrote a brand bible for the format and a spec with locked decisions: Astro on Cloudflare, payments and print-on-demand in test mode, 3D kept to a few moments.
  2. Made the home a counter with three bottles: a tap pops the cap, a foam video washes over the screen and opens merch, the bar or social.
  3. Built a POV film of a one-take walk into the bar that plays as you scroll, behind a roller-shutter intro whose sound is synthesised in the browser.
  4. Built the merch catalogue and a pre-order flow: T-shirt, size, contact, then a clip from the walk as the reward.
  5. Split the spec into a TDD plan for agents, ran it with subagents, and added a build guard that fails if the Cloudflare adapter goes missing.

The hard part

Syncing a one-take video to the scroll without stutter, on phones too. The clip is fetched as a blob so it is always seekable, the scroll sets a target time and the seek is smoothed in requestAnimationFrame. Text beats switch on at fixed points of the walk.

Result

An advanced prototype that runs locally: 17 commits of tested foundations with 14 Vitest cases, plus the immersive sections. Payments and print-on-demand are designed but not connected, so pre-orders stay in the browser until the endpoint exists.

My role

Solo, with agents. I wrote the brand bible, the spec and the TDD plan and directed the build; Claude Code with the superpowers skills wrote the code, and Codex mapped the codebase as a graph.