01bcf179f90f7f4fd539745c2bdd4e3a803c22d4
- Replace filename column with activation count - Add pagination (10 items per page) and search functionality - Add delete functionality (removes DB entry and file) - Remove manual title/artist input (auto-extract from ID3 tags) - Replace text buttons with emoji icons (Edit, Delete, Save, Cancel) - Implement weighted random selection for daily puzzles - Add custom favicon - Fix docker-compose.yml configuration
Hördle
Eine Web-App inspiriert von Heardle, bei der Nutzer täglich einen Song anhand kurzer Audio-Schnipsel erraten müssen.
Features
- Tägliches Rätsel: Jeden Tag ein neuer Song für alle Nutzer.
- Inkrementelle Hinweise: Startet mit 2 Sekunden, dann 4s, 7s, 11s, 16s, bis 30s.
- Admin Dashboard:
- Upload von MP3-Dateien.
- Automatische Extraktion von ID3-Tags (Titel, Interpret).
- Bearbeitung von Metadaten.
- Sortierbare Song-Bibliothek.
- Teilen-Funktion: Ergebnisse können als Emoji-Grid geteilt werden.
- Persistenz: Spielstatus wird lokal im Browser gespeichert.
Tech Stack
- Framework: Next.js 14 (App Router)
- Styling: Vanilla CSS
- Datenbank: SQLite (via Prisma ORM)
- Deployment: Docker & Docker Compose
Lokale Entwicklung
-
Abhängigkeiten installieren:
npm install -
Datenbank initialisieren:
npx prisma generate npx prisma db push -
Entwicklungsserver starten:
npm run devDie App läuft unter
http://localhost:3000.
Deployment mit Docker
Das Projekt ist für den Betrieb mit Docker optimiert.
-
Vorbereitung: Kopiere die Beispiel-Konfiguration:
cp docker-compose.example.yml docker-compose.ymlPasse ggf. das
ADMIN_PASSWORDin derdocker-compose.ymlan. -
Starten:
docker compose up --build -dDie App ist unter
http://localhost:3010erreichbar (Port indocker-compose.ymlkonfiguriert). -
Daten-Persistenz:
- Die SQLite-Datenbank wird im Ordner
./datagespeichert. - Hochgeladene Songs liegen in
./public/uploads. - Beide Ordner werden als Docker Volumes eingebunden, sodass Daten auch bei Container-Neustarts erhalten bleiben.
- Die SQLite-Datenbank wird im Ordner
-
Admin-Zugang:
- URL:
/admin - Standard-Passwort:
admin123(Bitte indocker-compose.ymländern!)
- URL:
Lizenz
MIT
Description
Languages
TypeScript
90.7%
JavaScript
3.8%
CSS
3.3%
Dockerfile
1.2%
Shell
1%