Sistem Durumu Özeti
Basit Anlatım (Herkes İçin)
Şu anda ne var?
Sistemde "Sektör" (Sector) yapısı mevcut. Örneğin: Cafe, Restaurant, Gym, SPA gibi sektörler var.
Her sektörün kendi playlist'leri ve radyoları var. Yani temel yapı hazır, çalışıyor.
Çalışan Özellikler:
- Sektörler listelenebiliyor (/sectors sayfası)
- Her sektörün detay sayfası var (/sectors/cafe)
- Sektörlere playlist ve radyo atanabiliyor
- Admin panelinde yönetilebiliyor
Ne eksik?
Spotify Business'taki gibi filtreler yok. Örneğin Cafe sektöründe "Acoustic", "Bossa Nova", "Chill", "Upbeat" gibi
seçenekler yok. Ayrıca kullanıcı profili ile sektör bağlantısı yok (kullanıcı hangi sektörde çalışıyor bilgisi).
Eksik Özellikler:
- Filtre sistemi (Acoustic, Chill, Upbeat vb.)
- Tag sistemi (playlist'leri etiketleme)
- Kullanıcı-Sektör bağlantısı
- Spotify-style scrollable frontend
Ne yapacağız?
Sisteme filtre ve tag yapısı ekleyeceğiz. Kullanıcı profili ile sektör bağlantısı kuracağız.
Frontend'i Spotify Business gibi yapacağız (scroll yaparak tüm içerik görünecek).
Toplam 7 adımda tamamlanacak.
Beklenen Sonuç:
Kullanıcı Cafe sektörü seçtiğinde, üstte "Discover", "All", "Acoustic", "Bossa Nova" gibi filtreler görünecek. Tıkladığında o tag'e sahip playlist'ler grid halinde (kutu kutu) listelenecek. Scroll yaparak tüm içerik görülebilecek, sayfa geçişi olmayacak.
Teknik Detaylar: Mevcut Altyapı
1. Database Tabloları (Mevcut)
muzibu_sectors
muzibu_playlistables
muzibu_genres
users (Tenant DB)
2. Laravel Model'ler (Mevcut)
Modules\Muzibu\App\Models\Sector
✓ MEVCUT
playlists() (polymorphic via playlistables),
radios() (many-to-many)
Modules/Muzibu/app/Models/Sector.phpModules\Muzibu\App\Models\Genre
✓ MEVCUT
songs() (hasMany),
playlists() (polymorphic via playlistables)
Modules/Muzibu/app/Models/Genre.phpModules\Muzibu\App\Models\Playlist
✓ MEVCUT
sectors(),
genres(),
radios(),
corporates() (hepsi morphedByMany)
getAllDistributions() - Tüm ilişkileri tek sorguda getirirModules/Muzibu/app/Models/Playlist.php3. Controller'lar (Mevcut)
SectorController (Front)
index() - Listeshow($slug) - DetayapiIndex() - SPA APIapiShow($slug) - SPA DetailSectorController (API)
index() - JSON listeplaylists($id) - Sektör playlist'lerisongs($id) - Sektör şarkılarıAdmin Livewire
4. Route'lar (Mevcut)
5. Frontend View'lar (Mevcut)
resources/views/themes/muzibu/sectors/index.blade.php
✓
resources/views/themes/muzibu/sectors/show.blade.php
✓
Eksik Olan Yapılar
1. Filtre/Tag Sistemi
Spotify Business'taki gibi "Acoustic", "Bossa Nova", "Chill", "Upbeat" gibi filtreler yok. Playlist'leri etiketlemek için tag sistemi kurulmalı.
- • Tablo:
muzibu_tags(id, name, slug, type, is_active) - • Pivot:
muzibu_playlist_tag(playlist_id, tag_id) - • Model:
Tag.php(HasTranslations trait ile) - • İlişki:
Playlist::tags()(belongsToMany)
2. Kullanıcı-Sektör Bağlantısı
Kullanıcı profilinde "primary_sector_id" field'ı yok. Kullanıcının hangi sektörde çalıştığı bilgisi saklanmalı.
- • Migration:
add_primary_sector_to_users - • Field:
primary_sector_id(nullable, foreign key) - • İlişki:
User::primarySector()(belongsTo)
3. Filtre API Endpoint'leri
Sektör + tag kombinasyonuyla playlist getiren API endpoint'i yok.
- •
GET/api/sectors/{id}/tags → Sektörün tag'lerini listele - •
GET/api/sectors/{id}/playlists?tag={tagSlug} → Filtrelenmiş playlist'ler
4. Spotify-Style Frontend Tasarım
Mevcut tasarım basit liste görünümü. Spotify Business gibi scrollable grid layout gerekli.
- • Üstte sektör seçici butonlar (Cafe, Restaurant, Gym...)
- • Hero section (sektör adı + cover)
- • Filter butonlar (Discover, All, Acoustic, Bossa Nova...)
- • Grid layout (6 kolon, responsive)
- • Playlist kartları (cover + başlık + açıklama)
- • Scroll ile tüm içerik görünsün (sayfa geçişi yok)
Yapılacaklar (Adım Adım)
Tag Sistemi Migration Oluştur
Playlist'leri etiketlemek için tag tablosu ve pivot tablo oluştur.
id (bigint, PK)name (JSON - çoklu dil)slug (JSON - çoklu dil)type (string - mood/style/tempo/genre)color (string - hex code, nullable)icon (string - FA icon class, nullable)is_active (boolean)timestampsid (bigint, PK)playlist_id (FK → muzibu_playlists)tag_id (FK → muzibu_tags)timestampsTag Model Oluştur
Laravel model oluştur, çoklu dil ve ilişkiler ekle.
HasTranslations, Sluggable, SoftDeletestag_id['name', 'slug']playlists() (belongsToMany → Playlist)active(), ofType($type)Playlist Model'e Tag İlişkisi Ekle
Playlist model'e tags() ilişkisi ekle.
tags()return $this->belongsToMany(Tag::class, 'muzibu_playlist_tag', 'playlist_id', 'tag_id');protected $with = ['tags']; (opsiyonel)User Model'e Sector Field Ekle
Kullanıcı profiline primary_sector_id field'ı ekle.
$table->unsignedBigInteger('primary_sector_id')->nullable();$table->foreign('primary_sector_id')->references('sector_id')->on('muzibu_sectors');protected $fillable → 'primary_sector_id' ekleprimarySector() (belongsTo → Sector, tenant connection)Seeder Oluştur (Tag ve Sector Verileri)
Demo veriler için seeder oluştur.
- Cafe: Acoustic, Bossa Nova, Chill, Jazz, Lo-Fi, Upbeat
- Restaurant: Classical, Dinner, Elegant, Romantic, Soft Jazz
- Gym: Energetic, HIIT, Motivational, Power, Workout
- SPA: Ambient, Calm, Meditation, Relaxation, Zen
API Endpoint'leri Ekle
Tag filtreleme için API method'ları ekle.
tags($sectorId) → Sektörün tüm tag'lerini getirplaylistsByTag($sectorId, $tagSlug) → Tag'e göre filtrelenmiş playlist'lerGET /api/sectors/{id}/tagsGET /api/sectors/{id}/playlists?tag={slug}Frontend Tasarım (Spotify-Style)
Mevcut view'ları Spotify Business gibi scrollable grid'e çevir.
- Üstte: Sektör seçici butonlar (horizontal scroll)
- Hero section: Sektör adı + cover + açıklama
- Filter butonlar: "Discover", "All" + tag'ler (horizontal)
- Grid layout: 6 kolon (xl), 4 kolon (lg), 3 kolon (md), 2 kolon (sm)
- Playlist kartları: Cover + başlık + açıklama (hover efekti)
- Alpine.js ile tag filtreleme (sayfa yenileme yok)
- Smooth scroll, lazy loading (görseller için)
Özet ve Sonuç
Sistemin Mevcut Durumu:
- Sector altyapısı tamamen mevcut - Model, migration, controller, route, view hepsi var ve çalışıyor.
- Polymorphic ilişki sistemi kurulu - playlistables tablosu sector, genre, radio ilişkilerini yönetiyor.
- API endpoint'leri hazır - Frontend ve mobile için JSON API mevcut.
Eksik Olan ve Yapılacaklar:
- Tag sistemi kurulacak - Playlist'leri "Acoustic", "Chill" gibi etiketlerle işaretlemek için.
- User-Sector bağlantısı eklenecek - Kullanıcı hangi sektörde çalışıyor bilgisi.
- Frontend Spotify-style olacak - Scrollable grid layout, filter butonları, smooth UX.
İş Planı:
Sonuç:
Temel altyapı %80 hazır. Sadece tag sistemi, user-sector bağlantısı ve frontend tasarımı eklenecek. 7 adımda sistem tamamen Spotify Business tarzında çalışır hale gelecek.