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.

Status on 3 November 2026
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