Skip to content
All work
LIVE2026

For You

Time-Locked Birthday Scrapbook

A handmade vintage scrapbook that stays sealed until midnight in her timezone, then opens into a page-turning book of photographs, letters and hidden notes.

For You — Time-Locked Birthday Scrapbook
Midnight, her timezone
Unlocks at

Problem

I wanted to build something for one person that felt made rather than generated — and put the source on GitHub without putting her name, her birthday or her photographs on GitHub with it.

What I built

A page-turning scrapbook with a wax seal that will not break before the moment it is supposed to. Spreads hold polaroids you can turn over, a timeline, a quiz, "open when…" letters and notes hidden in the margins. Every word, photo path and caption lives in one data file, so the whole book can be rewritten without touching a component.

What I did

  • Full design and build
  • Time-lock and timezone logic
  • Privacy model — public repo, private contents
  • Page-turn interactions and layout

Technology

  • React
  • TypeScript
  • Vite
  • CSS

Challenges

Keeping a public repository genuinely free of anything identifying. Her name, the date and the endearment come from environment variables with neutral fallbacks, and every photo and voice note is git-ignored by directory rather than by filename pattern — a glob that "should" match is one careless filename away from leaking. A fresh clone with no `.env` still builds and runs.

What I learned

The midnight unlock had to fire at *her* midnight, not the visitor's. Computing it against an IANA timezone rather than the browser's clock is a two-line difference that decides whether the thing works at all when someone opens it from another country.