List my Life
Shared lists for iPhone that keep working without a signal. Two people can edit the same list while apart, and the app’s own sync engine merges their changes.
My own app, built alone. AI agents write almost all the code, and I merge a change when CI is green.
- Stage
- In App Store review
- First submitted
- 30 September, 7 days after the first commit
- Not yet
- External testers, App Store release
In the app
Make a list and invite people to it, each with their own rights. Others can take a copy of a list someone made public. The screens read the phone’s own database and never wait for the network. Changes queue on the phone and go to the server when it is back online.
Sync
Each field of an item carries its own timestamp, and the newer edit wins. If one person renames an item while another ticks it, both changes survive. The server checks every incoming change against the sender’s rights before it applies it. A property test runs three simulated phones through random offline edits and retries, and every phone must end with the same list.
Trade-offs
I chose to build the sync engine
PowerSync turned out to be a much stronger candidate than the original design assumed, but its server licence forbids competing use, and the project uses permissive open source only. Every permissive alternative missed a hard requirement, such as writing while offline. That makes the sync engine the largest single risk in the project, with no ready-made fallback of equal fit.
The newer edit wins, field by field
Two people changing the same field while apart keep only the later change, and nobody is told. For lists I accept that loss, and a full CRDT was not worth its weight. A wrong clock can make a phone lose edits it should win, so the server rejects timestamps more than five minutes ahead.
No encryption on the phone
Encrypting the phone’s database would slow the development loop and add key management. A rooted or imaged phone could read the lists stored on it. Sign-in tokens stay in the phone’s secure storage either way.
Built with
- App
- Expo and React Native, for iPhone, with SQLite on the phone (Drizzle)
- Server
- Hono, PostgreSQL, Zod contracts, TypeScript
- Agents
- Claude is co-author on 89 of 89 commits outside merges, on 30 September 2026
- CI
- 101 of 102 runs green, on 30 September 2026