Claude-Session: https://claude.ai/code/session_01T4tydM7urcwizGC8jeJU1K
Weirsøe Party Protocol
Dansk party-spil i stil med Jackbox. Spillet vises på en storskærm, og spillerne er med fra deres telefoner. Første spil er Fup og Fakta: alle finder på en troværdig løgn til et kuriøst faktum, og så skal man finde sandheden blandt løgnene.
- Spillere:
https://party.weircon.dkog indtast koden fra skærmen (eller scan QR-koden). - Vært:
https://party.weircon.dk/host/(Authentik, grupperne Familie og authentik Admins). - Spørgsmål:
https://party.weircon.dk/admin/(Authentik-admins logges ind automatisk).
Sådan virker det
Serveren er autoritativ. Hver skærm har én WebSocket, sender handlinger og får hele spiltilstanden tilbage efter hver ændring (se docs/PROTOCOL.md). Spilmotoren (fupogfakta/engine.py) er ren Python uden I/O og ejer alle regler og timere. Rummene (party/rooms.py) ligger i hukommelsen i én proces, så serveren skal køre med én worker. Et genstart afbryder igangværende spil.
| Mappe | Indhold |
|---|---|
fupogfakta/ |
Spilmotor, modeller for kategorier og spørgsmål, spørgsmålsbank i data/*.json |
party/ |
Rum, WebSocket-consumers, sider, Authentik-header-login, templates og JS/CSS |
partyhub/ |
Django-projekt (settings, ASGI) |
deploy/ |
systemd-unit, miljøfil-skabelon og deploy.sh |
Udvikling
python3 -m venv .venv && .venv/bin/pip install -r requirements-dev.txt
export DJANGO_DEBUG=true DEV_HOST_USER=dev
.venv/bin/python manage.py migrate && .venv/bin/python manage.py load_questions
.venv/bin/uvicorn partyhub.asgi:application --reload
.venv/bin/python manage.py test
DEV_HOST_USER lader dig åbne /host/ uden Authentik (kun med DJANGO_DEBUG=true).
Drift
Én uvicorn-proces (--workers 1) bag en reverse proxy med TLS. Proxyen beskytter /host/, /ws/host/ og /admin/ med Authentik forward-auth og sender X-authentik-username og X-authentik-groups videre; på alle andre stier skal den blanke de headere. Appen stoler kun på dem fra adresserne i TRUSTED_PROXIES, så appens port bør kun kunne nås fra proxyen. Se deploy/wpp.env.example for miljøvariabler.
deploy/bots.py spiller et helt spil mod en kørende server og kan også fylde et spil op med bots (--code).
Spørgsmål
fupogfakta/data/*.json indlæses med manage.py load_questions (ved hver deploy; matcher på spørgsmålsteksten, så rettelser i admin bevares, medmindre samme spørgsmål ændres i filen). Skriv _____ hvor svaret står, og giv 3 husets løgne.
Den tidligere version (Angular-SPA, REST) ligger på branchen legacy.