- 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.
21 lines
702 B
JavaScript
21 lines
702 B
JavaScript
#!/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');
|