our days
Two people, two clocks, one list
What it is
A to-do list for two people living nine and a half hours apart. Each person gets a column, each column runs on its own clock, and overnight the other person's side turns into a night sky and says they are asleep.
Who it helped
The two of us are in Gettysburg and in Pune, and a shared list built for one time zone quietly lies to you. "Today" is not the same day on both ends, so a task written for tomorrow lands on the wrong side, and you end up messaging someone at 3am their time asking whether they did a thing.
So the clock is part of the page rather than an afterthought. Each column shows that person's real local time, the day switcher moves both columns by one day but resolves against each person's own calendar, and between midnight and 8am their column becomes a night sky instead of a list. The point is not the animation. It is that you can look at the screen and know, without doing arithmetic, whether the other person is awake.
A clock is only ever a guess, though, and guessing wrong about someone being asleep is the whole failure the feature is meant to prevent. So either of you can tap goodnight, or good morning, and say it outright. The tap outranks the clock, and then retires itself the next time the clock crosses midnight or 8am, so forgetting to tap back does not leave you showing as asleep all day.
The header writes out love, then माया, the Nepali word for the same thing. It was the first thing I built and the reason the rest exists.
What went well
Storage is one interface with two implementations. With no credentials configured the app keeps everything in the browser and shows a small badge saying it is not syncing; with Supabase configured the same interface writes to Postgres and subscribes to changes, so edits appear on the other screen in about a second. That means it runs correctly the moment you clone it, with no account to make first, and the sync path is a swap rather than a rewrite.
The handwriting in the header is generated from a font's real outlines rather than drawn by hand, with the glyph paths inlined so nothing is fetched at runtime. One family covers both Devanagari and Latin, and each glyph is revealed left to right in reading order, including along the शिरोरेखा, the line across the top of the Devanagari.
What's next
The access model is the honest weak point. The anon key ships inside the browser bundle and the row-level security policies let anyone holding it read and write, so anyone with the URL can edit the list. For a private list between two people that is the same trust model as an unlisted document, and I took the trade deliberately against making either of us log in, but it is a trade, not a solution, and it would not survive a third user.