A mobile-first PWA shopping list for Sam's Club with live price tracking, store-layout-aware item ordering, and budget management.
npm install- Go to supabase.com and create a new project
- Open the SQL Editor in your Supabase dashboard
- Paste and run the contents of
supabase/schema.sql - This creates all tables and seeds the default store layout
cp .env.example .env.localEdit .env.local and fill in your Supabase credentials:
VITE_SUPABASE_URL=https://xxxxxxxxxxxx.supabase.co
VITE_SUPABASE_ANON_KEY=eyJhbGci...
Find these in your Supabase project: Settings → API
npm run devApp runs at http://localhost:5173
- Push this repo to GitHub
- Go to vercel.com and import the repo
- Add environment variables in Vercel project settings:
VITE_SUPABASE_URLVITE_SUPABASE_ANON_KEY
- Deploy — Vercel auto-builds on every push to
main
iPhone (Safari required):
- Open your Vercel URL in Safari
- Tap the Share icon
- Tap "Add to Home Screen"
Android (Chrome):
- Open your Vercel URL in Chrome
- Tap the three-dot menu
- Tap "Add to Home Screen"
| Phase | Description | Status |
|---|---|---|
| 0 | API Investigation | ✅ Complete |
| 1 | Foundation — list CRUD, checkboxes, Supabase | ✅ Complete |
| 2 | Budget, Master List, Store Layout, Add Item UI | ✅ Complete |
| 3 | Search & Price Automation (__NEXT_DATA__ scraping) |
🔲 Next |
| 4 | PWA install, offline, polish | 🔲 Pending |
| 5 | Trip History | 🔲 Pending |
Before implementing api/search-items.js and api/fetch-price.js:
- Open
samsclub.comin Chrome with DevTools → Network tab - Search for a product, inspect
__NEXT_DATA__in the page source - Document the JSON path to: name, price, thumbnail, category breadcrumbs
- Repeat for a product page — find the price field path
- Record findings and update the
api/functions accordingly
See NOTES.md for full Phase 3 action items.
- React + Vite — frontend framework
- Tailwind CSS — styling
- Supabase — database + real-time sync
- Vercel — hosting + serverless functions
- @dnd-kit — drag-to-reorder store layout
- react-router-dom — client-side routing