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.

- 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.