{"id":13621269,"url":"https://github.com/aunefyren/poenskelisten","last_synced_at":"2026-01-14T14:58:42.387Z","repository":{"id":63526448,"uuid":"556447250","full_name":"aunefyren/poenskelisten","owner":"aunefyren","description":"A self-hosted application for sharing wishlists and collaborating on gifts and presents.","archived":false,"fork":false,"pushed_at":"2025-11-03T14:07:08.000Z","size":4228,"stargazers_count":142,"open_issues_count":8,"forks_count":8,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-11-03T14:15:03.421Z","etag":null,"topics":["api","application","christmas","docker","go","holidays","planning","presents","self-hosting","website","wishlists"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aunefyren.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-10-23T21:41:28.000Z","updated_at":"2025-11-03T14:07:12.000Z","dependencies_parsed_at":"2023-02-19T16:16:15.891Z","dependency_job_id":"a879738d-f5bf-456b-8cab-beb002f03d8a","html_url":"https://github.com/aunefyren/poenskelisten","commit_stats":{"total_commits":180,"total_committers":4,"mean_commits":45.0,"dds":"0.15555555555555556","last_synced_commit":"21bde38c9d3b831680cabd2c22231c8939d0133c"},"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/aunefyren/poenskelisten","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aunefyren%2Fpoenskelisten","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aunefyren%2Fpoenskelisten/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aunefyren%2Fpoenskelisten/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aunefyren%2Fpoenskelisten/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aunefyren","download_url":"https://codeload.github.com/aunefyren/poenskelisten/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aunefyren%2Fpoenskelisten/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28424029,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T13:30:50.153Z","status":"ssl_error","status_checked_at":"2026-01-14T13:29:08.907Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","application","christmas","docker","go","holidays","planning","presents","self-hosting","website","wishlists"],"created_at":"2024-08-01T21:01:04.147Z","updated_at":"2026-01-14T14:58:42.379Z","avatar_url":"https://github.com/aunefyren.png","language":"Go","funding_links":["https://www.paypal.com/donate/?hosted_button_id=YRKMNM4S8VNBS"],"categories":["Software","Go"],"sub_categories":["Miscellaneous"],"readme":"# Pønskelisten\n\n[![Github Stars](https://img.shields.io/github/stars/aunefyren/poenskelisten?style=for-the-badge)](https://github.com/aunefyren/poenskelisten)\n[![Github Forks](https://img.shields.io/github/forks/aunefyren/poenskelisten?style=for-the-badge)](https://github.com/aunefyren/poenskelisten)\n[![Docker Pulls](https://img.shields.io/docker/pulls/aunefyren/poenskelisten?style=for-the-badge)](https://hub.docker.com/r/aunefyren/poenskelisten)\n[![Newest Release](https://img.shields.io/github/v/release/aunefyren/poenskelisten?style=for-the-badge)](https://github.com/aunefyren/poenskelisten/releases)\n[![Go Version](https://img.shields.io/github/go-mod/go-version/aunefyren/poenskelisten?style=for-the-badge)](https://go.dev/dl/)\n\n\u003cbr\u003e\n\n[![Donate](https://img.shields.io/badge/PayPal-Buy%20me%20coffee-blue?style=for-the-badge)](https://www.paypal.com/donate/?hosted_button_id=YRKMNM4S8VNBS)\n\nLike the project? Have too much money? Buy me a coffee or something! ☕️\n\n---\n\n## What is Pønskelisten? 🎁\n\nA self-hosted web app for creating, sharing and collaborating on wishlists - *without ruining the surprise*.  \nShare gift ideas, see which ones are already taken, and avoid the awkward “oh… you also bought that…” moment.\n\n### Main Features\n- Create wishlists and add wishes\n- Collaborate with friends \u0026 family on the shared wishlists\n- Create groups to share wishlists with multiple people\n- Claim wishes anonymously (others see it's taken - owner does not)\n\n### Known Limitations\n- UI is not yet fully optimized for small screens\n\n\u003cbr\u003e\n\n![Wishlists screenshot](https://raw.githubusercontent.com/aunefyren/poenskelisten/main/.github/assets/wishlists.jpg?raw=true)\n\n\u003cbr\u003e\n\n---\n\n## 🚀 Installation\n\nPønskelisten is flexible to host. Choose your path:\n\n### **Step 1: Choose how to run it**\n\n| Method | Difficulty | Recommended for |\n|--------|-------------|------------------|\n| **Docker** | ⭐ Easiest | Most users |\n| Download executable | Easy | Desktop/server users |\n| Build from source | Medium | Developers |\n\n### **Step 2: Choose your Database**\n\nPønskelisten currently supports:\n\n| Database | Status |\n|----------|--------|\n| PostgreSQL | ✅ Fully supported |\n| MySQL | ✅ Fully supported |\n\n\u003e **No direct DB management required anymore 🎉**  \nPønskelisten handles setup on first run.\n\n---\n\n## 🧩 Configuration (Recommended: Environment Variables)\n\nYou can configure Pønskelisten in **three different ways**:\n\n| Method | Ideal for | Notes |\n|--------|------------|--------|\n| **Environment variables** ✅ | Docker, production | Recommended |\n| Startup flags | Local runs, executables | Overrides config.json |\n| config.json | Manual configs | Pønskelisten generates one at first run |\n\nAll configuration keys are identical across methods.\n\n---\n\n### 📍 Available Configuration Options\n\n| Key | Type | Description |\n|-----|-------|--------------|\n| port | int | Port to run on (default: `8080`) |\n| externalurl | string | Public URL of the instance |\n| timezone | string | E.g. `Europe/Oslo` |\n| environment | string | `production` or `test` |\n| name | string | Display name of the app |\n| generateinvite | bool | Generate an invite code on startup |\n| dbtype | string | `postgres` or `mysql` |\n| dbip | string | DB host |\n| dbport | int | DB port |\n| dbusername | string | DB username |\n| dbpassword | string | DB password |\n| dbname | string | Database name |\n| dbssl | bool | Use SSL for DB |\n| disablesmtp | bool | Disable email functions |\n| smtphost | string | SMTP host |\n| smtpport | int | SMTP port |\n| smtpusername | string | SMTP user |\n| smtppassword | string | SMTP password |\n| smtpfrom | string | Sender email address |\n| smtpfrom | string | Sender email address |\n| testemail | string | E-mail destination when in `test` |\n---\n\n## 🐳 Docker Setup\n\n### **Minimal docker-compose.yml (recommended)**\n\n```yaml\nservices:\n  db:\n    container_name: poenskelisten-db\n    image: postgres:16\n    restart: unless-stopped\n    environment:\n      POSTGRES_DB: poenskelisten\n      POSTGRES_USER: myuser\n      POSTGRES_PASSWORD: mypassword\n    volumes:\n      - ./db/:/var/lib/postgresql/data/:rw\n\n  poenskelisten-app:\n    container_name: poenskelisten-app\n    image: ghcr.io/aunefyren/poenskelisten:latest\n    restart: unless-stopped\n    ports:\n      - \"8080:8080\"\n    environment:\n      PUID: 1000\n      PGID: 1000\n      dbtype: postgres\n      dbip: db\n      dbport: 5432\n      dbname: poenskelisten\n      dbusername: myuser\n      dbpassword: mypassword\n      timezone: Europe/Oslo\n      generateinvite: true\n    depends_on:\n      - db\n    volumes:\n      - ./files/:/app/files/:rw\n      - ./images/:/app/images/:rw\n```\nRemove `generateinvite` after first run to stop generating codes on start up.\n\n### Optional Add-ons\n\n- Reverse proxy (Caddy, Traefik, Nginx)\n\n- Adminer or phpMyAdmin (if you like UI DB tools, but not required anymore)\n\n## 🔑 Admin Access\n\n- First registered user becomes admin\n\n- Additional invite codes can be created in the admin panel\n\n- If you lose access: restart with generateinvite=true\n\n## 🔧 Building from Source\n\nRequires Go installed:\n```bash\ngo build\n./poenskelisten\n```\n\nAdd flags to configure:\n```bash\n./poenskelisten -port 9000 -dbtype postgres -generateinvite true\n```\n\n## ❓ FAQ\n\n### What does “Pønskelisten” mean?\nA Norwegian wordplay. “Ønskeliste” = wishlist, “pønske” = plot/plan.\nSo… “The plotting list”.\n\n### Is a demo available?\nNot at the moment.\n\n### Is mobile UI coming?\nYes - improvements planned.\n\n## 🙌 Contributing\n\nContributions, issues and feature requests are welcome.\nFeel free to open a Pull Request or Issue.\n\n## ☕️ Donate\n\nIf you enjoy using Pønskelisten and want to support development:\u003cbr\u003e\n[Buy me a coffee](https://www.paypal.com/donate/?hosted_button_id=YRKMNM4S8VNBS)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faunefyren%2Fpoenskelisten","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faunefyren%2Fpoenskelisten","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faunefyren%2Fpoenskelisten/lists"}