A simple static web app for organizing Secret Santa and gift exchanges.
Live App: https://mpparsley.github.io/Presents/
- Manage persons, groups, and occasions
- Cross-group shuffling: each person is assigned someone from a different group
- Business rules enforced: no self-assignments, no same-group assignments, no repeats from previous editions
- View assignment history by edition
- Import/export data as JSON for sharing
- Export data as RDF (Turtle format)
- SOLID Pod integration for decentralized wishlist management
- No backend required - all data stored in browser localStorage
- Create Groups: Groups represent families or teams who should NOT give gifts to each other
- Add Persons: Add people and assign each to their group
- Create Occasions: Add events like "Christmas 2025"
- Shuffle: Run a shuffle to assign each person a recipient from a different group
Just open index.html in a browser or visit the live URL above.
De app ondersteunt SOLID (Social Linked Data) voor gedecentraliseerd wishlist-beheer. Hiermee kun je:
- Eigenaar zijn van je eigen wishlist data - opgeslagen in jouw persoonlijke Pod
- Veilig delen - alleen wie jij toestemming geeft kan je wishlist zien
- Interoperabiliteit - data in open standaard formaat (RDF/Linked Data)
SOLID is een specificatie ontwikkeld door Tim Berners-Lee (uitvinder van het web) waarmee je data opslaat in een persoonlijke "Pod" die je zelf beheert. Je bepaalt wie toegang heeft tot welke data.
Je hebt een gratis Solid Pod nodig. Kies een provider:
| Provider | Locatie | Registratie |
|---|---|---|
| solidcommunity.net | UK | Voor developers/early adopters |
| solidweb.org | EU | Grassroots community |
| solidweb.me | EU | Meisdata |
| inrupt.net | - | Inrupt (commercieel) |
Let op:
- Username moet lowercase zijn, alleen letters a-z en cijfers 0-9
- Deze servers zijn voor testen/ontwikkeling - sla geen gevoelige data op
- Ga naar de sectie "Mijn Solid Pod"
- Kies je provider uit de dropdown
- Klik "Inloggen met Solid"
- Je wordt doorgestuurd naar je provider om in te loggen
- Na succesvolle login kom je terug in de app
Na inloggen:
- Klik "Beheer Mijn Wishlist"
- Voeg items toe met:
- Naam - wat je graag wilt hebben
- Beschrijving (optioneel) - extra details
- Link (optioneel) - URL naar product
- Prioriteit - 1-5 sterren
- Items worden automatisch opgeslagen in je Pod
Om je wishlist zichtbaar te maken voor anderen:
- Ga naar de "Persons" sectie
- Zoek je eigen naam in de lijst
- Klik "Koppel Solid" naast je naam
- Je WebID wordt nu gekoppeld aan je persoon
Na koppeling verschijnt een groene "Solid" badge bij je naam.
Na een shuffle kan de organisator persoonlijke reveal links delen:
- Ga naar Shuffle & Assignments
- Selecteer de occasion en edition
- Klik op "Link" naast elke toewijzing
- De link wordt gekopieerd - stuur deze naar de deelnemer
De deelnemer opent reveal.html?data=... en ziet:
- Wie ze een cadeau moeten geven
- De wishlist van die persoon (indien beschikbaar)
- De mogelijkheid om hun eigen wishlist te beheren
Bij de Assignments (in de hoofdapp of op de reveal pagina):
- Elke ontvanger met een gekoppelde Solid Pod toont een "Wishlist" knop
- Klik om de wishlist van je ontvanger te bekijken
- Items worden direct uit hun Pod opgehaald
Wishlists worden opgeslagen als RDF in Turtle formaat:
Pod URL: https://username.solidcommunity.net/
Wishlist: /public/giftshuffler-wishlist.ttl
schema:ItemList- de wishlist containerschema:ListItem- individuele itemsschema:name,schema:description,schema:url- item eigenschappenseg:priority- custom prioriteit (1-5)
@prefix schema: <http://schema.org/> .
@prefix seg: <https://segersrosseel.be/ns/gift#> .
<#item-abc123> a schema:ListItem ;
schema:name "Nintendo Switch" ;
schema:description "OLED versie in wit" ;
schema:url <https://bol.com/product> ;
schema:position 1 ;
seg:priority 5 .- Wishlists worden opgeslagen in
/public/folder (publiek leesbaar) - Alleen de eigenaar kan schrijven (via SOLID authenticatie)
- Voor private wishlists: wijzig ACL permissies in je Pod
- Wishlists worden lokaal gecached voor snelle toegang
- Bij netwerkproblemen wordt de cache getoond
- Cache wordt automatisch bijgewerkt bij succesvolle fetch
Solid koppelingen worden meegenomen in JSON export:
{
"solidProfiles": {
"personId123": {
"webId": "https://user.solidcommunity.net/profile/card#me",
"wishlistUrl": "https://user.solidcommunity.net/public/giftshuffler-wishlist.ttl",
"linkedAt": 1702473600000
}
}
}- SOLID Project - Officiële website
- Get a Pod - Pod providers overzicht
- Inrupt Documentation - Developer documentatie
- SOLID Forum - Community support