blueberry
I didn't like the grocery apps I tried, so I built one that works the way I like. A shared list for a household — installed like an app, synced between phones, sorted in the order you walk the store.
Every item is its own database row with targeted updates, so one person checking something off doesn't overwrite an item the other just added. The UI updates optimistically and reconciles against the server on the next poll. Both phones see the same state, syncing every few seconds and on focus.
Item order stays stable while you shop — checking something off mutes it in place rather than reshuffling the list. Sessions are built to not expire mid-shop: one passphrase per phone, then a cookie that rolls forward on every real app open.
- Recipe import — paste an ingredient list or a URL; ingredients are parsed into sections and reviewed before anything is added
- Quantity handling that combines duplicates (½ cup + ½ cup → 1 cup) and shows ambiguous amounts as-is instead of guessing
- Purchase-unit picker that turns recipe amounts into what you buy — “2 tbsp chipotle in adobo” becomes a 7 oz can
- Availability dots for your store, via the Kroger API
- Weekly meal plan exposed as an iCal feed — ours shows up on a Skylight calendar
- Saved recipes, favorites, and a trash with recovery
- iOS Shortcut for sending a recipe from any app's share sheet
Sourcegithub.com/kevinsundstrom/blueberry · MIT
StackNext.js · Neon Postgres · Vercel — no webfonts, small bundle, fast on store cellular
FormInstallable PWA — manifest, service worker, offline banner
Tests40 tests run the real route handlers against an in-process Postgres
StatusOpen source · in daily household use · release notes on the changelog