Temel player mantığı - play, pause, next, previous, queue management
HLS.js ve Howler.js yönetimi, crossfade, streaming
Login, register, logout, forgot password
Like/unlike, favorilere ekleme/çıkarma
Form validasyonu - email, password, phone, name
Toast, theme, SPA navigation, drag-drop
Cache, share, HLS prefetch
Sorun: 2300+ satır tek dosyada. Her değişiklikte tüm dosya reload olur.
Etki:
Sorun: Bazı fonksiyonlar 2 kez tanımlanmış!
validateName() → 2 kez tanımlı (line ~500, ~1800)
validatePassword() → 2 kez tanımlı (line ~600, ~1900)
Risk: Hangisi çalışıyor? Biri güncellenirse diğeri?
Sorun: muzibuApp() her şeyi biliyor, her şeyi yapıyor.
Aynı fonksiyon içinde:
Toplam: 2250 satır (aynı kod, modüler yapıda)
1. muzibu-cache.js oluştur (clearCache)
2. muzibu-validators.js oluştur (11 validation fonksiyonu)
3. muzibu-formatters.js oluştur (formatTime, formatPhone)
4. Test et → Çalışıyorsa player'dan sil
1. muzibu-toast.js (showToast)
2. muzibu-theme.js (toggleTheme)
3. muzibu-router.js (navigateTo, loadPage)
4. muzibu-dragdrop.js (dragStart, dragOver, drop, dragEnd)
5. Test et
1. muzibu-auth.js (6 auth fonksiyonu)
2. muzibu-favorites.js (4 favorite fonksiyonu)
3. Test et
1. muzibu-audio.js (HLS/Howler engine)
2. muzibu-queue.js (Queue management)
3. muzibu-player.js (Sadece core player)
4. Kapsamlı test!
Modüller arası state paylaşımı nasıl olacak?
Çözüm: Alpine.js Store veya Event Bus kullan
// Alpine Store
Alpine.store('player', {
isPlaying: false,
currentSong: null
});
// Başka modülden erişim
Alpine.store('player').isPlaying = true;
Modüller birbirine bağımlı olabilir (player → audio → queue)
Çözüm: Import sırası önemli! Script tag sıralaması:
1. Utils (cache, validators)
2. UI (toast, theme, router)
3. Features (auth, favorites)
4. Core (audio, queue, player)
Refactoring sırasında mevcut kod bozulabilir
Önlem: