Deploying Our Shopping List
Introduction
Our Shopping List is an open-source, self-hosted collaborative shopping list application that helps families and groups manage shared shopping lists. Built as a Progressive Web App (PWA), it works seamlessly on mobile devices while providing real-time synchronization across all connected users.
Unlike commercial shopping list apps that store your data on third-party servers, Our Shopping List gives you complete control over your shopping data. The application supports multiple lists, categories, real-time sync, and offline functionality, making it practical for everyday use at home and in stores.
Key highlights of Our Shopping List:
- Real-Time Sync: Changes sync instantly across all connected devices
- Multiple Lists: Create separate lists for different stores or purposes
- Categories: Organize items by category for efficient shopping
- Offline Support: Works without internet, syncs when connected
- PWA: Install as an app on mobile devices
- Share Lists: Invite family members to collaborate on lists
- Simple Interface: Clean, easy-to-use design
- No Account Required: Optional authentication for sharing
- Self-Hosted Privacy: Your shopping data stays on your server
- Lightweight: Minimal resource requirements
This guide walks through deploying Our Shopping List on Klutch.sh using Docker, setting up sharing, and configuring the application for family use.
Why Deploy Our Shopping List on Klutch.sh
Deploying Our Shopping List on Klutch.sh provides several advantages:
Simplified Deployment: Klutch.sh automatically builds and deploys your shopping list app. Push to GitHub, and your service deploys automatically.
Persistent Storage: Attach persistent volumes for database storage. Your shopping lists survive container restarts.
HTTPS by Default: Klutch.sh provides automatic SSL certificates, required for PWA installation and secure access.
Always-On Availability: Your shopping list is available 24/7 for the whole family.
GitHub Integration: Store configuration in Git for version-controlled infrastructure.
Custom Domains: Use a memorable domain for easy access on mobile devices.
Data Privacy: Keep your shopping habits private on your own infrastructure.
Prerequisites
Before deploying Our Shopping List on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your configuration
- Basic familiarity with Docker and containerization concepts
- Mobile devices for testing PWA installation
Understanding Our Shopping List Architecture
Our Shopping List has a simple architecture:
Node.js Backend: Handles API requests, real-time sync via WebSockets, and data persistence.
Vue.js Frontend: Progressive Web App providing the user interface, with offline capability via service workers.
SQLite/MongoDB Database: Stores lists, items, and user data.
WebSocket Server: Enables real-time synchronization between connected clients.
Preparing Your Repository
Create a GitHub repository containing your Dockerfile and configuration.
Repository Structure
shopping-list-deploy/├── Dockerfile├── .dockerignore└── README.mdCreating the Dockerfile
Create a Dockerfile for Our Shopping List:
FROM node:18-alpine
WORKDIR /app
# Install git for cloningRUN apk add --no-cache git
# Clone the repositoryRUN git clone https://github.com/nanawel/our-shopping-list.git .
# Install dependenciesRUN npm install
# Build the frontendRUN npm run build
# Environment configurationENV NODE_ENV=productionENV PORT=3000
# Expose the application portEXPOSE 3000
# Start the applicationCMD ["npm", "start"]Environment Variables Reference
| Variable | Default | Description |
|---|---|---|
PORT | 3000 | Server port |
NODE_ENV | production | Node environment |
DATABASE_PATH | /app/data | Path to database files |
JWT_SECRET | - | Secret for JWT tokens (if auth enabled) |
ENABLE_AUTH | false | Enable user authentication |
Deploying Our Shopping List on Klutch.sh
Follow these steps to deploy your shopping list app:
- Select HTTP as the traffic type
- Set the internal port to 3000
Push Your Repository to GitHub
Initialize and push your repository:
git initgit add Dockerfile .dockerignore README.mdgit commit -m "Initial Our Shopping List configuration"git remote add origin https://github.com/yourusername/shopping-list-deploy.gitgit push -u origin mainCreate a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project named “shopping-list” or “groceries”.
Create a New App
Within your project, create a new app. Connect your GitHub account and select the repository containing your Dockerfile.
Configure HTTP Traffic
In the deployment settings:
Set Environment Variables
Configure your shopping list instance:
| Variable | Value |
|---|---|
NODE_ENV | production |
PORT | 3000 |
Attach Persistent Volumes
Add persistent storage:
| Mount Path | Recommended Size | Purpose |
|---|---|---|
/app/data | 1 GB | Database and application data |
Deploy Your Application
Click Deploy to start the build process.
Access Our Shopping List
Once deployment completes, access your shopping list at https://your-app-name.klutch.sh.
Initial Setup
Creating Your First List
On first access:
- Navigate to your shopping list URL
- Click “Create New List” or the + button
- Name your list (e.g., “Groceries”, “Costco”)
- Start adding items
Adding Items
Add items to your list:
- Type the item name in the input field
- Press Enter or click Add
- Optionally specify quantity and category
- Items appear in the list immediately
Organizing by Category
Group items by category:
- Assign categories when adding items
- Categories group items together
- Custom categories can be created
- Helps navigate large lists efficiently
Sharing Lists
Generating Share Links
Share lists with family:
- Open the list you want to share
- Click the Share button
- Copy the generated link
- Send to family members
Joining Shared Lists
To join a shared list:
- Open the share link
- The list opens in your browser
- Install as PWA for easy access
- Changes sync in real-time
Real-Time Collaboration
When sharing lists:
- Items added by one person appear for everyone
- Checked-off items update in real-time
- Multiple people can edit simultaneously
- Changes persist when offline, sync when connected
PWA Installation
Installing on iPhone/iPad
- Open your shopping list in Safari
- Tap the Share button
- Select “Add to Home Screen”
- Name the app and tap Add
- Access from your home screen like a native app
Installing on Android
- Open your shopping list in Chrome
- Tap the menu (three dots)
- Select “Add to Home Screen” or “Install App”
- Follow the prompts
- Access from your home screen
Desktop Installation
- Open in Chrome or Edge
- Click the install icon in the address bar
- Confirm installation
- Access from your applications
Using the Shopping List
Shopping Workflow
Typical shopping workflow:
- At Home: Add items as you run out
- Before Shopping: Review and organize the list
- At the Store: Check off items as you shop
- After Shopping: Clear completed items
Checking Off Items
Mark items as purchased:
- Tap an item to check it off
- Item moves to completed section
- Unchecked items remain visible
- Clear all completed items when done
Editing Items
Modify existing items:
- Tap the edit button on an item
- Change name, quantity, or category
- Save changes
- Updates sync to all devices
Deleting Items
Remove items from the list:
- Swipe left on an item (mobile)
- Or click the delete button
- Item is removed from the list
- Removal syncs to all devices
Advanced Features
Multiple Lists
Manage different shopping needs:
- Grocery List: Regular weekly shopping
- Costco List: Bulk shopping items
- Hardware Store: Home improvement projects
- Party List: Event-specific shopping
Item Categories
Organize items by store section:
- Produce
- Dairy
- Meat
- Frozen
- Pantry
- Household
- Personal Care
Recurring Items
For items you buy regularly:
- Create a template list
- Copy items to your active list
- Modify quantities as needed
Authentication (Optional)
Enabling Authentication
For private lists:
- Set
ENABLE_AUTH=truein environment variables - Configure
JWT_SECRET - Restart the application
- Users must log in to access lists
User Registration
With authentication enabled:
- Users register with email/password
- Each user has private lists
- Sharing requires authentication
- Lists are protected from public access
Backup and Restore
Backing Up Data
Back up your shopping list data:
- Access the persistent volume
- Copy the database file
- Store in a secure location
Restoring Data
To restore from backup:
- Stop the application
- Replace the database file
- Restart the application
- Data is restored
Troubleshooting Common Issues
Sync Not Working
Symptoms: Changes not appearing on other devices.
Solutions:
- Check internet connectivity
- Verify WebSocket connections are allowed
- Try refreshing the page
- Check server logs for errors
PWA Not Installing
Symptoms: Install option not appearing.
Solutions:
- Ensure HTTPS is working (required for PWA)
- Try a different browser
- Clear browser cache
- Check service worker registration
Offline Mode Issues
Symptoms: App not working without internet.
Solutions:
- Ensure PWA is installed (not just bookmarked)
- Check service worker is registered
- Clear app cache and reinstall
- Verify offline support is enabled
Data Not Persisting
Symptoms: Lists disappear after restart.
Solutions:
- Verify persistent volume is mounted
- Check volume path matches database path
- Review application logs for database errors
- Ensure sufficient disk space
Additional Resources
- Our Shopping List GitHub Repository
- Our Shopping List Docker Image
- MDN: Progressive Web Apps
- Klutch.sh Persistent Volumes
- Klutch.sh Deployments
Conclusion
Deploying Our Shopping List on Klutch.sh provides a simple, private shopping list solution for your family. With real-time sync, offline support, and PWA installation, Our Shopping List works smoothly for everyday use.
The combination of persistent storage, reliable uptime, and HTTPS security makes Klutch.sh well-suited for hosting Our Shopping List. Your shopping data stays private on your infrastructure while remaining accessible from any device.
Install the PWA on your family’s devices and start collaborating on your shopping lists today.