diff --git a/PLAN.md b/PLAN.md new file mode 100644 index 0000000..b957144 --- /dev/null +++ b/PLAN.md @@ -0,0 +1,329 @@ +# Mello v3 — Komplette Roadmap bis Launch (Server-Quality-First) + +**Datum:** 2026-08-19 +**Status:** Brainstorming ✓ → Design ✓ → Execution +**Ziel:** Musik-App mit Navidrome-Server + lokaler Fallback, konkurrenzfähig zu Spotify/Apple Music +**Strategie:** Server-Quality-First (Musikserver perfekt machen, dann lokale Features) + +--- + +## 🎯 Übersicht: Was wird gebaut? + +### Hauptfeature +- **Navidrome/Subsonic-Server** (musik.baka-net.de o.ä.) — Streaming, Caching, Offline-Mode +- **Lokale Fallback** — lokale Musik-Dateien wenn Server Down + +### Nicht im Scope (Abo/Werbung) +- ❌ Premium vs. Free Tiers +- ❌ Werbung +- ❌ In-App Purchases +- ❌ Tracking/Telemetry + +--- + +## 📋 Phase-Roadmap (Detailliert) + +### **PHASE 1: MVP — Musikserver-Player (Aktuell / 2-3 Wochen)** + +**Ziel:** Funktionsfähiger Musikserver-Streaming-Player + +#### P0 — KRITISCH (muss rein) +| Feature | Beschreibung | Tech | Priorität | +|---------|-------------|------|-----------| +| Server-Verbindung | Login zu Navidrome, Credentials speichern | NavidromeService | P0 | +| Album-Browser | Alben vom Server laden, durchstöbern | UI + Service | P0 | +| Play/Pause/Skip | Basic Player Controls | just_audio | P0 | +| Seek/Volume | Fortschritt, Lautstärke regeln | just_audio | P0 | +| Now Playing Screen | Großes Cover, aktuelle Song-Info | UI | P0 | +| Favoriten (Server) | ❤️-Button, Server-Favoriten sync | Service + DB | P0 | +| Queue Management | Nächste Lieder sehen, Skip | AudioHandler | P0 | +| Offline-Cache (Basic) | Lied beim Spielen cachen | File-System | P0 | + +#### P1 — WICHTIG (sollte rein, nicht kritisch) +| Feature | Beschreibung | Priorität | +|---------|-------------|-----------| +| Artists Browse | Nach Künstler filtern | P1 | +| Playlisten vom Server | Server-Playlisten laden | P1 | +| Recently Added | Neue Alben zuerst | P1 | +| Suche | Global Search im Server | P1 | +| History/Resume | Wo war ich beim letzten Song? | P1 | + +#### P2 — NICE-TO-HAVE +| Feature | Beschreibung | Priorität | +|---------|-------------|-----------| +| Dark/Light Mode Toggle | Nur Dark im MVP | P2 | +| Settings UI | Grundeinstellungen | P2 | + +#### 🚀 MVP-Launch Checklist +- ✅ Server-Streaming funktioniert stabil +- ✅ Play/Pause/Skip/Seek robust +- ✅ Basic Caching (keine abgebrochene Lieder) +- ✅ 5-Tab UI fertig (Player, Library, Playlists, Search, Settings) +- ✅ 70+ Tests grün +- ✅ Keine Major Bugs + +**Geschätzt:** 2-3 Wochen (läuft parallel mit diesem Plan) + +--- + +### **PHASE 2: Server-Stabilität & Offline (1-2 Monate)** + +**Ziel:** Musikserver zuverlässig, funktioniert auch offline + +#### P0 — KRITISCH +| Feature | Beschreibung | Impact | Aufwand | +|---------|-------------|--------|---------| +| **Intelligentes Caching** | Smart Cache (recent, favorited, pinned) | Offline funktioniert besser | Hoch | +| **Offline-Mode Toggle** | "Nur gecachte Songs abspielen" | Daten sparen | Mittel | +| **Buffering & Streaming** | Progressive Download, Retry-Logic | Stabil streamen | Hoch | +| **Error Handling** | Server Down → Graceful Fallback | App crasht nicht | Mittel | +| **Lock Screen Controls** | Musik vom Lock Screen steuern | QoL für User | Mittel | +| **Multi-Device Sync** | Favoriten/History über Devices sync | Continuity | Hoch | +| **Queue Persistence** | Queue speichern zwischen Sessions | UX | Gering | + +#### P1 — WICHTIG +| Feature | Beschreibung | Impact | Aufwand | +|---------|-------------|--------|---------| +| Home Widget | Now Playing Widget | Convenience | Mittel | +| Bluetooth Controls | Bluetooth-Kopfhörer steuern | Hardware Support | Mittel | +| Playlisten lokal erstellen | Lokal Playlisten bauen | Offline-Mode | Mittel | +| Backup/Restore | Playlisten exportieren | Data Safety | Gering | + +#### P2 — NICE +| Feature | Beschreibung | Aufwand | +|---------|-------------|---------| +| Download Manager | Sehen was cached ist, löschen | Gering | +| Bandwidth Limiter | "Nur WiFi cachen" | Mittel | +| Sync Status | Zeige Sync-Fortschritt | Gering | + +**Impact:** Nutzer können App überall nutzen, auch offline +**Geschätzt:** 4-6 Wochen + +--- + +### **PHASE 3: Audio-Quality & Lokalmusik (1-2 Monate)** + +**Ziel:** Audio klingt professionell + lokale Musik funktioniert + +#### P0 — KRITISCH (Audio-Kern!) +| Feature | Beschreibung | Impact | Aufwand | +|---------|-------------|--------|---------| +| **Gapless Playback** | Keine Stille zwischen Liedern | Album-Sound | Mittel | +| **Loudness Normalization** | Alle Lieder gleich laut (LUFS) | Komfort (kein Volumen-Jumpen) | Mittel | +| **Crossfade** | 2-5s Übergang zwischen Songs | Smooth | Gering | +| **Equalizer (5-Band)** | Bass/Mids/Treble anpassen | Audio-Kontrolle | Mittel | +| **Local Music Import** | Dateien vom Handy hinzufügen | Fallback Feature | Mittel | +| **Metadata Editor** | ID3-Tags bearbeiten (Title, Artist) | Falsche Daten fixen | Mittel | +| **Duplicate Detection** | Warne vor doppelten Liedern | Data Hygiene | Mittel | + +#### P1 — WICHTIG +| Feature | Beschreibung | Impact | Aufwand | +|---------|-------------|--------|---------| +| Stream Quality Selection | Wähle Bitrate (128/192/320kbps) | Bandwidth Control | Gering | +| Visualizer | Einfacher Musikvisualizer | Ästhetik | Mittel | +| Playlist Shuffle (Smart) | Nicht nur random | Better UX | Gering | +| Repeat Modes | Repeat One/All | Playback Control | Gering | + +#### P2 — NICE +| Feature | Beschreibung | Aufwand | +|---------|-------------|--------|---------| +| Waveform Display | Visueller Fortschrittsbalken | Gering | +| Speed Control | 0.8x-2.0x Playback Speed | Mittel | +| Folder Browsing | Explore Ordner-Struktur | Mittel | + +**Impact:** Audio klingt professionell, lokale Musik funktioniert als echte Fallback +**Geschätzt:** 4-6 Wochen + +--- + +### **PHASE 4: UX-Polish & Entertainment (1-2 Monate)** + +**Ziel:** App fühlt sich poliert an, macht Spaß zu nutzen + +#### P0 — WICHTIG +| Feature | Beschreibung | Impact | Aufwand | +|---------|-------------|--------|---------| +| **Lyrics Display** | Song-Lyrics anzeigen + sync | Entertainment | Mittel | +| **Sleep Timer** | "Stop nach 30 Minuten" | Daily UX | Gering | +| **Now Playing Animations** | Smooth Übergänge, Polish | Feel | Mittel | +| **Search History** | Suchverlauf speichern | Convenience | Gering | +| **Better Browse** | Genres, Decades, Mood | Discovery | Mittel | + +#### P1 — WICHTIG +| Feature | Beschreibung | Impact | Aufwand | +|---------|-------------|--------|---------| +| Mini-Player | Kompakter Player während Browse | QoL | Mittel | +| Gesture Controls | Swipe = Skip, Double-Tap = Fav | iPhone-Feeling | Mittel | +| Haptic Feedback | Vibration auf Interaktionen | Feedback | Gering | +| Smart Playlists | Auto-playlists (Recently Added, Most Played) | Organization | Mittel | +| Playlist Collaboration | Share Playlists (Link) | Social | Mittel | + +#### P2 — NICE +| Feature | Beschreibung | Aufwand | +|---------|-------------|--------|---------| +| Theme Variants | AMOLED Mode, True Black | Gering | +| Keyboard Shortcuts | Space = Play, Arrow = Skip | Mittel | +| Export Playlist | m3u, pls Format | Gering | + +**Impact:** App fühlt sich wie Profi-App an, nicht Beta +**Geschätzt:** 3-4 Wochen + +--- + +### **PHASE 5+: Advanced Features (Optional)** + +**Ziel:** Features die Spotify/Apple Music haben, aber nicht kritisch + +#### P1 — SOLLTE REIN +| Feature | Beschreibung | Impact | Aufwand | +|---------|-------------|--------|---------| +| Tags/Labels | Zusätzlich zu Playlisten | Organization | Mittel | +| Scrobbling (Last.fm) | Track Listening History | Personal Stats | Gering | +| Auto-Recommendations | KNN-basierte Vorschläge | Discovery | Hoch | +| Podcast Support | Variable Speed, Skip Intro | Format Support | Hoch | + +#### P2 — NICE-TO-HAVE +| Feature | Beschreibung | Aufwand | +|---------|-------------|--------|---------| +| Weekly Recaps | "Your Top 10 This Week" | Entertainment | Mittel | +| Mood/Activity Playlists | "Working", "Chill", "Party" | Curation | Mittel | +| Shared Playlists (Collab) | Real-time Playlist Collaboration | Social | Hoch | +| Mobile App → Web/Desktop | Sync to Browser | Platform | Hoch | + +**Impact:** Feature-Parity mit Spotify/Apple Music +**Geschätzt:** 2-3 Monate (can be parallel) + +--- + +## 📊 Feature-Priorisierungs-Matrix + +``` +MUSS (P0) SOLLTE (P1) NICE (P2) +───────────────────────────────────────────────────────── +Phase 1: +- Server-Stream - Artists Browse - Settings UI +- Play/Pause/Skip - Playlisten vom Server - Dark/Light +- Favoriten - Suche +- Queue - History/Resume + +Phase 2: +- Smart Caching - Home Widget - Download Manager +- Offline-Mode - Bluetooth - Bandwidth Limiter +- Multi-Device Sync - Local Playlisten - Sync Status +- Lock Screen - Backup/Restore + +Phase 3: +- Gapless/Loudness - Visualizer - Waveform +- Crossfade - Smart Shuffle - Speed Control +- Equalizer - Stream Quality - Folder Browsing +- Local Import - Repeat Modes +- Metadata Editor +- Duplicate Detection + +Phase 4: +- Lyrics - Mini-Player - Theme Variants +- Sleep Timer - Gesture Controls - Shortcuts +- Animations - Smart Playlists - Export +- Search History - Collaboration +- Better Browse +``` + +--- + +## ⏱️ Timeline & Aufwand + +| Phase | Focus | Dauer | Team-Größe | Cumulative | +|-------|-------|-------|-----------|-----------| +| **1** | Server MVP | 2-3 W | 1-2 | 2-3 W | +| **2** | Offline + Sync | 4-6 W | 2-3 | 6-9 W | +| **3** | Audio + Local | 4-6 W | 2 | 10-15 W | +| **4** | UX Polish | 3-4 W | 2 | 13-19 W | +| **5+** | Advanced | 2-3 M | 1-2 | 3-5 M | + +**Gesamtschätzung bis Spotify-Parity: ~4-5 Monate** (mit 1-2 Entwickler) + +--- + +## 🎯 Success Criteria pro Phase + +### Phase 1 ✓ +- Server-Streaming stabil (>95% uptime in Test) +- Keine Critical Crashes +- 50+ Tests grün +- Lokal 5 Lieder cachbar + +### Phase 2 +- Offline-Mode funktioniert komplett +- Multi-Device Sync zuverlässig +- Nutzer können 100+ Songs cachen +- Lock Screen Controls arbeiten + +### Phase 3 +- Gapless Playback funktioniert +- Loudness Normalization auf ±2dB +- Local Musik als echte Fallback +- Metadata Editor ohne Crashes + +### Phase 4 +- Lyrics Sync funktioniert +- Sleep Timer robust +- Mini-Player nie freezes +- App fühlt sich "Finished" an + +### Phase 5+ +- Tags funktionieren parallel zu Playlisten +- Auto-Recommendations mit >70% Accuracy +- Podcast Support stabil + +--- + +## ⚠️ Risks & Mitigations + +| Risk | Mitigation | Phase | +|------|-----------|-------| +| Server (Navidrome) Down → App broken | Offline-Mode, Local Fallback | 2 | +| Caching-Bugs verlieren User-Daten | Rigorous Testing, Backup/Restore | 2 | +| Gapless sehr schwer zu implementieren | Early Spike (just_audio support prüfen) | 3 | +| Audio-Quality-Probleme bei Stream | Quality Selection + Bitrate-Tests | 3 | +| Podcast Support braucht viel Code | Optional in Phase 5+, nicht kritisch | 5 | + +--- + +## 🔄 Dependency Tree (Was muss zuerst done sein) + +``` +Phase 1: Server MVP (Foundation) + ↓ +Phase 2: Offline + Caching (Built on 1) + ├─→ Phase 3: Audio Quality (Parallel) + │ ↓ + ├─→ Phase 4: UX Polish (Built on 1-3) + │ ↓ + └─→ Phase 5+: Advanced (Can be Parallel) +``` + +**Können parallel:** Phase 2 + 3 + 4 (nach Phase 1 MVP done) + +--- + +## 📝 Nächste Schritte + +1. ✅ **Brainstorming & Design** (dieses Dokument) +2. → **Implementation Planning** (invoke writing-plans skill) +3. → **Phase 1 Sprint** (2-3 Wochen) +4. → **Phase 2-4 Parallel** (10-12 Wochen) +5. → **Beta Launch** (nach Phase 4) +6. → **Phase 5+ Iterations** (Post-Launch) + +--- + +## 📚 Referenzen + +- Design-Decisions: `/home/dustin/.claude/projects/-home-dustin-mello-dev/memory/project_mello-v3-design.md` +- Feature-Candidates: `/home/dustin/.claude/projects/-home-dustin-mello-dev/memory/project_mello-feature-candidates.md` +- App-Repo: `/home/dustin/mello-dev/app` +- Navidrome-Docs: https://www.navidrome.org/docs/ + +--- + +**Geschrieben:** 2026-08-19 | **Status:** Ready for Implementation Planning