Skip to content

A simple, self-hosted wishlist app for sharing gift ideas with family and friends.

License

Notifications You must be signed in to change notification settings

Reggio-Digital/wishlist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wishlist

Docker Hub License

A simple, self-hosted wishlist app for sharing gift ideas with family and friends.

Why This App?

Most wishlist apps are bloated with features you don't need, require accounts for everyone, or lock you into a platform. This app solves a simple problem: you want to share what you'd like as gifts, and your friends and family want to claim items without spoiling the surprise.

Features:

  • Simple - No complex features, just wishlists and items
  • Easy to Share - Send a single URL, no signups required
  • Multiple Purchase Links - Add multiple store links for each item so people can choose where to buy
  • Public/Private Wishlists - Keep lists private while you're working on them, then make them public when ready
  • No Peeking! - Admins can't see claimed items from the dashboard - you'd have to visit the specific wishlist's public URL to spoil the surprise
  • Privacy-Focused - Self-hosted, your data stays with you
  • Transparent - Anyone viewing the list can see what's been claimed to avoid duplicates
  • Low Maintenance - Single Docker container with SQLite, no database setup needed
  • URL Scraping - Auto-fill item details from product URLs (Coming Soon)

Demo

Demo Video

Screenshots

Homepage

Homepage

Wishlist View

Wishlist View

Admin Dashboard

Admin Dashboard

Admin Dashboard - Item Details

Admin Dashboard - Item Details

Quick Start

Using Docker Compose

# Clone and configure
git clone https://github.com/Reggio-Digital/wishlist
cd wishlist
cp .env.example .env

# Edit .env with your admin credentials
nano .env

# Start with Docker Compose
docker-compose up -d

Visit http://localhost:3000

Using Docker Image

docker run -d \
  -p 3000:3000 \
  -e PUID=1000 \
  -e PGID=1000 \
  -e ADMIN_USERNAME=admin \
  -e ADMIN_PASSWORD=your-secure-password \
  -v wishlist-data:/app/data \
  --name wishlist \
  reggiodigital/wishlist:latest

For Unraid users: Set -e PUID=99 -e PGID=100

Data Storage

Data is stored in /app/data:

  • /app/data/db - SQLite database files
  • /app/data/uploads - Uploaded images

Environment Variables

Create a .env file:

# Required - Admin Credentials
ADMIN_USERNAME=admin
ADMIN_PASSWORD=changeme

# Optional - User/Group IDs for docker-compose (defaults to 1000:1000)
# For Unraid, use PUID=99 and PGID=100
PUID=1000
PGID=1000

# Optional - JWT Secret (auto-generated if not provided)
# Generate with: openssl rand -base64 32
SECRET=

# Optional - Cookie Security
# Set to 'false' for HTTP access (e.g., local LAN without HTTPS)
# When unset, auto-detects HTTPS via X-Forwarded-Proto header
COOKIE_SECURE=false

User Permissions (PUID/PGID)

The container automatically handles file permissions using PUID/PGID environment variables (LinuxServer.io pattern):

  • Default: 1000:1000 (standard Linux user)
  • Unraid: Set PUID=99 and PGID=100 (nobody:users)
  • Find your IDs: Run id on your system

Example for Unraid in .env:

PUID=99
PGID=100

The entrypoint script automatically:

  • Creates the user/group if needed
  • Sets correct ownership on data directories
  • Ensures proper file permissions for uploads

Development

# Install dependencies
npm install

# Run development server
npm run dev

# Build for production
npm run build

# Start production server
npm start

Pages

  • /admin/login - Admin authentication
  • /admin - Admin dashboard (manage wishlists and items)
  • /[slug] - Public wishlist view

License

MIT


Made with ❤️ by Reggio Digital

About

A simple, self-hosted wishlist app for sharing gift ideas with family and friends.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages