A mobile-first grocery list application with AI-powered categorization and real-time multi-user sharing for self-hosted deployment.
- Multiple Lists: Create and manage unlimited shopping lists
- AI-Powered Sorting: Automatically categorizes items with Claude AI (Produce, Dairy, Meat, Bakery, etc.)
- Visual Progress Bars: Track completion percentage for each category
- Share Lists: Generate passphrase-protected URLs to share lists with family
- Real-Time Sync: Collaborative editing with 2-second polling sync
- Mobile-First Design: Touch-optimized interface with custom modals
- Self-Hosted: Deploy on your own infrastructure with Docker
docker-compose up -dVisit http://localhost:3000
Prerequisites:
- Node.js 20 or higher
- An Anthropic API key (get one here)
Installation:
npm install
node server.jsVisit http://localhost:3000
For full deployment instructions, see DOCKER.md.
- Add Items: Type items and press Enter
- Check Off Items: Tap items to mark as done
- Sort with AI: Click "Magic Sort" to categorize (requires API key)
- Create Lists: Use the dropdown to create and switch between lists
- Click the share icon (network dots)
- Enter a custom passphrase or use auto-generated one
- Copy and share the URL with family members
- Both users can edit and sync in real-time
The app uses Claude AI to intelligently categorize your grocery items into sections like:
- 🥬 Produce (Fruits & Vegetables)
- 🥛 Dairy & Eggs
- 🥩 Meat & Seafood
- 🍞 Bakery
- 🥫 Pantry & Dry Goods
- 🧊 Frozen Foods
- 🥤 Beverages
- 🍪 Snacks
- 🧴 Personal Care
- 🧹 Household
listle/
├── index.html # Main HTML application
├── app.js # Frontend logic
├── styles.css # Responsive styles
├── server.js # Backend server
├── db.js # Database initialization
├── crypto.js # Encryption utilities
├── package.json # Node.js configuration
├── Dockerfile # Docker image definition
├── docker-compose.yml # Docker deployment config
├── .gitignore # Git ignore patterns
├── README.md # This file
├── PRD.md # Product requirements document
├── DOCKER.md # Deployment instructions
└── .sdlc/ # Development documentation (44 files)
├── testing/ # Test reports and scripts
├── implementation/ # Feature implementation docs
├── approval/ # PO approval documents
└── security/ # Security audit reports
Frontend:
- Vanilla JavaScript (no frameworks)
- Mobile-first CSS with custom modals
- localStorage for personal lists
Backend:
- Node.js 20 on Alpine Linux
- SQLite database for shared lists
- Anthropic Claude API (Haiku model)
Security:
- Passphrase-based sharing (no login required)
- AES-256-GCM API key encryption
- PBKDF2 key derivation (100k iterations)
- Rate limiting (10 sorts/hour per list)
- Local lists: Stored in browser localStorage, never leave your device
- Shared lists: Stored in SQLite database on your server
- API keys: Encrypted server-side, never exposed to clients
- No tracking: Self-hosted, no analytics or telemetry
- PRD.md - Complete product requirements and architecture
- DOCKER.md - Docker deployment guide with reverse proxy examples
- .sdlc/ - Development documentation and test reports
Local development:
npm install
node server.jsRun tests:
node .sdlc/testing/scripts/comprehensive-test.jsDocker build:
docker-compose build
docker-compose upThis is a personal project designed for homelab deployment. Feel free to fork and adapt for your own use.
Free to use and modify for personal projects.
Built with Claude AI | Product Requirements | Deployment Guide