v0.2.0-beta
Pre-releaseAdolar Songster v0.2.0-beta
Erste Beta nach der v0.1.0-alpha. Vollständiges README: README.md.
Neu in dieser Beta
- Rangliste: Top 10 (Songster-/Karmapunkte, gespielte Spiele) plus eigener Rang, wenn außerhalb der Top 10
- Globale Rangformel:
(Songster-Punkte + Karma-Punkte) / √(gespielte Spiele + 1)— ersetzt die alte rein positionsbasierte Anzeige überall (Profil, Bestenliste, Live-Tooltip im Spiel) - Tisch-Beitrittsvoraussetzungen: Mindest-Karma/-Punkte/-Spiele bei Tischerstellung konfigurierbar; wer sie nicht erfüllt, kann nur als Zuschauer beitreten
- Automatisches Aufräumen inaktiver Tische: nach 60 Minuten ohne Interaktion wird ein Tisch gelöscht (kein Malus, keine Anrechnung als gespieltes Spiel), mit Vorwarnung 1 Minute vorher ("Ich bin noch da"); Admin-Bereich zeigt alle Tische mit 30-Minuten-Inaktivitäts-Kennzeichnung
- PDF-Export der Endspielstands-Zusammenfassung direkt vom Siegerbildschirm
- Song-Pool-Suche im Admin-Bereich (statt kompletter Listenabruf) plus manuelle Jahres-Korrektur mit Schutz vor Überschreiben durch den nächsten Adolar-Sync
- Adolar-Sync läuft asynchron: kein Blockieren/Timeout mehr bei großen Playlists
- Einladungslimit-Fix: delegierte Nutzer können ihr eigenes Beitritts-Limit nicht mehr selbst hochsetzen
- Diverse Stabilitätsfixes: Session-Race-Conditions, "Backend nicht erreichbar", doppelte Testdatenbank-Teardowns
- Aufgeräumt: Standalone-Playboard-Prototyp entfernt, ESLint/Dev-Tooling auf aktuellem Stand (keine deprecated-Pakete mehr im eigenen Einflussbereich)
Nachträge (in diesen Tag nachgezogen)
- Fix: Tisch-Beitrittsvoraussetzungen (Karma/Punkte/Spiele) waren intern immer mit Standardwert 0 statt "keine Anforderung" belegt - ein brandneuer Spieler (0 Karma/Punkte/Spiele) hätte durch einen Vorzeichenfehler theoretisch von jedem Tisch ausgeschlossen werden können. Jetzt echte Opt-in-Checkboxen im Tisch-erstellen-Dialog; ohne Häkchen gilt wirklich keine Anforderung.
Installation
Schnellstart mit Docker (empfohlen)
git clone https://github.com/noyse27/adolar-songster.git
cd adolar-songster
docker compose up --buildStartet Postgres, spielt die Migrationen ein und startet Backend (Port 4000) und Frontend (Port 5173).
- Frontend: http://localhost:5173
- Backend-Health: http://localhost:4000/api/v1/health
Einrichtung (3-Schritte-Onboarding):
.envbzw.backend/.env.examplebei Bedarf anpassen (z. B.JWT_SECRETfür den Produktivbetrieb setzen)docker compose up --build- Im Browser http://localhost:5173 öffnen — der Einrichtungsassistent führt auf einem frischen System durch Admin-Anlage, erste Einladung, Testtisch und einen abschließenden Funktionstest. Existiert bereits ein Admin, zeigt der Assistent das direkt an.
Danach per POST /api/v1/auth/login einloggen und mit dem accessToken weitere Invites erzeugen (POST /api/v1/invites). API-Details siehe docs/Adolar_Songster_API_Spezifikation_v1_20260821.md.
Optional: für die Musikquelle über Adolar ADOLAR_BASE_URL/ADOLAR_API_TOKEN in backend/.env setzen (Bearer-Token mit product=songster, erstellt über Adolar Webs Admin-Einstellungen). Ohne Adolar-Anbindung nutzt Songster den lokal admin-gepflegten Song-Pool.
Lokale Entwicklung ohne Docker
Voraussetzung: Node.js 22, laufende PostgreSQL-Instanz.
npm install
cp backend/.env.example backend/.env # DATABASE_URL ggf. anpassen
npm run --workspace backend migrate:up
npm run --workspace backend dev # Backend auf Port 4000
npm run --workspace frontend dev # Frontend auf Port 5173Tests
npm run lint
npm run test:unit
npm run test:integration # benötigt DATABASE_URL gegen eine laufende Postgres-Instanz
npm run buildBekannter Stand: Beta — Kernspiel (Lobby, Tische, Zeitleisten-Runden, Token-Mechanik, Bewertungssystem) ist vollständig getestet (115 Backend-Tests, CI grün inkl. CodeQL/Docker-Image-Scan), aber noch nicht produktionsgehärtet für große Nutzergruppen.