MySQL cannot create unique constraints on TEXT fields without length.
Changed endpoint from @db.Text to @db.VarChar(512) to fix Prisma generation error.
- 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.
- Add User model with email, passwordHash, and name fields
- Add Collaborator model for list sharing with permission levels
- Add Invitation model for sharing invitations with status tracking
- Add ownerId field to List model with cascade deletion
- Add necessary indexes for performance optimization
- Implements Requirements 1.1, 4.1, 5.1