
Photobooth
Open the URL, take four shots, download a retro film strip. No account, no install, no friction — just your camera and the moment.
Photobooth strips the photo booth experience down to its essence: a URL, a camera, and a film strip. Open it on any device, take four shots with your camera, and the app composites them into a classic vertical strip layout using html2canvas — ready to download and share in seconds. No signup, no cloud storage, no app required. It works as a PWA, so it installs and runs offline when needed. The entire product is defined by a single constraint: if any step requires an account or a form, the experience is already broken.
Why I built this
I kept noticing that photo booth apps all have the same problem: they ask for something before they give you anything. An email, an account, a subscription. I wanted to build the opposite — a tool that delivers the whole value in under 30 seconds with nothing asked in return.
Use case
Parties, events, friend groups, team meetups — any moment where you want a shareable memory with zero setup. The zero-friction constraint is the entire product vision: if someone has to create an account, the spontaneity that makes it fun is already gone.
What I learned
Simplicity is an active discipline, not a default state. Removing every non-essential step means each remaining step has to be perfect — camera access, capture timing, strip layout, share interaction. When there are no features to hide behind, the experience of each individual moment becomes the product.
Where I got stuck
Camera access via the MediaDevices API behaves inconsistently across browsers and devices. Safari on iOS, Chrome on Android, and desktop browsers all handle constraints, permissions, and resolution negotiation differently. Getting reliable, high-quality capture everywhere without a native SDK required careful testing and a lot of defensive constraint handling.