Files
hermes-vault/Brain/inbox/melo-1.0-audit.md
T
2026-08-17 10:56:15 +02:00

5.6 KiB
Raw Blame History

Melo 1.0 Code-Audit & Design-Review

Datum: 26.07.2026
Repo: /home/dustin/git/melo_app/ (27 Dart-Dateien, v2.7 laut Logger)


🔴 TOTE BUTTONS (führen zu nichts oder zum falschen Ziel)

1. BottomNavigationBar 3 von 5 Tabs defekt!

Datei: lib/screens/home_screen.dart Zeile 367371

Tab Label Was passiert Sollte passieren
🎵 Musik Index 0 Home-Screen richtig
⬇ Downloads Index 1 DownloadScreen richtig
🏷️ Tags Index 2 öffnet PlaylistSheet! Sollte nach Tags filtern o. Tag-Manager zeigen
❤️ Favoriten Index 3 öffnet PlaylistSheet! Sollte favorisierte Songs filtern
⚙️ Einstellungen Index 4 KEIN Handler tut gar nichts! Sollte Einstellungen-Seite zeigen
// Aktueller Code (defekt):
onTap: (i) {
  setState(() => _aktiverTab = i);
  if (i == 2) _zeigePlaylistSheet(); // FALSCH: Tags → Playlists
  if (i == 3) _zeigePlaylistSheet(); // FALSCH: Favoriten → Playlists
  // i == 4 → KEIN Code! Einstellungen-Tab tot.
},

2. Auskommentierte Widgets (Features existieren, sind aber deaktiviert)

Datei: lib/screens/home_screen.dart Zeile 272291

  • RecentWidget (Zeile 273): // RecentWidget(songs: _vm.letzteSongs, onPlay: _vm.spieleSong),

    • Zeigt "Zuletzt gehört" Code existiert in lib/widgets/recent_widget.dart, korrekt implementiert
  • TagStatsWidget (Zeile 290): // TagStatsWidget(tagCounts: _vm.tagCounts),

    • Zeigt Tag-Häufigkeiten farbcodiert Code existiert in lib/widgets/tag_stats_widget.dart, korrekt implementiert

3. Alle anderen Buttons intakt

  • MeloHeader (Cloud/Suche/Download): alle 3 funktional
  • SongTile (Edit/Favorit/Playlist/Play): alle funktional
  • MiniPlayer (Play/Pause/Skip): alle funktional
  • DownloadScreen (Ordner/Download/Abbrechen): alle funktional
  • PlaylistSheet (Neu/Öffnen/Löschen): alle funktional
  • NavidromeBrowser (Verbinden/Alben/Stream/Download): alle funktional

🎨 DESIGN-ANALYSE & VERSCHÖNERUNGSVORSCHLÄGE

Aktuelles Design (Bestandsaufnahme)

  • Farbschema: Dark Theme Schwarz #0D0D0D, Dunkelgrau #1A1A1A/#2A2A2A, Rot #CC0000 als Akzent
  • Typografie: System-Standardschrift, keine Custom-Font. Nur Größen-Variation (9-28px).
  • Layout: Standard-Material mit BottomNavigationBar, ListView, Cards
  • Rundungen: Konsistent 8-14px Border-Radius
  • Icons: Material Icons, teils mit Emoji (♪, 💿, 🎵, 💌)
  • Animationen: Nur implizit (FAB, BottomSheet); keine expliziten

🔥 Top 10 Verschönerungs-Maßnahmen (priorisiert)

1. Custom-Schriftart Höchste Wirkung, geringer Aufwand

  • Schriftart wie Inter oder Poppins via google_fonts einbinden
  • Sofort moderneres, hochwertigeres Look & Feel
  • pubspec.yamlgoogle_fonts: ^6.1.0

2. Glassmorphism-Effekte

  • MiniPlayer + StatistikCard mit BackdropFilter + blur
  • Transparenter, schwebender Look statt flache Container
  • ClipRRect mit BackdropFilter(brightness: 0.2, saturation: 0.3)

3. Subtiler Hintergrund-Gradient

  • Statt MeloTheme.schwarz ein radialer Gradient von #1A0505 nach #0D0D0D
  • Gibt Tiefe, wirkt weniger "flach"

4. Song-Tiles mit Swipe-Gesten

  • Swipe links → Favorit toggeln
  • Swipe rechts → Zur Playlist hinzufügen
  • flutter_slidable Package

5. Skeleton-Loader / Shimmer

  • Statt CircularProgressIndicator beim Laden
  • Placeholder-Karten mit shimmer-Animation
  • Wirkt professioneller, weniger "Lade-Unterbrechung"

6. Hero-Animationen

  • MiniPlayer → Vollbild-Player mit fließendem Übergang
  • Album-Cover als Hero-Widget

7. Leere-Zustände mit Icons/Illustration

  • "Noch keine Playlists" → mit großer Illustration + CTA-Button
  • "Keine Treffer" → Such-Illustration
  • Statt reinem Text

8. Animierte Tab-Indikatoren

  • BottomNavBar mit animiertem Indikator-Balken oder Dot
  • Sanfte Farbverläufe beim Wechseln

9. Pull-to-Refresh auf Song-Liste

  • RefreshIndicator um die ListView
  • Neu-Scannen per Wischgeste

10. Farbcodierte Fortschrittsbalken

  • Fortschritt farblich codieren (grau→gelb→grün bei Download-Fortschritt)
  • Statt einfachem roten Balken

Farbpaletten-Erweiterung (Vorschlag)

// Zusätzlich zu bestehenden Farben:
static const Color rotGlow = Color(0x40CC0000);    // für Glow-Effekte
static const Color surfaceHell = Color(0xFF252525); // für Hover/Active
static const Color erfolg = Color(0xFF4CAF50);      // Grün-Akzent
static const Color warnung = Color(0xFFFFC107);     // Gelb-Akzent

Auch interessant (niedrigere Priorität)

  • Waveform-Animation im MiniPlayer (statt statischem Balken)
  • Konfetti-Effekt nach erfolgreichem Download
  • Haptisches Feedback bei Button-Taps (HapticFeedback.lightImpact())
  • Dark-Mode-Only mit OLED-optimiertem #000000 für echte Schwarztöne
  • BottomSheet mit Drag-Handle schon vorhanden → schön!

📊 Zusammenfassung

Kategorie Befund
Tote Buttons 3 von 5 Tabs defekt Tags/Favoriten öffnen Playlists, Einstellungen tut nichts
Deaktivierte Widgets RecentWidget + TagStatsWidget auskommentiert, Code intakt
Sonstige Buttons Alle intakt
Design-Level Solide Basis, Material 3 Dark Theme, konsistent
Größtes Manko Keine Custom-Schriftart, flache Container, keine Animationen
Schnellster Gewinn Custom Font + Glassmorphism + Gradient-Hintergrund