Wish lists, gathered together

Create a list, share the link — friends open the page and reserve gifts while you are still baking the cake. No guest accounts needed; you need a server with port 8080.

  1. Collect the list

    Add wishes by hand or by URL — title, price and image are pulled in automatically, no copy-paste.

  2. Share the link

    A public /s/… page — no sign-up, no clutter, and it looks good on a phone.

  3. Friends reserve

    A guest claims a gift with their name — nobody buys it twice. The counter updates live, you see what is already claimed.

Birthdays and holidays

For kids, colleagues and yourself. Drop the link into the group chat — everyone picks what to buy, nobody asks "what should we get you?".

Weddings

A shared list for the couple: family and friends reserve gifts in advance — no duplicate kettles and no "anything you like" gift cards.

Group gifts

A team, a club, a community: everyone sees what is already reserved and chips in by name — the last dollars go exactly where needed.

Public page with reservations

Every wish carries a price, quantity and priority. Guests reserve by name, the counter updates over SSE, and you can see at any moment what is already claimed.

Add by link

Paste a product URL — Spisok pulls in the title, price and image by itself. A wish is ready in a second, no manual formatting.

Lives with you

One binary and a SQLite file. A ~20 MB Docker image, startup under a second, data never leaves your box.

A phone app

PWA: installable on the home screen, works offline. "Share" from a product page creates a wish in the list instantly.

Private by default

No analytics, no trackers, no "come back to us" emails. Private lists are invisible — even the link cannot be guessed.

API and export

REST API with an OpenAPI spec, CSV and JSON export, backups with a single command. Your data is yours.

Go, SQLite and server-rendered pages — no Node.js, no separate database, no queues. One process, one data file, one command to run.

docker run -d -p 8080:8080 -v spisok-data:/data spisok
  • 17 MB RAM at idle
  • 20 ms page TTFB
  • 1 static binary
  • 0 Node.js dependencies

Do guests need an account to reserve a gift?
No. A guest types their name when reserving — that's all. The browser remembers the guest in a signed cookie, so repeat reservations happen automatically, no forms.
What is stored and can it be moved?
Everything lives in a single SQLite file: accounts, lists, wishes, reservations, images. Moving it is a file copy; a backup is one command — spisok backup.
Can a Raspberry Pi handle it?
Yes: the binary is static, CGO-free, and uses about 17 MB of RAM at idle. On a Pi 4 it is a years-long background service, not an experiment.
How does double-buying protection work technically?
A unique index in the database: one guest — one reservation per wish, quantities are capped by triggers. A conflict is a polite 409, not a silent double-booking.
Can I use my own domain and SSL?
Yes, it is a regular HTTP server: put nginx or caddy in front, add a certificate — and your spisok.example.com is ready. No specific hosting required.

Start with your own list