All projects
Case studyConsumer web app How it's built
Consumer web app · privacy
Honest Mailbox
A private space for couples: say how you feel, check in daily, play together and repair after conflict.

Next.js 16React 19TypeScriptFirebase AuthFirestoreFramer Motion
- Problem
- Couples need a place to say difficult things gently, and that place holds some of the most private data people have.
- Who it's for
- Couples, including long-distance ones, who want a daily habit of checking in and a calmer way through conflict.
- Design decisions
- A warm, playful identity with a mailbox mascot, a sticker set and bold editorial type, so serious conversations feel safe rather than clinical. Its own design system keeps the components consistent.
- Technical decisions
- Next.js client components on Firebase Auth (Google sign-in) and Cloud Firestore, with no custom server. Security headers (CSP, HSTS and more) are set in the Next config and tested; Dependabot and npm audit run in CI.
- The hard problem
- Keeping a two-person space truly private. Every document names its two members and the rules check that on every read and write; invite codes are single-use and expire. Chat is end-to-end encrypted with keys derived on each device, plus a passphrase-wrapped backup so a new device can recover. The limits (no forward secrecy, metadata visible) are written down plainly.
- Result
- Live with games, question decks, daily check-ins and encrypted chat. Unit tests cover date and streak logic, and the security rules are tested against the Firestore emulator.
Auth & data
Firebase Auth + Firestore rules
Security
E2EE chat, CSP, tested rules
Tests
Unit + emulator rule tests
Next project
Strata