🎵 Muzibu (Tenant 1001) - Sistem Analizi

📅 Tarih: 2025-11-26 | 🎯 Tenant: Muzibu (1001) | 👤 Sistem: Multi-tenant Müzik Platformu

🎹 1. Player Sistemi

Mimarı & Konum

Ana Player: resources/views/themes/muzibu/components/player.blade.php

Sidebar: resources/views/themes/muzibu/components/sidebar.blade.php

🎙️ Özellikler

Audio Teknolojisi: HTML5 Audio API + Alpine.js

İkili Audio Öğesi: Crossfade için 2 element

Dinleme Kaydı: Otomatik (user_id, ip_address, user_agent, device_type)

Formatlar: MP3 (direkt) ve HLS (dönüştürülmüş)

🔐 Authentication

Login: Email + Şifre

Register: Ad, Soyad, Email, Telefon (Tenant 1001), Şifre

Şifre Kriterleri: Min 8 karakter, Büyük harf, Küçük harf, Sayı

💎 2. Subscription/Premium Sistemi

Subscription Plans

Tablo: subscription_plans

Fiyatlandırma: daily, weekly, monthly, quarterly, yearly

Özellikler: has_trial, device_limit, has_analytics, has_priority_support

User Subscriptions

Tablo: subscriptions

Durumlar: active, trial, expired, cancelled, paused, pending_payment

Metodlar: isActive(), isTrial(), daysRemaining(), cancel(), pause(), resume()

📊 3. Dinleme Log Sistemi

SongPlay Model

Tablo: muzibu_song_plays

Kayıtlar: song_id, user_id, ip_address, user_agent, device_type, created_at

Analytics Metodları

getTopSongs($limit, $period) - En çok dinlenenler

getDeviceDistribution($period) - Cihaz dağılımı

getHourlyDistribution($date) - Saatlik dağılım

getUniqueListenersCount($period) - Toplam dinleyici

🎵 4. Müzik Veri Yapısı

Modeller

Artist → Album → Song ← Genre

Song ← SongPlay (dinleme kayıtları)

Playlist ↔ Song (M2M) dengan position

Playlist ↔ Sector, Radio (M2M)

Song Model Özellikleri

HLS Streaming: Lazy conversion + MP3 fallback

Metadata: Duration, bitrate, sample_rate, channels

Encryption: is_encrypted, encryption_key fields

Media: Thumbmaker cover (media_id)

SEO: Schema.org MusicRecording

🔌 5. API Endpoints

Base URL: /api/muzibu/

Endpoint Method Auth Açıklama
/songs/popular GET En çok dinlenenler
/songs/recent GET Son dinlenenler
/songs/{id}/stream GET Stream URL
/songs/{id}/track-play POST Dinleme kaydı
/playlists GET Tüm playlistler
/albums/new-releases GET Yeni çıkanlar

🔒 6. Güvenlik

Authentication

Frontend: Session-based (Sanctum)

API: Sanctum token (stateless)

Admin: Session + Role-based

Log Güvenliği

IP adresi kaydediliyor

User agent kaydediliyor

Device type tespit ediliyor

GDPR-uyumlu (minimal kişisel veri)

⚠️ Eksik Güvenlik Önlemleri

❌ Rate limiting (API'de yoksa)

❌ IP whitelist/blacklist

⚠️ Audio download koruması

🎬 7. HLS Streaming

Dönüşüm Mimarisi

Yöntem: Lazy conversion (isteğe bağlı)

Trigger: İlk stream isteğinde ConvertToHLSJob

Format: M3U8 playlist + TS segments

Fallback: MP3 olarak sunulur

Song HLS Alanları

file_path: Orijinal MP3

hls_path: HLS playlist.m3u8

hls_converted: Dönüştürüldü mü?

encryption_key: İsteğe bağlı şifreleme

🏢 8. Tenant-Aware Yapı

Dinamik Connection

Tüm modeller tenant connection'u otomatik kullanır

Central fallback: Default connection

Çoklu Dil & CSS

Çoklu Dil: HasTranslations trait (JSON)

CSS: Tenant-specific Tailwind CSS

Build: npm run css:all veya css:muzibu

📁 9. Dosya Referansları

Modeller

Modules/Muzibu/app/Models/Song.php

Modules/Muzibu/app/Models/SongPlay.php

Modules/Subscription/app/Models/Subscription.php

Controllers

Modules/Muzibu/app/Http/Controllers/Api/SongController.php

Modules/Muzibu/app/Http/Controllers/Api/SongStreamController.php

Routes & Views

Modules/Muzibu/routes/api.php

resources/views/themes/muzibu/components/player.blade.php