🎵 Muzibu Teması - Kalan İşler

📅 Tarih: 2025-11-24 | 🎯 Tenant: muzibu.com (1001) | 💚 Tema: Spotify-Style Müzik Platformu

📊 Özet Durum

Tamamlanan

40%

Kalan İşler

60%

Kritik Öncelik

5 Görev

Tahmini Süre

3-4 Gün

⚠️ Önemli Not

Şu anda statik UI/UX tasarımı tamamlandı. Sırada gerçek müzik akışı, veritabanı entegrasyonu ve dinamik içerik yer alıyor. Tüm kalan işler B2B müzik platformu için kritik özelliklerdir.

✅ Tamamlanan İşler

1. Spotify-Style Layout

Sol sidebar, üst bar, alt player ile tam ekran responsive layout.

  • 64-karakter genişliğinde sol navigasyon menüsü
  • Üst bar: Arama, kullanıcı menüsü, premium butonu
  • Alt sabit player: Progress bar, kontroller, volüm
  • Dark mode desteği (localStorage ile)

2. Hero Carousel

Ana sayfada 3 slaytlı otomatik carousel (5 saniyede bir kayar).

  • Smooth transition animasyonları
  • Dot navigation (manuel geçiş)
  • Responsive resimler

3. Horizontal Scroll Sections

Spotify tarzı yatay kayan içerik kartları (Playlists, Albums, Artists).

  • "Jump Back In" bölümü (son dinlenenler)
  • "New Albums" bölümü
  • "Popular Playlists" bölümü
  • Mouse wheel ile kaydırma desteği

4. Context Menus

Sağ tık menüleri: Share, Queue, Artist sayfasına git.

  • Playlist/Album kartlarına sağ tık
  • Fade-in animasyonu
  • Dışarıya tıklayınca kapanma

5. Favorite System UI

Kalp ikonları ile favorilere ekleme (sadece UI, backend yok).

  • Tüm kartlarda kalp ikonu
  • Tıklayınca kalp doluyor
  • LocalStorage ile kayıt (geçici)

6. Player UI

Tam özellikli müzik player görünümü (henüz gerçek ses yok).

  • Play/Pause, Prev/Next butonları
  • Shuffle ve Repeat butonları
  • Progress bar (seek edilebilir)
  • Volume slider
  • Şarkı/Artist bilgisi gösterimi
  • Pulse animasyonu (çalan şarkı)

7. Guest vs Member Content

Giriş yapmış/yapmamış kullanıcılar için farklı içerik.

  • Guest: Üst banner (7 gün ücretsiz deneme)
  • Guest: Popüler playlistler + Yeni albümler + Tür kartları
  • Member: "Jump Back In" + Horizontal scrolls
  • Alpine.js isLoggedIn kontrolü

8. Theme-Aware Auth System

Login, Register, Forgot Password, Reset Password sayfaları.

  • Muzibu temasına özel Spotify-style auth sayfaları
  • İxtif temasına özel endüstriyel auth sayfaları
  • Dark/Light mode toggle (localStorage ile)
  • ThemeService ile dinamik view yükleme
  • Fallback sistemi (default Laravel auth views)

🔥 Kritik Öncelik (Hemen Yapılmalı)

1. SPA Navigation KRİTİK

SPA (Single Page Application - Sayfa yenilenmeden gezinme) sistemi. Şu anda sayfalar arası geçişte müzik duruyor çünkü sayfa yeniden yükleniyor.

Yapılacaklar:

  • Client-side routing (JavaScript ile URL yönetimi)
  • window.history.pushState() ile sayfa değiştirme
  • AJAX ile içerik yükleme (sayfa reload yok)
  • Player state'i koruma (müzik kesintisiz devam)
  • Back/Forward browser butonları çalışmalı

Beklenen Sonuç: Spotify gibi kesintisiz müzik deneyimi.

2. Gerçek Müzik Playback KRİTİK

Player şu anda sadece UI. Gerçek müzik dosyalarını çalabilmeli. HLS (HTTP Live Streaming - Apple'ın akış protokolü) ile adaptive bitrate streaming.

Yapılacaklar:

  • HLS.js kütüphanesi entegrasyonu (zaten dahil)
  • Audio element ile HLS stream bağlama
  • Play/Pause/Seek fonksiyonlarını gerçek audio'ya bağlama
  • Şarkı değiştiğinde yeni stream yükleme
  • Hata yönetimi (stream bulunamadı, network hatası)
  • Loading durumu gösterme
  • MP3 fallback (HLS yoksa direkt MP3 çalma)

Beklenen Sonuç: Gerçek müzik dosyalarını kesintisiz akış yapabilme.

3. Database Schema & Migrations KRİTİK

Müzik verileri için veritabanı yapısı. Şu anda Modules/Muzibu altında migration'lar var ama henüz çalıştırılmadı.

Yapılacaklar:

  • Mevcut migration'ları kontrol et (artists, albums, songs, playlists, genres, sectors)
  • Tenant migration'ları çalıştır: php artisan tenants:migrate
  • Central migration'ları çalıştır: php artisan migrate
  • İlişkileri test et (HasMany, BelongsTo, BelongsToMany)
  • Seed data oluştur (demo müzikler, playlistler)

Beklenen Sonuç: Database yapısı hazır, demo veriler yüklü.

4. Backend API Endpoints KRİTİK

Frontend'in verileri çekebilmesi için API endpoint'leri.

Yapılacaklar:

  • GET /api/playlists - Playlist listesi
  • GET /api/playlists/{id} - Playlist detayı (şarkılarla)
  • GET /api/albums - Albüm listesi
  • GET /api/albums/{id} - Albüm detayı (şarkılarla)
  • GET /api/songs/recent - Son dinlenen şarkılar
  • GET /api/genres - Tür listesi
  • GET /api/sectors - Sektör listesi
  • Tenant-aware endpoint'ler (her tenant kendi verilerini görsün)
  • Pagination (sayfa başına 20-50 kayıt)

Beklenen Sonuç: Frontend dinamik veri çekebilecek.

5. Volume Normalization KRİTİK

Farklı şarkıların ses seviyesi farklı olabilir. B2B müzik platformu için ses dengelemesi şart.

Yapılacaklar:

  • Web Audio API (Tarayıcıda gelişmiş ses işleme) ile GainNode oluşturma
  • Her şarkının loudness değerini database'de saklama
  • Şarkı değiştiğinde GainNode'u ayarlama
  • Hedef loudness: -14 LUFS (Spotify standardı)
  • Kullanıcı volüm ayarı + normalization birleşimi

Beklenen Sonuç: Tüm şarkılar aynı ses seviyesinde çalacak.

🔧 Yüksek Öncelik (1-2 Hafta İçinde)

6. Playlist Detail Page Yüksek

Playlist'e tıklayınca açılacak detay sayfası (Spotify'daki gibi).

Yapılacaklar:

  • Playlist header: Cover image, isim, açıklama, şarkı sayısı
  • Şarkı listesi: Sıra no, kapak, isim, artist, albüm, süre
  • Play butonu (playlist'i baştan çalmaya başla)
  • Her şarkının yanında context menu (add to queue, add to playlist)
  • Hover efekti: Üzerine gelince play butonu görünsün

Beklenen Sonuç: Kullanıcı playlist detaylarını görebilecek ve çalabilecek.

7. Album Detail Page Yüksek

Albüm detay sayfası (Playlist detayına benzer ama artist bilgisi daha ön planda).

Yapılacaklar:

  • Album header: Cover, isim, artist, yıl, toplam süre
  • Şarkı listesi (track numarası ile)
  • Artist bilgisi (artist sayfasına link)
  • Play all butonu

Beklenen Sonuç: Albüm detayları görüntülenebilecek.

8. Queue Management Yüksek

Sırada hangi şarkılar var? Sırayı yönetme (silme, sıralama).

Yapılacaklar:

  • Sağ tarafta açılır Queue sidebar
  • Şu an çalan şarkı en üstte vurgulu
  • Sıradaki şarkılar altında listelenir
  • Drag & drop ile sıralama değiştirme
  • Şarkıyı sıradan çıkarma (X butonu)
  • Queue'yu temizleme butonu

Beklenen Sonuç: Kullanıcı dinleme sırasını görebilecek ve düzenleyebilecek.

9. Search Functionality Yüksek

Üst bardaki arama çubuğu çalışmalı. Meilisearch (Hızlı arama motoru, Laravel Scout ile entegre) ile gerçek zamanlı arama.

Yapılacaklar:

  • Meilisearch kurulumu (zaten sistemde olabilir)
  • Laravel Scout konfigürasyonu
  • Song, Album, Playlist, Artist modellerini indexleme
  • Arama API endpoint: GET /api/search?q=...
  • Dropdown ile gerçek zamanlı sonuçlar (yazdıkça göster)
  • Kategori bazlı sonuçlar (Songs, Albums, Playlists, Artists)
  • Klavye navigasyonu (arrow keys ile gezinme, enter ile seçme)

Beklenen Sonuç: Kullanıcı yazdıkça sonuçları görecek.

10. Favorites Backend Yüksek

Kalp ikonları şu anda sadece localStorage kullanıyor. Database'e kaydetmeliyiz.

Yapılacaklar:

  • Polymorphic relation: favorites tablosu (user_id, favoritable_type, favoritable_id)
  • API endpoint: POST /api/favorites (favorilere ekle)
  • API endpoint: DELETE /api/favorites/{id} (favorilerden çıkar)
  • API endpoint: GET /api/favorites (kullanıcının favorileri)
  • Frontend'de kalp ikonlarını backend'e bağlama
  • Favoriler sayfası (kullanıcının tüm favorileri)

Beklenen Sonuç: Favoriler kalıcı olacak, hesaba bağlı olacak.

⚙️ Orta Öncelik (2-4 Hafta İçinde)

11. Recently Played Tracking Orta

Kullanıcının son dinlediği şarkıları takip etme.

Yapılacaklar:

  • song_plays tablosuna kayıt atma (user_id, song_id, played_at)
  • Şarkı %50'sini geçince "dinlendi" sayma
  • "Jump Back In" bölümünde son dinlenenleri gösterme
  • Duplicate kaydı önleme (aynı şarkıyı arka arkaya dinlediyse)

Beklenen Sonuç: "Jump Back In" bölümü dinamik olacak.

12. Genre & Sector Pages Orta

Türlere ve sektörlere göre filtreleme sayfaları.

Yapılacaklar:

  • /genres/{slug} sayfası (örn: /genres/pop)
  • /sectors/{slug} sayfası (örn: /sectors/cafe-restaurant)
  • Filtrelenmiş playlist/albüm listesi
  • Sidebar'da aktif genre/sector vurgulama

Beklenen Sonuç: Kullanıcılar sektörlerine özel müzik bulabilecek.

13. Repeat Modes Orta

Repeat butonunun gerçekten çalışması (off, all, one).

Yapılacaklar:

  • Repeat state: off, all, one
  • Repeat butonu tıklanınca state değişsin
  • Şarkı bitince repeat mode'a göre davranış:
    • off: Sıradaki şarkıya geç, sıra bitince dur
    • all: Sıradaki şarkıya geç, sıra bitince başa dön
    • one: Aynı şarkıyı tekrar çal

Beklenen Sonuç: Kullanıcı tekrar modunu seçebilecek.

14. Shuffle Mode Orta

Karıştırma modu (queue'yu rastgele sırala).

Yapılacaklar:

  • Shuffle butonuna tıklayınca queue'yu karıştır
  • Fisher-Yates algoritması ile rastgele sıralama
  • Şu an çalan şarkı yerinde kalsın
  • Shuffle kapatınca orijinal sıraya dön

Beklenen Sonuç: Kullanıcı karışık dinleme yapabilecek.

15. Device Limit Enforcement Orta

B2B plan: Aynı anda max X cihaz dinleyebilir (örn: 5 cihaz).

Yapılacaklar:

  • Device fingerprinting (browser, IP, user agent ile unique ID)
  • active_sessions tablosu (user_id, device_id, last_active)
  • Play'e bastığında aktif cihaz sayısını kontrol et
  • Limit aşıldıysa hata göster: "Max X cihaz aktif olabilir"
  • Aktif cihazları listeleme sayfası (kullanıcı hangi cihazlardan dinliyor?)
  • Cihazı deaktif etme butonu

Beklenen Sonuç: Şirketler plan limitlerini aşamayacak.

🎨 Düşük Öncelik (Sonradan Eklenebilir)

16. Artist Pages Düşük

Artist detay sayfası (discography, bio, top songs).

17. Playlist Creation Düşük

Kullanıcılar kendi playlistlerini oluşturabilsin.

18. Lyrics Display Düşük

Şarkı sözlerini gösterme (sync'li veya statik).

19. Admin Panel Düşük

Müzik yönetimi için admin paneli (şarkı yükleme, playlist düzenleme).

20. Analytics Dashboard Düşük

Şirketler için dinleme istatistikleri (en çok dinlenen şarkılar, sektör analizi).

🚀 Önerilen Çalışma Sırası

Faz 1: Temel Fonksiyonellik (1. Hafta)

Önce müzik çalabilmeli, sonra güzelleştiririz.

  1. Database migrations çalıştır + seed data
  2. Backend API endpoints oluştur (playlists, albums, songs)
  3. Gerçek müzik playback (HLS.js entegrasyonu)
  4. Volume normalization

Faz 2: Kesintisiz Deneyim (2. Hafta)

Sayfa geçişlerinde müzik devam etmeli.

  1. SPA navigation sistemi
  2. Player state persistence
  3. Queue management
  4. Repeat & Shuffle modes

Faz 3: İçerik Sayfaları (3. Hafta)

Detay sayfaları ve keşif.

  1. Playlist detail page
  2. Album detail page
  3. Search functionality (Meilisearch)
  4. Genre & Sector pages

Faz 4: Kullanıcı Özellikleri (4. Hafta)

Kişiselleştirme ve takip.

  1. Favorites backend
  2. Recently played tracking
  3. Device limit enforcement