# Hitstar – lokale Web-App (Prototyp) ## Docker Run the app in a container while using your local `data/` music folder: 1. Build the image ```powershell docker compose build ``` 2. Start the service ```powershell docker compose up -d ``` 3. Open http://localhost:5173 Notes: - Your local `data/` is mounted read/write at `/app/data` inside the container, so you can manage tracks on the host. - To rebuild after changes: `docker compose build --no-cache && docker compose up -d`. Lokales Multiplayer-Webspiel inspiriert von HITSTER. Nutzt eure MP3-Dateien im Ordner `data/`, eine Lobby mit Raum-Code sowie WebSockets für den Mehrspieler-Modus. ## Features - Lobby mit Raum-Erstellung und -Beitritt (Code) - Mehrere Spieler pro Raum, Host startet das Spiel - Lokale MP3-Wiedergabe via Browser-Audio (`/audio/`) – keine externen Dienste - Einfache Rundenlogik: DJ scannt Lied, Spieler raten vor/nach (vereinfachte Chronologie) - Token-Zähler (Basis); Gewinnbedingung: 10 korrekt platzierte Karten Hinweis: Regeln sind vereinfacht; „HITSTER!“-Challenges und exakter Zwischenplatzierungsmodus sind als Ausbaustufe geplant. ## Setup 1. MP3-Dateien in `data/` legen (Dateiname wird als Fallback-Titel genutzt; falls Tags vorhanden, werden Titel/Künstler/Jahr ausgelesen). 2. Abhängigkeiten installieren und Server starten. ### PowerShell-Befehle ```powershell # In den Projektordner wechseln Set-Location e:\git\hitstar # Abhängigkeiten installieren npm install # Server starten npm start ``` Dann im Browser öffnen: http://localhost:5173 ## Nutzung - Namen eingeben (speichert automatisch), Raum erstellen oder mit Code beitreten (Code wird angezeigt). - Host klickt „Spiel starten“. - DJ klickt „Lied scannen“; der Track spielt bei allen. - Aktiver Spieler wählt „Vor“ oder „Nach“. Bei Erfolg wandert das Lied in seine Zeitleiste. ## Ordnerstruktur - `public/` – Client (HTML/CSS/JS) - `src/server/` – Express + WebSocket Server, Game-State - `data/` – eure Audio-Dateien und Playlists ### Playlist-Unterstützung Die App unterstützt jetzt mehrere Playlists! Du kannst verschiedene Playlists für verschiedene Spielsessions erstellen: **Ordnerstruktur für Playlists:** ``` data/ ├── (Audio-Dateien hier = "Default" Playlist) ├── 80s-Hits/ │ ├── Song1.opus │ ├── Song2.opus │ └── ... ├── Rock-Classics/ │ ├── Song1.opus │ └── ... └── Party-Mix/ ├── Song1.opus └── ... ``` **So funktioniert's:** 1. **Standard-Playlist**: Audio-Dateien direkt im `data/`-Ordner werden als "Default"-Playlist erkannt 2. **Eigene Playlists**: Erstelle Unterordner im `data/`-Verzeichnis, z.B. `data/80s-Hits/` 3. **Playlist-Auswahl**: Als Raum-Host kannst du in der Lobby die gewünschte Playlist auswählen, bevor das Spiel startet 4. **Unterstützte Formate**: .mp3, .wav, .m4a, .ogg, .opus **Empfehlung**: Nutze das `.opus`-Format für optimale Streaming-Performance und geringeren Speicherverbrauch. Das Konvertierungsskript `npm run audio:convert` wandelt automatisch alle Audio-Dateien in Opus um. ## Git & Audio-Dateien - In `.gitignore` sind alle gängigen Audio-Dateitypen ausgeschlossen (z. B. .mp3, .wav, .flac, .m4a, .ogg, …). - Legt eure Musik lokal in `data/`. Diese Dateien werden nicht ins Git-Repo eingecheckt und bleiben nur auf eurem Rechner. ## Nächste Schritte (optional) - „HITSTER!“-Challenges per Token mit Positionsauswahl (zwischen zwei Karten) - Team-Modus, Pro-/Expert-Regeln, exaktes Jahr - Persistenz (Räume/Spielstände), Reconnect - Drag & Drop-Zeitleiste, visuelle Platzierung ## Hinweis Nur für privaten Gebrauch. Musikdateien bleiben lokal bei euch.