Muzibu Player

Teknik Altyapı Raporu

Bu rapor, Muzibu'nun müzik çalarının arka planda nasıl çalıştığını adım adım anlatır. Mimari yapı, dosya detayları, şarkı çalma akışı, güvenlik, veri toplama, cihaz tanıma ve bellek yönetimi — hepsi tek sayfada.

16.107 Satır JS 20+ API Endpoint 14 Modül ~1.5 MB Toplam JS AES-128 Şifreli

1. Mimari Yapı — Büyük Resim

Muzibu Player, tarayıcı tarafında (client) çalışan JavaScript modüllerinden ve sunucu tarafında (server) çalışan API katmanından oluşur. Aşağıda tüm bileşenler, dosya boyutları, satır sayıları ve görevleri gösterilmektedir.

Tarayıcı Katmanı (Client-Side)

Kullanıcının tarayıcısında çalışan tüm JavaScript dosyaları

~1.5 MB Toplam

HEAD'de Yükleniyor — Sayfa Açılmadan Önce İndirilmesi Gereken Dosyalar (Render Blocking)

player-core.js

384 KB

8.310 satır — Ana motor dosyası

  • HLS.js ile şifreli ses akışı yönetimi
  • Howler.js ile MP3 fallback (yedek sistem)
  • Çalma sırası (queue) yönetimi
  • Sonraki şarkıyı önceden yükleme (preload)
  • Ses akışı sağlık kontrolü (buffer health)
  • Kalite seviyesi yönetimi (ABR)
  • Çapraz geçiş (crossfade) — Şu an kapalı

play-helpers.js

37 KB

1.017 satır — Çalma yardımcıları

  • playAlbum() — Albüm çal
  • playPlaylist() — Playlist çal
  • playGenre() — Türe göre çal
  • playRadio() — Radyo modu
  • playSector() — Sektör bazlı çalma

performance-debug.js

180 KB

3.505 satır — Debug & izleme paneli

  • Donma (freeze) analizi
  • Bellek (memory) izleme
  • Jank tespiti (50ms+ uzun işlemler)
  • Kök sebep analizi

Sadece geliştirme amaçlı — üretimde devre dışı bırakılmalı (~3-4 MB RAM tüketiyor)

Alpine.js Store ('muzibu')

— Tüm modüllerin paylaştığı ortak hafıza alanı

currentSong queue isPlaying volume progress duration shuffle repeat favorites isBuffering

BODY'de Yükleniyor — Sayfa Açıldıktan Sonra Yüklenen Dosyalar (~328 KB)

spot-player.js

564 satır

Reklam sistemi. N şarkıdan sonra araya reklam girer. Sayacı tarayıcıda tutar.

spa-router.js

687 satır

Sayfa geçişlerini müzik kesmeden yönetir. 50 sayfayı önbelleğe alır (LRU).

speed-tester.js

395 satır

İnternet hız testi. Manuel: 100MB, Otomatik: 10MB indirerek ölçer.

buffer-monitor.js

295 satır

Ses akışındaki takılma/donma olaylarını izler. Sorun varsa hız testi tetikler.

device-profiler.js

356 satır

Cihaz parmak izi oluşturur (RAM, CPU, ekran, tarayıcı, dokunmatik).

favorites.js

~200 satır

Beğenme/favorilere ekleme işlemleri. Veriyi tarayıcıda ve sunucuda tutar.

session.js

190 satır

Oturum yönetimi. Çoklu cihaz çıkışı, tüm verileri silerek login'e yönlendirir.

api.js

99 satır

Tüm sunucu isteklerinin merkezi noktası. 401 hatalarında otomatik çıkış yapar.

Harici Kütüphaneler

HLS.js 100 KB — Şifreli ses akışı motoru Howler.js 50 KB — MP3 yedek oynatıcı Alpine.js 45 KB — Reaktif veri yönetimi
HTTP/HTTPS Bağlantısı

Sunucu Katmanı (Server-Side)

Laravel PHP + Redis + MySQL — API endpointleri ve veri işleme

SongStreamController

Şarkı akışı ve dinleme takibi

  • /stream — Şifreli stream URL üretir
  • /track-start — Dinleme başlangıç kaydı
  • /track-hit — 30 sn sonra sayaç artır
  • /track-end — Bitiş kaydı
  • /hls-key — Şifre çözme anahtarı
  • /hls/* — Ses parçaları (segment)

SongController

Şarkı verileri ve listeleme

  • /recent — Son eklenen şarkılar
  • /popular — En çok dinlenenler (Redis 30dk cache)
  • /show — Tek şarkı detayı
  • /audio/cdn — CDN ses dosyası adresi
  • /enc.bin — Şifreleme anahtarı servisi

SignedUrlService

Güvenlik servisi

  • HMAC-SHA256 ile dijital imza
  • Zamana bağlı URL (30-60 dk)
  • Kullanıcıya özel URL (başkası kullanamaz)
  • Parametre doğrulama

Veri & Depolama Altyapısı

Redis Cache — Popüler şarkılar 30dk, şifreleme anahtarları 24 saat MySQL — Kullanıcılar, şarkılar, dinleme kayıtları, abonelikler Storage — HLS ses dosyaları (şifreli .ts segment'leri)

2. Şarkı Çalma Akışı — Adım Adım

Kullanıcı "Çal" butonuna bastığında arka planda 5 aşamalı bir süreç başlar. Her adımda hem güvenlik kontrolleri yapılır, hem veriler toplanır, hem de bir sonraki şarkıya hazırlık yapılır.

Adım 1 — Kullanıcı "Çal" Diyor

0 ms

Önce kullanıcının daha önce kaydettiği tercihler okunur: ses seviyesi, en son nerede kaldığı, hangi şarkıyı dinlediği. Eğer hala çalan bir şarkı varsa, o şarkının tüm izleri tarayıcıdan temizlenir.

Okunan Tercihler

  • Son ses seviyesi
  • Kaldığı çalma sırası ve pozisyonu
  • Favori şarkıları listesi
  • Cihaz profil kimliği

Eski Şarkının Temizliği

  • Eski ses akışı kapatılır
  • Şifreli bağlantı adresi bellekten silinir
  • Ses oynatıcı sıfırlanır
  • Zamanlayıcılar durdurulur (3 adet)

Adım 2 — Sunucu Güvenlik Kontrolü

100 - 400 ms

Tarayıcı sunucuya "bu şarkıyı çalmak istiyorum" der. Sunucu 3 aşamalı kontrol yapar. Her aşamadan geçemeyen istek reddedilir — şarkı çalmaz.

Giriş Yapılmış mı?

Oturum çerezi kontrol edilir. Giriş yapmamışsa reddedilir.

Premium Üye mi?

Abonelik bitiş tarihi kontrol edilir. Süresi dolmuşsa reddedilir.

Şifreli URL Üretimi

Dijital imza ile korunan, süreli (30-60 dk) stream adresi üretilir.

Adım 3 — Şarkı Yükleniyor ve Çalıyor

300 ms - 1.2 sn

Sunucudan gelen şifreli adres çözülür, şarkı parça parça indirilir ve şifresi çözülerek ses çıkışı yapılır. Aynı anda tarayıcıya yeni şarkının tüm bilgileri kaydedilir.

Tarayıcıya Kaydedilen

  • Şarkı bilgisi (ad, sanatçı, kapak, süre, renk)
  • Kilit ekranı kontrolleri (play/pause/ileri/geri)
  • Durum kaydı (sayfa yenilenirse kaldığı yerden devam)
  • Stream adresi geçici belleğe alınır

Başlatılan Zamanlayıcılar

  • 250 ms aralık: İlerleme çubuğu güncelleme
  • 500 ms aralık: Ses akışı sağlık kontrolü
  • 30 sn sonra: Dinleme sayacı güncelleme

Adım 4 — Dinleme Verisi Toplanıyor

Şarkı boyunca

Şarkı çalmaya başladığı anda sunucuya bir dinleme kaydı açılır. 30 saniye sonra "gerçek dinleme" olarak sayılır. Bu, sahte istatistikleri engeller.

Başlangıç Kaydı

Kim, hangi şarkıyı, hangi cihazdan, nereden (albüm/playlist/arama) çalmaya başladı — kaydedilir.

30 sn Sonra

Dinlenme sayısı 1 artar. 30 saniyeden az dinlenen şarkılar sayılmaz — yapay şişirmeyi engeller.

Bitiş Kaydı

Kaç saniye dinlendi, şarkı atlandı mı, neden durdu (bitti / ileri bastı / tab kapattı) — kaydedilir.

Adım 5 — Sonraki Şarkıya Hazırlık

Şarkının %80'inde

Şarkının sonuna yaklaşıldığında, sıradaki şarkı arka planda hazırlanır. Kesintisiz geçiş sağlanır. Reklam sırası geldiyse, reklam da önceden yüklenir.

Stream adresi alınır Şifreleme anahtarı hazırlanır İlk ses parçası indirilir Reklam sırası geldiyse hazırlanır

3. Güvenlik & Yetkilendirme Detayı

Her şarkı isteği 3 katmanlı güvenlik duvarından geçer. Şarkı dosyaları AES-128 şifreleme ile korunur. Aşağıda her katmanın nasıl çalıştığı detaylı açıklanmıştır.

1

Oturum Doğrulama

Kullanıcının tarayıcısındaki oturum çerezi (session cookie) kontrol edilir. Giriş yapmamış veya oturumu sona ermiş kullanıcılar reddedilir.

Çoklu cihaz koruması: Başka bir cihazdan giriş yapıldığında, önceki cihazdaki oturum otomatik sonlandırılır. Tarayıcıdaki tüm kayıtlı tercihler temizlenir ve giriş sayfasına yönlendirilir.

2

Abonelik Kontrolü

Kullanıcının premium abonelik durumu anlık olarak kontrol edilir. Önbelleğe güvenilmez — her seferinde taze sorgu yapılır.

Aktif Premium

Devam eder

Süresi Dolmuş

Reddedilir

Free Kullanıcı

Paket sayfasına gider

3

Şifreleme & İmzalama

Şarkı dosyaları AES-128 ile şifrelenir. Stream adresleri HMAC-SHA256 imza ile korunur ve 30-60 dakika sonra otomatik geçersiz olur. Adres kopyalansa bile çalışmaz.

AES-128 Şifreleme HMAC-SHA256 İmza Süre Dolumu Kullanıcıya Özel

4. Toplanan Dinleme Verileri

Her şarkı dinlendiğinde 3 aşamalı veri toplama süreci işler. Bu sayede en çok dinlenen şarkılar, kullanıcı tercihleri ve dinleme alışkanlıkları analiz edilebilir.

Başlangıç Kaydı

Şarkı başlayınca

  • Hangi şarkı
    Şarkı kimliği
  • Kim dinliyor
    Kullanıcı kimliği
  • Hangi cihaz
    Cihaz profil kimliği
  • Nereden geldi
    Albüm / Playlist / Arama
  • IP adresi
    Coğrafi konum analizi için

5 sn içinde tekrar kaydedilmez

Dinleme Onayı

30 saniye sonra

Dinleme Sayısı +1

Popülerlik sayacı güncellenir

Neden 30 saniye? 5 sn dinleyip geçen kullanıcılar sayılmaz. İstatistiklerin güvenilir olmasını sağlar.

Reklam sayacı: Her onaylanan dinleme, reklam sayacını da artırır (ör: her 10 şarkıda bir reklam).

Bitiş Kaydı

Şarkı bitince

  • Dinleme süresi
    Kaç saniye dinlendi
  • Atlandı mı?
    Atlayarak mı geçti
  • Durma sebebi
    Doğal bitti İleri basıldı Tab kapatıldı

Tab kapatılsa bile veri gönderilir


5. Cihaz Tanıma & Profilleme

Her kullanıcının cihaz özellikleri analiz edilerek benzersiz bir "dijital parmak izi" oluşturulur. Eski/yavaş cihazlar otomatik tespit edilerek ses kalitesi düşürülür ve donmalar önlenir.

Dijital Parmak İzi — Toplanan Bilgiler

Tarayıcı

Chrome, Firefox, Safari...

İşletim Sistemi

Windows, iOS, Android...

RAM

2 GB, 4 GB, 8 GB...

CPU Çekirdek

2, 4, 8 çekirdek...

Ekran

1920x1080, 375x812...

Dokunmatik

Var / Yok

Cihaz Tipi

Masaüstü, Mobil, Tablet

Marka / Model

Samsung, iPhone...

Eski Cihaz Tespiti

RAM2 GB'den az = Kritik
CPU2 çekirdekten az = Kritik
Tarayıcı5+ yıl eski = Uyarı

Otomatik Uyarlama

Ses kalitesiDüşük (64 kbps)
ÖnbellekYarıya indirilir (5 MB)
Sonraki şarkı hazırlığıDevre dışı (RAM tasarrufu)

6. Bellek & Kaynak Yönetimi

Player, kullanıcının tarayıcısında çeşitli bilgileri saklar. Kalıcı veriler sayfa yenilenince bile kalır, geçici veriler sadece o oturum boyunca durur.

Kalıcı Veriler — Sayfa yenilenince bile kalır

Ses Seviyesi

Çalma Durumu

Son şarkı, sıra, pozisyon

Favoriler

Cihaz Kimliği

Reklam Sayacı

Geçici Veriler — Sayfa kapatılınca kaybolur

Aktif Şarkı Bilgisi

HLS Ses Akışı

~20 MB RAM

Preload (Hazırlık)

~20 MB RAM

URL Önbelleği

30 şarkı, 5 dk geçerli

İzleme Verileri

Çıkış Yapılınca Silinen Her Şey

Kullanıcı çıkış yaptığında veya oturumu başka cihazdan sonlandırıldığında, tüm kişisel veriler temizlenir. Sadece cihaz kimliği ve hatırlanan e-posta kalır.

Çalma durumu

Çalma sırası

Favoriler

Ses seviyesi

Oturum verileri


7. Bir Şarkının Tam Yaşam Döngüsü — Zaman Çizelgesi

Bir şarkının "doğumundan ölümüne" kadar tüm adımlar zaman çizelgesi olarak:

0 ms

Çal Komutu

Tercihler okunur (ses, sıra, favori)
Eski şarkının 9 bileşeni temizlenir
100-400 ms

Sunucu Kontrolü

Oturum kontrolü
Premium kontrolü
Şifreli URL üretimi
300 ms - 1.2 sn

Ses Çıkışı Başladı

Şarkı bilgisi, kilit ekranı, zamanlayıcılar kaydedildi
Sunucuya dinleme başlangıç kaydı gönderildi
30 saniye sonra

Dinleme Onaylandı

Dinlenme sayısı +1 artırıldı
Reklam sayacı +1 artırıldı
Şarkının %80'i

Sonraki Şarkı Hazırlanıyor

Sıradaki şarkının stream adresi ve ilk parçası indirildi
Reklam sırası geldiyse hazırlandı
Şarkı sonu

Bitiş Kaydı & Geçiş

Dinleme süresi, atlama durumu, durma sebebi kaydedildi
Döngü başa döner — sonraki şarkı aynı süreçten geçer

Sunucu Tarafı Özet — Her 1 Şarkı İçin

5-7
Veri Okuma
1
Yeni Kayıt
2
Güncelleme
0
Silme