7cda58440f761ae951a8587584e3a565b6e64037
- 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.
Ultimate Lists App
A powerful, self-hosted todo list application built with Next.js that works as a Progressive Web App (PWA).
Features
- 📱 Works as a Safari web app (no App Store needed)
- 🗄️ Self-hosted with SQLite database
- ✅ Multiple lists with custom colors
- 📋 Rich todo items with descriptions, priorities, and due dates
- 🎨 Clean, responsive design
- ⚡ Fast server-side rendering
Getting Started
- Install dependencies:
npm install
- Set up the database:
npm run db:push
- Run the development server:
npm run dev
- Open http://localhost:3000 in Safari
Adding to Home Screen (Safari)
- Open the app in Safari
- Tap the Share button
- Select "Add to Home Screen"
- The app will now work like a native app!
Deployment
Build for production:
npm run build
npm start
The app uses SQLite, so no external database setup is required.
Tech Stack
- Next.js 14 - React framework with App Router
- Prisma - Database ORM
- SQLite - File-based database
- Tailwind CSS - Styling
- TypeScript - Type safety
- Lucide React - Icons
Description
Languages
TypeScript
93.4%
JavaScript
4.4%
HTML
1.5%
CSS
0.6%