SMF·ANYLIST-COMPLETE
Can a prompt replace AnyList Complete?
Home & family — shared grocery lists
Exhibit tracking slip
Verdict
A shared list looks trivial and is not, because the requirement is not "a list" — it is two phones in a supermarket, one with no signal, both crossing items off, and neither of them losing an item. That is real-time sync with offline conflict handling, which CONTRIBUTING names as a `kinda` gap for good reason. The rest of AnyList — recipes, meal plans, categorised aisles — genuinely is a weekend.
Exhibit A — The prompt
Received on31.07.2026Build a shared household shopping list as an offline-first web app, and treat the sync as the feature rather than the plumbing.
The data model is a list of items, each with a name, a quantity, a category and a checked flag. What makes it work is how updates merge. Give every item a stable id generated on the client and store per-field last-write-wins timestamps; represent a deletion as a tombstone with a timestamp rather than a removed row. Two people crossing off different items offline must merge cleanly, and the same item crossed off twice must stay crossed off rather than flapping.
Write that as a test before writing the UI: two clients, both offline, one adds and checks items while the other deletes and re-adds, then both reconnect. Assert the final state on both. This is the whole engineering content of the project.
Categories come from a local mapping file — item name to aisle — that you extend as you shop, so the list sorts into supermarket order. Ship it with a starter mapping of a few hundred common items and let unknown items land in "other" rather than guessing.
Add recipes: a recipe is a name and a list of ingredients with quantities; adding a recipe to the list merges its ingredients, summing quantities where units match and listing them separately where they do not.
Run it as a progressive web app with a service worker so it opens and works in a shop basement, and put it behind a shared login simple enough that someone who does not care about any of this can use it.
Do not build a barcode-scanning pantry inventory in the same project. Tracking what you already have is a different discipline with a much higher abandonment rate, and bolting it on is how a working list app becomes an unused one.
Opening prefills the prompt — press enter to run it.
Exhibit B — What you lose
- B.1 sync that survives two people editing offline at once
- B.2 the iOS and Android apps, plus Watch and Siri support
- B.3 the item catalogue that already knows which aisle mustard belongs in
- B.4 sharing that works when the other person is not technical
- B.5 recipe web import maintained against sites that keep changing
Prior art
- GrocyLicense: MIT
Exhibit C — Why people still pay: real-time sync and household adoption
Ten dollars a year, and the other people in your house will actually use it — which is the only requirement a shared shopping list has.
Questions
Can I import my AnyList data?
Partly. AnyList exports recipes in a structured format that maps cleanly onto a recipe table. Lists themselves are transient and not worth migrating — you will have a new one by Thursday.
Will the rest of my household actually use it?
That is the real question, and the honest answer is that a self-hosted URL behind a login is a harder sell than an app store install. Build for the phone browser, add it to their home screen for them, and expect one conversation about why the app icon is a bookmark.
What does it cost to run?
A few dollars a month for a small always-on host, which is more than the ten dollars a year AnyList charges. This one is not a money-saving rebuild; it is an ownership one.
What is the one thing that does not survive the rebuild?
Being trusted by everyone in the house. AnyList works the first time on every phone, and a shared list that one person refuses to open is not a shared list.
Related tools
Receipt