feat: persönliche Gedenkseite – Tribute, Autoplay-Musik, Next.js 16 Fixes

- TributeSection: zwei Perspektiven (Familie + Dennis), emotional und persönlich
- MusicPlayer: Autoplay mit stummem Start + Fade-In bei Interaktion, nahtloser
  Crossfade-Loop (überspringt stille letzten 10s), kompakter Mute-Button
- Alle API-Routes: export const runtime = 'nodejs' für node:sqlite in Next.js 16
- Admin: defensive res.ok Checks vor .json() Parsing
- DB: mkdirSync erst zur Laufzeit, path.resolve für DATA_DIR
- page.tsx: plain() Helper für null-prototype SQLite-Rows
- erinnerungen.md: alle Familieninfos und Erinnerungen dokumentiert
- Nav: Musik-Tab entfernt, "Über Oma" hinzugefügt

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
denshooter
2026-02-16 03:48:46 +01:00
parent 313b5ff7fd
commit 4d56d4904a
17 changed files with 1121 additions and 600 deletions
+2 -4
View File
@@ -64,10 +64,8 @@ export default function AdminPage() {
fetch('/api/memories'),
fetch('/api/media'),
])
const [memoriesData, mediaData] = await Promise.all([
memoriesRes.json(),
mediaRes.json(),
])
const memoriesData = memoriesRes.ok ? await memoriesRes.json() : []
const mediaData = mediaRes.ok ? await mediaRes.json() : []
setMemories(Array.isArray(memoriesData) ? memoriesData : [])
const items: MediaItem[] = Array.isArray(mediaData) ? mediaData : []
setPhotos(items.filter((m) => m.type === 'photo'))