A WhatsApp bot that turns your family group into a live, shared shopping list — with voice support, categories, and a web dashboard.
The bot connects to WhatsApp using your personal number, listens for messages in one specific group, and syncs a shared list to a cloud database — accessible from both WhatsApp and the web.
Get the code on your machine.
git clone https://github.com/shali-mor/shopping.git cd shopping npm install
The bot uses Supabase (free tier) as its database. Go to supabase.com, create a project, then run the schema in the SQL Editor.
-- Creates the shopping_items table with RLS CREATE TABLE shopping_items ( ... ); -- Also run migration files: -- supabase/migration_add_done_at.sql -- supabase/migration_add_history.sql
Groq provides free Whisper transcription for voice messages. Sign up at console.groq.com and create an API key.
Free · no credit card needed.env fileCopy .env.example to .env and fill in your credentials.
# From Supabase → Project Settings → API SUPABASE_URL=https://xxxx.supabase.co SUPABASE_ANON_KEY=eyJ... # From Groq console GROQ_API_KEY=gsk_... # Optional display name BOT_NAME=Family Shopping Bot # Filled in step 6 below ALLOWED_GROUP_ID= WEB_PORT=3001
Run the dev server. On first launch a QR code appears in the terminal. Scan it with WhatsApp (Linked Devices → Link a Device) to authenticate. The session is saved — you only scan once.
npm run dev # → QR code appears in terminal # → Also saved as qr.png if hard to scan
With ALLOWED_GROUP_ID left empty, the bot runs in discovery mode: it prints the group ID and sender ID of every message to the terminal without responding. Send a message from your family group, then copy the Group ID shown.
🔍 DISCOVERY MODE Group ID : 120363423180798897@g.us Sender : 972501234567@c.us Message : שלום
Paste the Group ID into .env, save, and the bot restarts automatically (nodemon watches .env).
ALLOWED_GROUP_ID=120363423180798897@g.us,24167915200514@lid # Both @g.us and @lid formats for same group
The Express server starts alongside the bot. Open your browser to see the live shopping list and history — synced with WhatsApp in real time.
http://localhost:3001
All commands work in Hebrew or English, by text or voice message.
Add an item — just type it (1–3 words auto-add)
Add with quantity (prefix number or *N suffix)
Show the full list grouped by category
Mark an item as purchased by number or name
Mark multiple items done at once
Remove an item from the list
End of trip — clears done items, shows summary
Wipe the entire list and start fresh
Show all available commands
Say any command or item name — transcribed automatically