Compare commits
2 Commits
b9cebd46d5
...
24e4e3dfa5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
24e4e3dfa5 | ||
|
|
f4e953ecd1 |
12
README.md
12
README.md
@@ -17,11 +17,12 @@ Eine Web-App inspiriert von Heardle, bei der Nutzer täglich einen Song anhand k
|
|||||||
- Anzeige des Covers nach Spielende (Sieg/Niederlage).
|
- Anzeige des Covers nach Spielende (Sieg/Niederlage).
|
||||||
- Automatische Migration bestehender Songs.
|
- Automatische Migration bestehender Songs.
|
||||||
- **Teilen-Funktion:** Ergebnisse können als Emoji-Grid geteilt werden.
|
- **Teilen-Funktion:** Ergebnisse können als Emoji-Grid geteilt werden.
|
||||||
|
- **PWA Support:** Installierbar als App auf Desktop und Mobilgeräten (Manifest & Icons).
|
||||||
- **Persistenz:** Spielstatus wird lokal im Browser gespeichert.
|
- **Persistenz:** Spielstatus wird lokal im Browser gespeichert.
|
||||||
|
|
||||||
## Tech Stack
|
## Tech Stack
|
||||||
|
|
||||||
- **Framework:** Next.js 14 (App Router)
|
- **Framework:** Next.js 16 (App Router)
|
||||||
- **Styling:** Vanilla CSS
|
- **Styling:** Vanilla CSS
|
||||||
- **Datenbank:** SQLite (via Prisma ORM)
|
- **Datenbank:** SQLite (via Prisma ORM)
|
||||||
- **Deployment:** Docker & Docker Compose
|
- **Deployment:** Docker & Docker Compose
|
||||||
@@ -39,7 +40,14 @@ Eine Web-App inspiriert von Heardle, bei der Nutzer täglich einen Song anhand k
|
|||||||
npx prisma db push
|
npx prisma db push
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Entwicklungsserver starten:
|
|
||||||
|
3. **Optional: Cover-Bilder migrieren:**
|
||||||
|
Falls MP3-Dateien ohne Cover in der Datenbank sind:
|
||||||
|
```bash
|
||||||
|
node scripts/migrate-covers.mjs
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Entwicklungsserver starten:
|
||||||
```bash
|
```bash
|
||||||
npm run dev
|
npm run dev
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import type { Metadata } from "next";
|
import type { Metadata, Viewport } from "next";
|
||||||
import { Geist, Geist_Mono } from "next/font/google";
|
import { Geist, Geist_Mono } from "next/font/google";
|
||||||
import "./globals.css";
|
import "./globals.css";
|
||||||
|
|
||||||
@@ -17,6 +17,13 @@ export const metadata: Metadata = {
|
|||||||
description: "Daily music guessing game - Guess the song from short audio clips",
|
description: "Daily music guessing game - Guess the song from short audio clips",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const viewport: Viewport = {
|
||||||
|
themeColor: "#000000",
|
||||||
|
width: "device-width",
|
||||||
|
initialScale: 1,
|
||||||
|
maximumScale: 1,
|
||||||
|
};
|
||||||
|
|
||||||
export default function RootLayout({
|
export default function RootLayout({
|
||||||
children,
|
children,
|
||||||
}: Readonly<{
|
}: Readonly<{
|
||||||
|
|||||||
20
app/manifest.ts
Normal file
20
app/manifest.ts
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
import type { MetadataRoute } from 'next'
|
||||||
|
|
||||||
|
export default function manifest(): MetadataRoute.Manifest {
|
||||||
|
return {
|
||||||
|
name: 'Hördle',
|
||||||
|
short_name: 'Hördle',
|
||||||
|
description: 'Daily music guessing game - Guess the song from short audio clips',
|
||||||
|
start_url: '/',
|
||||||
|
display: 'standalone',
|
||||||
|
background_color: '#ffffff',
|
||||||
|
theme_color: '#000000',
|
||||||
|
icons: [
|
||||||
|
{
|
||||||
|
src: '/favicon.ico',
|
||||||
|
sizes: 'any',
|
||||||
|
type: 'image/x-icon',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user