feat: implement complete web push notification system
- Add self-hosted push notifications using VAPID (no external services) - Create PushSubscription model in database - Implement server-side push logic with web-push library - Add notification helpers for list events (items, invitations, collaborators) - Create NotificationSettings UI component for profile page - Add usePushNotifications React hook for subscription management - Create API routes for subscription management and VAPID key - Update service worker with push event handlers - Integrate notifications into item actions (add, remove, complete) - Integrate notifications into sharing actions (invite, accept, remove) - Add VAPID key generation script - Add comprehensive documentation and setup guides Notifications are sent when: - Items are added/removed/completed in shared lists - Users are invited to lists - Invitations are accepted - Collaborators are removed from lists Works on iOS 16.4+ (when installed to home screen), Android, and desktop browsers.
This commit is contained in:
20
scripts/generate-vapid-keys.js
Normal file
20
scripts/generate-vapid-keys.js
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* Generate VAPID keys for Web Push notifications
|
||||
* Run: node scripts/generate-vapid-keys.js
|
||||
*/
|
||||
|
||||
const webpush = require('web-push');
|
||||
|
||||
console.log('Generating VAPID keys for Web Push notifications...\n');
|
||||
|
||||
const vapidKeys = webpush.generateVAPIDKeys();
|
||||
|
||||
console.log('✓ VAPID keys generated successfully!\n');
|
||||
console.log('Add these to your .env file:\n');
|
||||
console.log('# Web Push Notifications (VAPID)');
|
||||
console.log(`VAPID_PUBLIC_KEY=${vapidKeys.publicKey}`);
|
||||
console.log(`VAPID_PRIVATE_KEY=${vapidKeys.privateKey}`);
|
||||
console.log('VAPID_SUBJECT=mailto:your-email@example.com');
|
||||
console.log('\n⚠️ Keep the private key secret! Do not commit it to version control.\n');
|
||||
Reference in New Issue
Block a user