# Setup Push Notifications - Required Steps ## You MUST do these 3 steps for notifications to work: ### Step 1: Install the web-push package ```bash npm install ``` This installs the `web-push` package that was added to package.json. ### Step 2: Generate VAPID keys ```bash npm run vapid:generate ``` This will output something like: ``` VAPID_PUBLIC_KEY=BNxxx... VAPID_PRIVATE_KEY=xxx... VAPID_SUBJECT=mailto:your-email@example.com ``` **Copy these 3 lines and add them to your `.env` file.** ⚠️ **Important**: Keep the VAPID_PRIVATE_KEY secret! Don't commit it to git. ### Step 3: Update your database ```bash npx prisma db push ``` This adds the `PushSubscription` table to your database. ### Step 4: Restart your server ```bash npm run dev ``` ## That's it! Now when users open your app: - After 3 seconds, they'll see a notification prompt at the bottom-right - They can click "Enable Notifications" to subscribe - Or they can dismiss it and enable later from their profile page ## What happens automatically: ✅ Notification prompt appears 3 seconds after app loads ✅ Only shows if user hasn't been asked before ✅ Users can dismiss temporarily ("Later") or permanently ("Don't ask again") ✅ Notifications are sent when: - Items are added/removed/completed in shared lists - Users are invited to lists - Invitations are accepted - Collaborators are removed ## Testing 1. Open your app in Chrome 2. Wait 3 seconds 3. Click "Enable Notifications" when the prompt appears 4. Open another browser/incognito window 5. Log in as a different user 6. Add an item to a shared list 7. See the notification in the first browser! ## Troubleshooting **"Push notifications not configured" error** - Make sure you ran `npm run vapid:generate` - Make sure you added the keys to `.env` - Restart your dev server **Prompt doesn't appear** - Check browser console for errors - Make sure you're on localhost or HTTPS - Clear localStorage and refresh if you dismissed it permanently **Notifications don't send** - Check server console for errors - Verify VAPID keys are correct in `.env` - Make sure database was updated with `npx prisma db push`