Pantry: one shopping list for the whole household, on every device
- What
- A shared household list app for the web, phone, watch, and voice
- Status
- Live
Pantry is a shared list app for a household. Add an item from anywhere, on the website, in the phone app, from a home-screen widget, on a watch, or by saying it to the Amazon Echo in the kitchen, and it shows up on everyone’s phone, watch, and computer, sorted into the right list.
It began as a small experiment, a home-made phone widget that showed our Alexa shopping list. It grew into a complete product that I designed and developed: its own service, a web app, phone and watch apps, and connections to the rest of our home.


Add from anywhere, see it everywhere
- The web appAdd items and manage everything here: drag-and-drop ordering, actions on several items at once, photos on items, and custom kinds of lists.
- Phone and watchAn Android app, a home-screen widget for adding items and checking them off, and a Wear OS watch app with quick-add from the watch face.
- A browser extensionThe list in a toolbar popup, for adding something the moment it comes to mind, in Chrome-based browsers and Firefox.
- Voice, through AlexaOne more way in: items added by voice on an Echo are picked up and filed in Pantry. A whole list, or a single store within it, can be linked to its own Alexa list.
- The smart homeA Home Assistant integration presents each list as a to-do list, so the home’s dashboards and automations can read and change it.
- AI assistantsEach list can issue a private link that lets an AI assistant read it and update it, so “add milk” works there too.
How the lists work
Items are grouped by store. Checking one off moves it to a history, where it can be restored the next time we need it. Every change reaches every device as it happens, with no refresh.
Family members join the household with an invite code. Lists are shared by default, and any list can be made private.

The hard part: getting items out of Alexa
Alexa’s lists were not made to be shared with other apps, so Pantry treats each linked Alexa list as an inbox. About once a minute it checks the list, copies anything new into Pantry, and clears it from Alexa. If a step fails partway, duplicate detection keeps the item from appearing twice.
For the technically minded: one service in Python on PostgreSQL serves every client through a single interface and pushes changes to them live. The web app and extension are React and TypeScript, and the phone and watch apps are Kotlin.
