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
Web Audio API, MP3/OGG/WAV/WebM desteği, html5: true, pool size: 5
Adaptive bitrate, enableWorker: true, Safari native fallback aktif
6 saniye otomatik, 1 saniye manuel, dual audio element desteği
Drag & drop sıralama, sonraki 3 şarkı prefetch
Slider, mute toggle, Howler+HLS senkronizasyonu
Off, All, One - cycleRepeat() fonksiyonu mevcut
playRandomSongs() - 50 popüler şarkı rastgele
Mobil player bar, queue panel, sidebar optimizasyonu
playAlbum(), playPlaylist() fonksiyonları aktif
ConvertToHLSJob, ProcessBulkSongHLSJob arka planda çalışıyor
Guest + Non-premium kullanıcılar için 30 saniye preview
Premium üyelik kontrolü, isPremium() backend integration
Kullanıcılar browser console üzerinden direkt stream URL'lerini çıkarabilir!
Hedef: 6-Layer Security System
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)
Alpine.js context'inde isLiked() fonksiyonu erişilemiyor
Çözüm: Global scope'da tanımla veya Alpine.js data'ya ekle
player/core/howler-manager.js (~200 satır)player/core/hls-manager.js (~150 satır)player/core/crossfade.js (~180 satır)
player/features/queue-manager.js (~250 satır)
player/features/auth-manager.js (~300 satır)
player/features/favorites-manager.js (~120 satır)
app/Http/Middleware/StreamRateLimit.php (YENİ)routes/api.php (GÜNCELLE)player/security/fingerprint.js (YENİ)Modules/Muzibu/app/Services/DeviceFingerprintService.php (YENİ)player/features/waveform.js (YENİ)
player/features/equalizer.js (YENİ)
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
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)
Mevcut users tablosu yeterli.
Device fingerprint Redis'te saklanacak (geçici data).
Premium kontrolü mevcut subscriptions tablosu ile yapılıyor.
| 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 |
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