Like the project? Have too much money? Buy me a coffee or something! ☕️
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.
- 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)
- UI is not yet fully optimized for small screens
Pønskelisten is flexible to host. Choose your path:
| Method | Difficulty | Recommended for |
|---|---|---|
| Docker | ⭐ Easiest | Most users |
| Download executable | Easy | Desktop/server users |
| Build from source | Medium | Developers |
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.
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.
| 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 |
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/:rwRemove generateinvite after first run to stop generating codes on start up.
-
Reverse proxy (Caddy, Traefik, Nginx)
-
Adminer or phpMyAdmin (if you like UI DB tools, but not required anymore)
-
First registered user becomes admin
-
Additional invite codes can be created in the admin panel
-
If you lose access: restart with generateinvite=true
Requires Go installed:
go build
./poenskelistenAdd flags to configure:
./poenskelisten -port 9000 -dbtype postgres -generateinvite trueA Norwegian wordplay. “Ønskeliste” = wishlist, “pønske” = plot/plan. So… “The plotting list”.
Not at the moment.
Yes - improvements planned.
Contributions, issues and feature requests are welcome. Feel free to open a Pull Request or Issue.
If you enjoy using Pønskelisten and want to support development:
Buy me a coffee
