feat: implement initial Deno server with WebSocket API, static file serving, and development Docker Compose.
All checks were successful
Build and Push Docker Image / docker (push) Successful in 21s

This commit is contained in:
2026-01-03 22:07:34 +01:00
parent 70be1e7e39
commit c9be49d988
11 changed files with 258 additions and 69 deletions

View File

@@ -130,15 +130,33 @@
<!-- Playlist Selection (only shown in lobby for host) -->
<div id="playlistSection"
class="hidden rounded-lg border border-slate-200 dark:border-slate-800 bg-slate-50/60 dark:bg-slate-800/60 p-4">
<label class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">
🎵 Playlist auswählen
</label>
<select id="playlistSelect"
class="w-full h-11 rounded-lg border border-slate-300 dark:border-slate-700 bg-white dark:bg-slate-800 px-3 outline-none focus:ring-2 focus:ring-indigo-500">
<option value="default">Lade Playlists...</option>
</select>
<p class="mt-2 text-xs text-slate-500 dark:text-slate-400">
Als Host kannst du die Playlist für dieses Spiel wählen.
<div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
<!-- Playlist Selection -->
<div>
<label class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">
🎵 Playlist auswählen
</label>
<select id="playlistSelect"
class="w-full h-11 rounded-lg border border-slate-300 dark:border-slate-700 bg-white dark:bg-slate-800 px-3 outline-none focus:ring-2 focus:ring-indigo-500">
<option value="default">Lade Playlists...</option>
</select>
</div>
<!-- Goal/Score Selection -->
<div>
<label class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">
🏆 Siegpunkte
</label>
<select id="goalSelect"
class="w-full h-11 rounded-lg border border-slate-300 dark:border-slate-700 bg-white dark:bg-slate-800 px-3 outline-none focus:ring-2 focus:ring-indigo-500">
<option value="5">5 Karten</option>
<option value="10" selected>10 Karten</option>
<option value="15">15 Karten</option>
<option value="20">20 Karten</option>
</select>
</div>
</div>
<p class="mt-3 text-xs text-slate-500 dark:text-slate-400">
Als Host kannst du die Playlist und Siegpunkte für dieses Spiel wählen.
</p>
</div>
@@ -159,6 +177,11 @@
<span class="font-medium text-slate-500 dark:text-slate-400">Playlist:</span>
<span id="currentPlaylist" class="font-semibold text-slate-900 dark:text-slate-100">default</span>
</div>
<div id="goalInfoSection" class="text-slate-700 dark:text-slate-300 flex items-center gap-1.5">
<span class="text-base">🏆</span>
<span class="font-medium text-slate-500 dark:text-slate-400">Ziel:</span>
<span id="goalInfo" class="font-semibold text-slate-900 dark:text-slate-100">10 Karten</span>
</div>
</div>
<div class="flex flex-wrap items-center gap-3 justify-start sm:justify-end">
<label class="inline-flex items-center gap-3 text-slate-700 dark:text-slate-300 select-none">