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:
@@ -4,6 +4,7 @@ import { authOptions } from '@/pages/api/auth/[...nextauth]'
|
||||
import { getUserProfile } from '@/lib/auth-actions'
|
||||
import ProfileForm from '@/components/ProfileForm'
|
||||
import PasswordChangeForm from '@/components/PasswordChangeForm'
|
||||
import NotificationSettings from '@/components/NotificationSettings'
|
||||
import Link from 'next/link'
|
||||
|
||||
export const metadata = {
|
||||
@@ -82,6 +83,11 @@ export default async function ProfilePage() {
|
||||
<PasswordChangeForm userId={userProfile.id} />
|
||||
</div>
|
||||
|
||||
{/* Notification Settings */}
|
||||
<div className="mb-6">
|
||||
<NotificationSettings />
|
||||
</div>
|
||||
|
||||
{/* Account Information */}
|
||||
<div className="bg-white rounded-xl shadow-md p-6 sm:p-8">
|
||||
<h2 className="text-xl sm:text-2xl font-semibold text-gray-900 mb-4">
|
||||
|
||||
Reference in New Issue
Block a user