All projects

Case study Browser camera & canvas

Photobooth.

Public web app · Personal project

From a camera frame to a photo strip, in the browser.

A personal, public web app for capturing photos and assembling downloadable photo strips. The original repository records my implementation under the tedy69 account.

My contribution
I built a web photo booth with camera capture, photo-strip layouts, canvas stickers, and language selection.
Stack
Next.js · React · TypeScript · Fabric.js · Canvas
The public Photobooth template showcase displaying classic, triple, and grid layouts with sample portraits.
The public template showcase, using sample images in classic, triple, and grid layouts.

My role

Built the application, its camera and canvas utilities, strip templates, and language-selection flow.

How it works

Next.js hosts the React interface. Camera hooks acquire a browser media stream, Canvas captures frames, and Fabric.js composes photos, stickers, and strip exports.

What I built

  • Built camera-frame capture and media-stream cleanup
  • Added strip and grid layouts with canvas composition and image export
  • Added sticker placement, background and frame controls, and translated interface strings

Decisions that mattered

  • Separated camera acquisition and stream cleanup from the editing interface
  • Calculated strip dimensions and image positions from the selected template
  • Kept language selection in a shared provider with a saved browser preference

Tradeoffs and constraints

  • Camera capture depends on browser permissions and device support
  • The current source has a test-image fallback after camera failure; hardware capture and export were not revalidated in this portfolio review

Browser camera permissions · Canvas lifecycle · Image dimensions · Client-side composition

Delivered

Published source and a working public template showcase. The implementation includes camera capture, canvas editing, and photo-strip composition and export.