Skip to content

v0.2.0-beta

Pre-release
Pre-release

Choose a tag to compare

@noyse27 noyse27 released this 24 Aug 18:14
· 134 commits to main since this release

Adolar 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 --build

Startet Postgres, spielt die Migrationen ein und startet Backend (Port 4000) und Frontend (Port 5173).

Einrichtung (3-Schritte-Onboarding):

  1. .env bzw. backend/.env.example bei Bedarf anpassen (z. B. JWT_SECRET für den Produktivbetrieb setzen)
  2. docker compose up --build
  3. 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 5173

Tests

npm run lint
npm run test:unit
npm run test:integration   # benötigt DATABASE_URL gegen eine laufende Postgres-Instanz
npm run build

Bekannter 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.