🎵 Muzibu Player - Implementation Plan

📅 Tarih: 2025-11-28 | 🎯 Tenant: muzibu.com (1001) | 👤 Planlama: Claude AI
68% Complete Player Focus

📊 Mevcut Durum Analizi

📁 Player Dosya Yapısı

Konum: public/themes/muzibu/js/player/muzibu-player.js

Boyut: 2,040 satır (81KB)

Fonksiyon Sayısı: 39

Sorun: Monolitik yapı - modülerleştirme gerekiyor

✅ Tamamlanmış Özellikler (17/37)

✓ TAMAMLANDI

🔊 Howler.js 2.2.4

Web Audio API, MP3/OGG/WAV/WebM desteği, html5: true, pool size: 5

✓ TAMAMLANDI

📡 HLS.js Streaming

Adaptive bitrate, enableWorker: true, Safari native fallback aktif

✓ TAMAMLANDI

🔀 Crossfade Sistemi

6 saniye otomatik, 1 saniye manuel, dual audio element desteği

✓ TAMAMLANDI

📋 Queue Yönetimi

Drag & drop sıralama, sonraki 3 şarkı prefetch

✓ TAMAMLANDI

🔊 Volume Kontrol

Slider, mute toggle, Howler+HLS senkronizasyonu

✓ TAMAMLANDI

🔁 Repeat Modları

Off, All, One - cycleRepeat() fonksiyonu mevcut

✓ TAMAMLANDI

🔀 Shuffle

playRandomSongs() - 50 popüler şarkı rastgele

✓ TAMAMLANDI

📱 Responsive Design

Mobil player bar, queue panel, sidebar optimizasyonu

✓ TAMAMLANDI

🏷️ Album/Playlist/Genre

playAlbum(), playPlaylist() fonksiyonları aktif

✓ TAMAMLANDI

🔄 HLS Conversion Jobs

ConvertToHLSJob, ProcessBulkSongHLSJob arka planda çalışıyor

✓ TAMAMLANDI

⏱️ 30-Second Preview

Guest + Non-premium kullanıcılar için 30 saniye preview

✓ TAMAMLANDI

💎 Premium System

Premium üyelik kontrolü, isPremium() backend integration

🔴 Kritik Sorunlar

⚠️ GÜVENLİK AÇIĞI: Stream Endpoint Public Erişilebilir

Kullanıcılar browser console üzerinden direkt stream URL'lerini çıkarabilir!

Hedef: 6-Layer Security System

🔧 MONOLİTİK PLAYER DOSYASI

2,040 satırlık tek dosya - bakım ve geliştirme zorluğu

Hedef: Modüler yapıya geçiş (8-10 ayrı dosya)

❌ isLiked() Fonksiyon Hatası

Alpine.js context'inde isLiked() fonksiyonu erişilemiyor

Çözüm: Global scope'da tanımla veya Alpine.js data'ya ekle

🎯 Yapılacaklar Listesi (Player Odaklı)

Faz 1: Kritik Düzeltmeler (Yüksek Öncelik)

Faz 2: Player Modülerleştirme (Orta Öncelik)

Faz 3: Security Katmanları (Kritik Öncelik)

Faz 4: Gelişmiş Özellikler (Düşük Öncelik)

⚙️ Teknik Detaylar

Önerilen Dosya Yapısı (Modüler)

public/themes/muzibu/js/ ├── muzibu-store.js (Alpine global store) ├── player/ │ ├── core/ │ │ ├── howler-manager.js (Howler.js wrapper) │ │ ├── hls-manager.js (HLS.js wrapper) │ │ ├── crossfade.js (Crossfade logic) │ │ └── audio-engine.js (Unified audio interface) │ ├── features/ │ │ ├── queue-manager.js (Queue + drag&drop) │ │ ├── auth-manager.js (Login/Register modals) │ │ ├── favorites-manager.js (Like/unlike) │ │ ├── waveform.js (WaveSurfer.js) │ │ └── equalizer.js (10-band EQ) │ ├── security/ │ │ ├── fingerprint.js (FingerprintJS) │ │ └── signed-url.js (URL signing) │ └── muzibu-player.js (Main orchestrator, ~400 satır) ├── ui/ │ ├── muzibu-theme.js │ └── muzibu-toast.js └── utils/ └── muzibu-cache.js

Backend Dosya Yapısı

Modules/Muzibu/app/ ├── Http/ │ ├── Controllers/ │ │ └── Api/ │ │ ├── SongStreamController.php (MEVCUT - GÜNCELLE) │ │ └── FavoritesController.php (MEVCUT) │ └── Middleware/ │ ├── StreamRateLimit.php (YENİ) │ └── DeviceLimitCheck.php (YENİ) ├── Services/ │ ├── DeviceFingerprintService.php (YENİ) │ └── StreamSecurityService.php (YENİ) └── Jobs/ ├── ConvertToHLSJob.php (MEVCUT - GÜNCELLE) └── ProcessBulkSongHLSJob.php (MEVCUT)

Migration İhtiyacı

✅ Migration GEREK YOK!

Mevcut users tablosu yeterli.

Device fingerprint Redis'te saklanacak (geçici data).

Premium kontrolü mevcut subscriptions tablosu ile yapılıyor.

🎯 Öncelik Sırası (Execution Order)

Sıra Görev Öncelik Süre Bağımlılık
1 isLiked() fonksiyon hatası düzeltme URGENT 15 dk Yok
2 500 Server Error debug (Stream endpoint) URGENT 30 dk Yok
3 Rate Limiting implementation URGENT 1 saat Yok
4 Signed URLs + Expiry URGENT 45 dk #3
5 Player modülerleştirme (Core) HIGH 3 saat Yok
6 Queue Manager ayrıştırma MEDIUM 1.5 saat #5
7 Device Fingerprinting URGENT 2 saat Yok
8 HLS AES-128 Encryption URGENT 2 saat #4
9 WaveSurfer.js integration LOW 2 saat #5
10 10-Band Equalizer LOW 3 saat #5

🎬 Sonuç & Sonraki Adımlar

📊 Özet

Toplam Görev: 10

Kritik/Urgent: 5 görev (~6.5 saat)

Orta Öncelik: 3 görev (~4.5 saat)

Düşük Öncelik: 2 görev (~5 saat)

Tahmini Toplam Süre: 16 saat

İlk 3 Adım (Hemen Başlanacak)

⚠️ Önemli Notlar

  • Migration OLUŞTURMAYACAĞIZ (mevcut tablolar yeterli)
  • Tenant-Aware: Sadece Tenant 1001 (muzibu.com) için aktif
  • Users tablosuna DOKUNMAYACAĞIZ
  • Modülerleştirme AŞAMALI yapılacak (player çalışır durumda kalacak)
  • Her özellik için TEST yapılacak