03 / iOS app2025Pre-launch
Tiny Challenges
No post, no peek. Enforced in Postgres.
Why I built it
Shared photo apps drift towards performance. Once you can scroll before you contribute, the smart move is to wait, see what everyone else did, and post the safest version of it.
The fix is a rule, and a rule only works if it cannot be skipped. Putting it in the client would have been faster and would have meant nothing.
What I built
The gate is a policy
One row level security policy decides who can read what. The app has no code path that shows an unearned photo, because the query simply comes back empty.
Same prompts, same midnight
Prompts are assigned per day rather than per user, so a friend group is always talking about the same three things.
No numbers anywhere
No likes, no counts, no streak that punishes a missed day. The only feedback is that other people showed up too.
The hard part
Midnight is a product decision
A day boundary looks like a timezone problem until you realise it decides whether the prompt is common ground. Everyone in a group shares one day window instead of a rolling personal clock.
What I would do next
It never launched, and I am not going to pretend otherwise. I still think the constraint was right. I would rebuild the invite flow first, because that is where the group of four you actually want falls apart.