agw 16054a9b67
CI / test (push) Successful in 28s
Skærmen følger speakeren, opsummering, musik, lydeffekter og drillerier
Faseskift venter, til speakeren er færdig med den aktuelle skærm, og
replikker til en skærm, der er væk, afspilles ikke. Ny kategori-intro med
en lyd pr. kategori, musik pr. fase med bløde overgange og lydeffekter til
alt, der flyver over skærmen. Efter afsløringen eksploderer løgne, ingen
valgte, og pointene tæller op. Hjerter gives kun under afsløringen og ses
live på storskærmen. Lyv for mig giver halve point. Narrede spilleres
telefon kan blive drillet med et fjollet billede og et buh. Alle lyd- og
billedfiler serveres med versionerede navne og caches af browseren.

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-01 21:59:40 +02:00

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.dk og 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.

S
Description
Weirsøe Party Protocol
Readme
42 MiB
Languages
Python 60.3%
JavaScript 28.2%
CSS 9.8%
HTML 1.7%