A simple, self-hostable wishlist application designed for new parents to share gift ideas with family and friends. Built with Flask and designed for easy Docker deployment.
OpenBabyWisher is a lightweight web application that helps expecting or new parents create and manage a wishlist for their baby. Family and friends can view the wishlist and anonymously indicate when they plan to purchase an item, helping avoid duplicate gifts while maintaining the surprise element.
This project was created to solve a common problem for new parents:
Create a directory for your wishlist:
mkdir openbabywisher
cd openbabywisher
Find your user ID (important for file permissions):
id -u # Note this number (usually 1000 or 1001)
id -g # Note this number (usually same as user ID)
Create a docker-compose.yml file:
services:
openbabywisher:
image: ntwritecode/openbabywisher:latest
container_name: openbabywisher
# IMPORTANT: Replace with YOUR user ID from step 2
# This ensures the container can write to ./data and ./uploads
user: "1001:1001" # Change to match your 'id -u' and 'id -g' output
ports:
- "5000:5000"
environment:
- SECRET_KEY=your-very-secret-key-change-this
- API_TOKEN=your-admin-token-change-this
- BABY_NAME=Emma
- DATABASE_URL=sqlite:////app/data/wishlist.db
- PORT=5000
- NOTIFICATION_URL= # Optional: Add Shoutrrr URL for notifications
volumes:
- ./data:/app/data:rw
- ./uploads:/app/uploads:rw
restart: unless-stopped
Start the application:
docker-compose up -d
Access your wishlist:
# Create data directories
mkdir -p data uploads
# Run the container
docker run -d \
--name openbabywisher \
-p 5000:5000 \
-v $(pwd)/data:/app/data \
-v $(pwd)/uploads:/app/uploads \
-e SECRET_KEY="your-very-secret-key-change-this" \
-e API_TOKEN="your-admin-token-change-this" \
-e BABY_NAME="Emma" \
ntwritecode/openbabywisher:latest
All configuration is done through environment variables:
| Variable | Description | Default | Required |
|---|---|---|---|
SECRET_KEY | Flask secret key for sessions and security | your-secret-key-change-this | Yes |
API_TOKEN | Admin authentication token for management | your-admin-token-change-this | Yes |
BABY_NAME | Your baby's name for personalized titles | our little one | No |
DATABASE_URL | Database connection string | sqlite:///data/wishlist.db | No |
PORT | Port the application runs on | 5000 | No |
β οΈ Change the default values! Always set strong, unique values for SECRET_KEY and API_TOKEN in production.
Set the BABY_NAME environment variable to personalize your wishlist with your baby's name. The app will automatically generate cute variations like:
The title rotates randomly each time the page loads and when switching languages, keeping the experience fresh and delightful!
OpenBabyWisher supports notifications via Shoutrrr when someone indicates they want to buy an item. This helps you stay informed about gift purchases in real-time.
Configure notification URL(s) (Shoutrrr is automatically installed in Docker):
# Discord webhook
export NOTIFICATION_URL="discord://webhook_id/webhook_token"
# Slack webhook
export NOTIFICATION_URL="slack://webhook_url"
# Email (SMTP)
export NOTIFICATION_URL="smtp://user:pass@host:port/[email protected]&[email protected]"
# Multiple services (use NOTIFICATION_URL_1, NOTIFICATION_URL_2, etc.)
export NOTIFICATION_URL_1="discord://webhook_id/webhook_token"
export NOTIFICATION_URL_2="slack://webhook_url"
Test notifications from the admin panel using the "Test" button.
Shoutrrr supports 70+ notification services including Discord, Slack, Telegram, email, Teams, and many more. See the Shoutrrr documentationβ for complete URL format examples.
OpenBabyWisher uses SQLite by default, which is perfect for personal/family use:
data/wishlist.db fileThe database file is stored in the data/ directory, which should be mounted as a volume to persist data between container restarts.
Images are stored in the uploads/ directory:
OpenBabyWisher is designed for family use and includes basic security measures, but it's not bulletproof:
To run locally for development:
# Clone the repository
git clone https://github.com/NtWriteCode/OpenBabyWisher.git
cd OpenBabyWisher
# Create virtual environment
python -m venv venv
source venv/bin/activate # Linux/Mac
# or venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txt
# Set environment variables
export SECRET_KEY="dev-secret-key"
export API_TOKEN="dev-admin-token"
# Run the application
python app.py
This project is licensed under the MIT License - see below for details:
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
If you encounter issues:
data and uploads directories exist and are writabledocker logs openbabywisherMade with β€οΈ for families everywhere! πΆβ¨
Content type
Image
Digest
sha256:1cca1e75fβ¦
Size
144.8 MB
Last updated
5 months ago
docker pull ntwritecode/openbabywisher