EasyShop
Household meal planner, shopping list and weekly-shop price comparison for the Ducksbury household.
Next.js 16 · Supabase · Vercel (Dublin region, next to the Supabase project in West EU / Ireland).
Phase 1 (this release)
- Sign-in for two household logins (Supabase Auth, sign-ups disabled)
- Household: portions, calorie and protein targets, slots skipped on office days
- Meal library: 32 meals from the 64 kg Tracker plus a meal builder; calories and macros per portion
- 3-week planner: office / home / weekend days, per-person meals, daily totals for everyone
Phase 2
- Shopping list per plan week: meal ingredients totalled for everyone, leftovers taken off, rounded to packs
- Store-cupboard regulars (every week / every 2 weeks) added automatically; anything typed in is saved to the cupboard
- "Have it" ticks, pack adjustments, tick-off mode for the shop, offline copy on the phone
- Alexa import: paste the list, check the matches, new items saved to the cupboard
- "What's still in?": leftovers record, updated when a week is marked as bought
Phase 3a
- Settings: weekly budget, warning level, delivery charge and minimum spend per store
- Prices: weekly comparison of Tesco (Clubcard), Sainsbury's, Morrisons and Ocado; multibuys; missing items estimated fairly
- Budget alert with help: cheaper swaps, extras that could wait, most expensive lines
- Products: approve the runner's suggested product at each store once
runner/: the Windows shop runner (Node + Playwright in Microsoft Edge) — see runner/README.md
Database setup
Run these in Supabase → SQL Editor, in order (both are safe to re-run):
supabase/migrations/0001_phase1_schema.sql — tables and row-level security
supabase/migrations/0002_seed.sql — household, ingredients, store cupboard, tracker meals
supabase/migrations/0003_phase2_lists.sql — shopping lists, leftovers, pack sizes, Alexa name matches
supabase/migrations/0004_phase3_prices.sql — store products, runner jobs, price checks, budget settings
0002_seed.sql is generated by python3 scripts/build_seed.py from data/tracker-meals.json.
Local development
cp .env.example .env.local
npm install
npm run dev