All work

Artisan shop — immersive storefront, phone CMS

A forest-walk storefront where the maker can publish one-off pieces from her phone in about 20 seconds.

Stack:
  • JavaScript
  • Canvas
  • Cloudflare Workers
  • GitHub Git Data API
  • Python
  • Gemini Veo
  • ~20 sfrom upload on the phone to the piece online, no redeploy
  • 2 × 120film frames driven by scroll, desktop and phone
  • 45automated tests, run against a fake GitHub

From her phone to the forest, one commit at a time

A scroll walk through a forest made from an AI film, and a catalogue the maker updates from her phone: every edit becomes a GitHub commit that a Cloudflare Worker serves in about 20 seconds.

Tap a block to see what it does.

  • People
  • Logic
  • Data
  • AI
  • Output
Her phone
Worker API
GitHub as the database
What feeds the page
Storefront

People

Phone app

Installable app behind a PIN. Photos are resized on the phone to WebP at 900, 600 and 240 px and named by their SHA-256, then sent one at a time.

  • PWA
  • Canvas
  • WebP

Hands to Worker API

The problem

An artisan hand-paints bones and skulls found in the woods and sells one-off pieces at fairs and on Instagram. She needed a storefront with the mood of a cabinet of curiosities in a forest, and a way to publish pieces herself from her phone, with no paid CMS and no checkout: purchase requests go through WhatsApp.

What I built

  1. I built the opening as a walk through a forest: an image sequence drawn on a canvas, 120 frames per device, scrubbed by the scroll with story notes along the path.
  2. I produced the forest film with Gemini Veo and Google Flow from fixed start and end frames, in 16:9 and 9:16, then cut it into frames with a Python script.
  3. I made GitHub the database: each edit from the phone app becomes one commit through the Git Data API, so history and rollback come free.
  4. I built the phone app: PIN login, photos resized to WebP on the phone, add, edit and mark as sold.
  5. I tried three builds with different agents (Next.js with React Three Fiber, then Astro) before settling on a framework-free site on a Cloudflare Worker.

The hard part

Scrubbing a video with the scroll stuttered on iPhone: seeking showed only a handful of frames. I replaced the video with an image sequence on a canvas, loaded in progressive passes so the walk starts moving after the first frames, with damping that does not depend on the frame rate.

Result

The site runs on a Cloudflare Worker with 45 automated tests against a fake GitHub. From the phone app a piece can be added, edited or marked as sold, and it is online in about 20 seconds without a redeploy.

My role

Solo build across three generations. I chose the final architecture, wrote the specs, produced the AI film and handled deploy and the client's catalogue data; Codex and Claude Code wrote most of the code.