https://github.com/aunefyren/poenskelisten
A self-hosted application for sharing wishlists and collaborating on gifts and presents.
https://github.com/aunefyren/poenskelisten
api application christmas docker go holidays planning presents self-hosting website wishlists
Last synced: 7 months ago
JSON representation
A self-hosted application for sharing wishlists and collaborating on gifts and presents.
- Host: GitHub
- URL: https://github.com/aunefyren/poenskelisten
- Owner: aunefyren
- Created: 2022-10-23T21:41:28.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2025-11-03T14:07:08.000Z (10 months ago)
- Last Synced: 2025-11-03T14:15:03.421Z (10 months ago)
- Topics: api, application, christmas, docker, go, holidays, planning, presents, self-hosting, website, wishlists
- Language: Go
- Homepage:
- Size: 4.03 MB
- Stars: 142
- Watchers: 5
- Forks: 8
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-selfhosted - Pønskelisten - Sharing wishlists and collaborating on gifts and presents. `GPL-3.0` `Docker/Go` (Software / Miscellaneous)
- fucking-awesome-selfhosted - Pønskelisten - Sharing wishlists and collaborating on gifts and presents. `GPL-3.0` `Docker/Go` (Software / Miscellaneous)
- awesome-selfhosted - Pønskelisten - Sharing wishlists and collaborating on gifts and presents. `GPL-3.0` `Docker/Go` (Software / Miscellaneous)
README
# Pønskelisten
[](https://github.com/aunefyren/poenskelisten)
[](https://github.com/aunefyren/poenskelisten)
[](https://hub.docker.com/r/aunefyren/poenskelisten)
[](https://github.com/aunefyren/poenskelisten/releases)
[](https://go.dev/dl/)
[](https://www.paypal.com/donate/?hosted_button_id=YRKMNM4S8VNBS)
Like the project? Have too much money? Buy me a coffee or something! ☕️
---
## What is Pønskelisten? 🎁
A self-hosted web app for creating, sharing and collaborating on wishlists - *without ruining the surprise*.
Share gift ideas, see which ones are already taken, and avoid the awkward “oh… you also bought that…” moment.
### Main Features
- Create wishlists and add wishes
- Collaborate with friends & family on the shared wishlists
- Create groups to share wishlists with multiple people
- Claim wishes anonymously (others see it's taken - owner does not)
### Known Limitations
- UI is not yet fully optimized for small screens

---
## 🚀 Installation
Pønskelisten is flexible to host. Choose your path:
### **Step 1: Choose how to run it**
| Method | Difficulty | Recommended for |
|--------|-------------|------------------|
| **Docker** | ⭐ Easiest | Most users |
| Download executable | Easy | Desktop/server users |
| Build from source | Medium | Developers |
### **Step 2: Choose your Database**
Pønskelisten currently supports:
| Database | Status |
|----------|--------|
| PostgreSQL | ✅ Fully supported |
| MySQL | ✅ Fully supported |
> **No direct DB management required anymore 🎉**
Pønskelisten handles setup on first run.
---
## 🧩 Configuration (Recommended: Environment Variables)
You can configure Pønskelisten in **three different ways**:
| Method | Ideal for | Notes |
|--------|------------|--------|
| **Environment variables** ✅ | Docker, production | Recommended |
| Startup flags | Local runs, executables | Overrides config.json |
| config.json | Manual configs | Pønskelisten generates one at first run |
All configuration keys are identical across methods.
---
### 📍 Available Configuration Options
| Key | Type | Description |
|-----|-------|--------------|
| port | int | Port to run on (default: `8080`) |
| externalurl | string | Public URL of the instance |
| timezone | string | E.g. `Europe/Oslo` |
| environment | string | `production` or `test` |
| name | string | Display name of the app |
| generateinvite | bool | Generate an invite code on startup |
| dbtype | string | `postgres` or `mysql` |
| dbip | string | DB host |
| dbport | int | DB port |
| dbusername | string | DB username |
| dbpassword | string | DB password |
| dbname | string | Database name |
| dbssl | bool | Use SSL for DB |
| disablesmtp | bool | Disable email functions |
| smtphost | string | SMTP host |
| smtpport | int | SMTP port |
| smtpusername | string | SMTP user |
| smtppassword | string | SMTP password |
| smtpfrom | string | Sender email address |
| smtpfrom | string | Sender email address |
| testemail | string | E-mail destination when in `test` |
---
## 🐳 Docker Setup
### **Minimal docker-compose.yml (recommended)**
```yaml
services:
db:
container_name: poenskelisten-db
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_DB: poenskelisten
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
volumes:
- ./db/:/var/lib/postgresql/data/:rw
poenskelisten-app:
container_name: poenskelisten-app
image: ghcr.io/aunefyren/poenskelisten:latest
restart: unless-stopped
ports:
- "8080:8080"
environment:
PUID: 1000
PGID: 1000
dbtype: postgres
dbip: db
dbport: 5432
dbname: poenskelisten
dbusername: myuser
dbpassword: mypassword
timezone: Europe/Oslo
generateinvite: true
depends_on:
- db
volumes:
- ./files/:/app/files/:rw
- ./images/:/app/images/:rw
```
Remove `generateinvite` after first run to stop generating codes on start up.
### Optional Add-ons
- Reverse proxy (Caddy, Traefik, Nginx)
- Adminer or phpMyAdmin (if you like UI DB tools, but not required anymore)
## 🔑 Admin Access
- First registered user becomes admin
- Additional invite codes can be created in the admin panel
- If you lose access: restart with generateinvite=true
## 🔧 Building from Source
Requires Go installed:
```bash
go build
./poenskelisten
```
Add flags to configure:
```bash
./poenskelisten -port 9000 -dbtype postgres -generateinvite true
```
## ❓ FAQ
### What does “Pønskelisten” mean?
A Norwegian wordplay. “Ønskeliste” = wishlist, “pønske” = plot/plan.
So… “The plotting list”.
### Is a demo available?
Not at the moment.
### Is mobile UI coming?
Yes - improvements planned.
## 🙌 Contributing
Contributions, issues and feature requests are welcome.
Feel free to open a Pull Request or Issue.
## ☕️ Donate
If you enjoy using Pønskelisten and want to support development:
[Buy me a coffee](https://www.paypal.com/donate/?hosted_button_id=YRKMNM4S8VNBS)