Open When is a community-driven repository of digital open when letters. An open when letter is a letter meant to be opened at a particular time or in a particular situation (i.e. open when sad, open when tired, open when you need a laugh). Usually, open when letters are written between people who already know each other to keep in touch and feel close during long distance separation. However, I think that the idea is still applicable to internet strangers - we may not know each other, but as fellow human beings, we can still send kindness and well-wishes to each other.
Open When is both a digital archive and social network. Users can:
- Write letters (list their name and location, select an "open when" prompt, and write their letter)
- Browse opened letters (letters that have been opened by others)
- Open new letters (list their name and location on the letter and release it to be browsed by anyone)
I created a minimalist design reminiscent of the indie web. There are no fancy animations or visuals; it's everything that it needs to be and nothing more.
I built the frontend in TypeScript using ReactJS. There are two main components of the site: LetterBrowser (contains components LetterOpener (contains component Letter), PromptSelector, Letter, Envelope), LetterEditor (contains components Envelope, PromptSelector).
I have a Supabase client set up for the backend. I use a NextJS API route to insert() a Supabase row when a letter is written (add_letter.ts) and to update() the Supabase row when a letter is opened (open_letter).
Each row consists of:
- The letter (prompt, letter body) and an auto-generated unique ID
- Author information (name, location, date of writing)
- Opener information (name, location, date of opening)
Open When is licensed under the MIT License Copyright (c) 2025.
See the LICENSE for information on the history of this software, terms & conditions for usage, and a DISCLAIMER OF ALL WARRANTIES.
All trademarks referenced herein are property of their respective holders.

