Theme System

Muzibu Teması

Spotify-Style Modern Müzik Platformu Teması

⚡ Hızlı Özet

110

Blade Dosyası

1.4MB

Tema Boyutu

25

Klasör

~7k

Satır (Components)

📝 Basit Anlatım (Herkes İçin)

Muzibu Teması Nedir?

Muzibu teması, Spotify'dan ilham alınarak tasarlanmış modern bir müzik platformu temasıdır. Karanlık mod (dark theme) kullanır, turuncu-mercan renk paleti ile canlı ve enerjik bir görünüm sunar.

Tema, tamamen responsive tasarımdır. Yani telefon, tablet ve bilgisayarda farklı görünümler sunar, her cihazda optimize şekilde çalışır.

Tema Nasıl Çalışır?

  1. 1 Grid Layout Sistemi: Sayfa 3 ana alana bölünmüş - Sol sidebar (navigasyon), orta içerik, sağ sidebar (önizleme/öneriler)
  2. 2 Component Sistem: Header, footer, player, sidebar gibi parçalar ayrı component'ler olarak tasarlanmış, tekrar kullanılabilir
  3. 3 Tailwind CSS: Utility-first CSS framework ile styling. Her renk, spacing, font size hazır sınıflarla
  4. 4 Cache-Driven: Homepage verileri 5 dakika cache'lenir, performans optimize edilir
  5. 5 Dinamik Renkler: Her şarkı/album için unique gradient renkleri otomatik oluşturulur

Ana Görsel Özellikler

🎨 Renk Paleti

Ana renk: #FF7F50 (Muzibu Coral)

  • • Spotify Black: #121212 (Arka plan)
  • • Spotify Dark: #181818 (Kartlar)
  • • Spotify Green: #1DB954 (Aksanlar)
  • • Coral gradientler: Turuncu → Pembe → Mor

Animasyonlar

  • Shimmer: Card'larda hover efekti, parlama animasyonu
  • Gradient Flow: Logo ve butonlarda akan gradient
  • Hover Scale: Kartlar hover'da büyür (scale 1.05)
  • Fade Transitions: Smooth geçişler (opacity, transform)

📱 Responsive Breakpoints

  • Mobile (< 768px): Tek kolon, bottom nav
  • Tablet (768px - 1024px): Sağ sidebar görünür
  • Desktop (1024px+): Sol + Sağ sidebar
  • Large (1280px+): Geniş sidebar'lar

🎯 Grid Layout

3-satır layout:

  • Header: 64px sabit (logo, search, auth)
  • Main: 1fr esnek (içerik alanı)
  • Player: 90px sabit (müzik player)

Kullanıcı Deneyimi

  • Karanlık mod: Göz yormayan, modern görünüm
  • Hızlı yükleme: Cache, lazy loading, optimize görseller
  • Kolay navigasyon: Sol sidebar sabit, her zaman erişilebilir
  • Canlı önizleme: Sağ sidebar'da hover ile preview
  • Touch friendly: Mobilde swipe, drag gesture'lar

🔧 Teknik Detaylar (Geliştiriciler İçin)

Dosya Yapısı

resources/views/themes/muzibu/                (1.4MB, 110 dosya)
├── layouts/
│   ├── app.blade.php                (41KB - Main layout + Alpine init)
│   ├── header.blade.php
│   ├── footer.blade.php
│   └── notification.blade.php
├── components/                     (39 component, ~7k satır)
│   ├── header.blade.php            (73KB - Navigation, search, auth)
│   ├── footer.blade.php            (17KB - Footer links, stats)
│   ├── player.blade.php            (19KB - Music player UI)
│   ├── sidebar-left.blade.php      (20KB - Navigation menu)
│   ├── sidebar-right.blade.php     (75KB - Preview, quick access)
│   ├── queue-overlay.blade.php     (21KB - Queue modal)
│   ├── context-menu.blade.php      (7KB - Right-click menu)
│   ├── auth-modal.blade.php        (24KB - Login/Register)
│   ├── ai-chat-widget.blade.php    (19KB - AI Assistant)
│   ├── playlist-select-modal.blade.php
│   ├── lyrics-overlay.blade.php
│   ├── keyboard-shortcuts-overlay.blade.php
│   ├── device-limit-modal.blade.php
│   ├── session-check.blade.php
│   ├── cookie-consent.blade.php
│   └── ...
├── partials/                       (19 partial)
│   ├── dashboard-content.blade.php  (28KB - Dashboard grid)
│   ├── corporate-subscriptions-content.blade.php
│   ├── favorites-list.blade.php
│   ├── my-playlists-grid.blade.php
│   ├── playlist-detail.blade.php
│   ├── album-detail.blade.php
│   ├── song-detail.blade.php
│   └── ...
├── albums/
│   ├── index.blade.php
│   └── show.blade.php
├── artists/
├── genres/
├── playlists/
├── radios/
├── sectors/
├── songs/
├── auth/
├── cart/
├── certificate/
├── corporate/
├── favorites/
├── profile/
├── homepage.blade.php          (5KB - Homepage sections)
├── dashboard.blade.php         (25KB - User dashboard)
├── listening-history.blade.php
├── subscription-plans.blade.php
└── subscription-success.blade.php

public/themes/muzibu/css/
├── muzibu-layout.css           (30KB - Grid, responsive)
└── muzibu-custom.css           (8.7KB - Custom styles)

tailwind/tenants/
└── tenant-1001.config.js       (12.8KB - Tailwind config)
                        

Tailwind CSS Konfigürasyonu

File: tailwind/tenants/tenant-1001.config.js (12.8KB)

Renk Paleti

spotify-black: #121212
spotify-dark: #181818
spotify-green: #1DB954
spotify-gray: #282828
muzibu-coral: #FF7F50
sub-coral: #FF6B6B

Custom Animations

  • animate-shimmer - 2s linear infinite (hover parlama)
  • animate-shimmer-sweep - 0.8s ease-out (çapraz parlama)
  • animate-gradient-flow - 8s ease-in-out infinite (akan gradient)

Custom Utilities

  • .scrollbar-hide - Scrollbar gizleme (webkit + firefox)
  • .footer-logo-gradient - Animated coral gradient text
  • .premium-btn-gradient - Animated button gradient

Safelist (236 class)

Dinamik class'lar için safelist:

  • • Spotify colors & variants
  • • Muzibu coral variants (bg, text, border, ring, shadow)
  • • Opacity backgrounds (bg-white/5, bg-black/50, etc.)
  • • Responsive grid columns (md:grid-cols-[1fr_280px])
  • • Animation classes (hover, group-hover)
  • • Subscription plan colors

Grid Layout Sistemi

File: public/themes/muzibu/css/muzibu-layout.css

Desktop Layout (>= 1280px)

.muzibu-app {
    display: grid;
    grid-template-rows: 64px 1fr 90px;        /* Header | Content | Player */
    grid-template-columns: 280px 1fr 380px;   /* Left | Main | Right */
    height: 100vh;
    overflow: hidden;
}
                                

Tablet Layout (768px - 1024px)

grid-template-columns: 1fr 280px;   /* Main | Right (Sol sidebar gizli) */
                                

Mobile Layout (< 768px)

grid-template-columns: 1fr;         /* Sadece Main (Sidebar'lar gizli) */
/* Bottom Nav görünür, Hamburger menu aktif */
                                

🔧 Eski Cihaz Uyumluluğu

@supports (backdrop-filter: blur(1px)) ile modern cihaz tespiti. Eski Safari/iOS'ta position:fixed beyaz ekran sorunu için fallback: relative/static layout.

Component Sistemi

39 blade component, ~7,000 satır kod

Core Components

  • header.blade.php (73KB)
  • → Logo, search, navigation, auth
  • footer.blade.php (17KB)
  • → Links, stats, newsletter
  • player.blade.php (19KB)
  • → Mobile + Desktop player UI
  • sidebar-left.blade.php (20KB)
  • → Navigation menu, playlists
  • sidebar-right.blade.php (75KB)
  • → Preview, quick access, recommendations

Feature Components

  • queue-overlay.blade.php (21KB)
  • auth-modal.blade.php (24KB)
  • ai-chat-widget.blade.php (19KB)
  • playlist-select-modal.blade.php (20KB)
  • context-menu.blade.php (7KB)
  • lyrics-overlay.blade.php (4.6KB)
  • keyboard-shortcuts-overlay.blade.php (5.9KB)
  • device-limit-modal.blade.php (2.8KB)
  • session-check.blade.php (7KB)

Utility Components

  • lazy-image.blade.php - Lazy loading wrapper
  • loading-overlay.blade.php - Loading spinner
  • toast-notification.blade.php - Toast messages
  • confirm-modal.blade.php - Confirmation dialogs
  • cookie-consent.blade.php - GDPR cookie banner

Homepage Yapısı

File: resources/views/themes/muzibu/homepage.blade.php

Cache-Driven Data Loading

Tüm veriler 300 saniye (5 dakika) cache'lenir:

  • home_genres_v4 - Genres (15 item)
  • home_featured_playlists_v6 - Featured playlists (10 item)
  • home_new_releases_v4 - New albums (10 item)
  • home_radios_v4 - Radios (10 item)
  • home_sectors_v4 - Sectors (10 item)

Section Layout

  1. 1. Quick Access Cards - Genres (2 satır, horizontal scroll)
  2. 2. Featured Playlists - Horizontal scroll section
  3. 3. New Releases - Albums horizontal scroll
  4. 4. Radios - Horizontal scroll
  5. 5. Sectors - Horizontal scroll

Horizontal Scroll Component

<x-muzibu.horizontal-scroll-section> ile sarılır. Mobilde swipe, desktop'ta mouse drag ile scroll.

Alpine.js Integration

File: resources/views/themes/muzibu/layouts/app.blade.php

Global State Stores

  • Alpine.store('player') - Player state
  • Alpine.store('sidebar') - Sidebar state (preview, entity, quick access)
  • Alpine.store('contextMenu') - Right-click menu
  • Alpine.store('playlistModal') - Playlist selection
  • Alpine.store('muzibu') - Global muzibu state

Component Apps

  • muzibuApp() - Main app instance
  • dashboardApp() - Dashboard specific
  • corporatePanel() - Corporate subscriptions
  • playlistEditor() - Playlist management

Event System

@play-song.window="playSong($event.detail.songId)"
@play-all-preview.window="/* Play all from preview */"
@play-all-entity.window="/* Play all from entity */"
                                

CSS Custom Properties & Keyframes

Keyframes

@keyframes shimmer {
    0% { backgroundPosition: '-200% 0' }
    100% { backgroundPosition: '200% 0' }
}

@keyframes gradient-flow {
    0%, 100% { backgroundPosition: '0% 50%' }
    50% { backgroundPosition: '100% 50%' }
}
                                

Custom Gradients

/* Footer Logo */
linear-gradient(90deg,
    #ff7f50, #ff6347, #e91e63,
    #ff7f50, #ff5722, #ec407a,
    #ff7f50, #ff6347, #9c27b0
)

/* Premium Button */
linear-gradient(135deg,
    #ff6b6b, #ff5252, #e91e63
)
                                

Asset Pipeline

Build Process

# Tailwind build
node scripts/build-tenant-css.js 1001

# Output
public/css/tenant-1001.css (compiled Tailwind)

# Custom CSS (statik)
public/themes/muzibu/css/muzibu-layout.css
public/themes/muzibu/css/muzibu-custom.css
                            

Loaded Assets (app.blade.php)

  • tenant_css() - tenant-1001.css (Tailwind compiled)
  • muzibu-layout.css - Grid layout, responsive
  • muzibu-custom.css - Custom styles
  • fontawesome-pro@7.1.0 - Icons
  • hls.js@1.4.12 - HLS playback
  • howler.js@2.2.4 - Audio fallback
  • sortable.min.js - Drag & drop

✨ Öne Çıkan Özellikler

🎨 Tasarım

  • • Spotify-inspired dark theme
  • • Muzibu coral (#FF7F50) brand color
  • • Animated gradients (shimmer, flow)
  • • Smooth hover effects
  • • Consistent spacing & typography

⚡ Performans

  • • Cache-driven data (5 dakika TTL)
  • • Lazy loading images
  • • Tailwind JIT mode (küçük CSS)
  • • Component reusability
  • • CSS scrollbar-hide utility

📱 Responsive

  • • Mobile-first approach
  • • Dynamic grid layout (4 breakpoints)
  • • Touch gesture support
  • • Bottom nav (mobile)
  • • Hamburger menu (tablet)

🎯 Modülerlik

  • • 39 blade component
  • • Reusable partials
  • • Alpine.js store pattern
  • • Component-based architecture
  • • Theme isolation (tenant-specific)

📊 Tema İstatistikleri

110

Blade Dosyası

39

Component

19

Partial

25

Klasör

1.4MB

Tema Boyutu

~7k

Satır (Components)

236

Safelist Class

💡 Geliştirme Notları

✅ İyi Pratikler

  • • Component-based architecture (reusable, maintainable)
  • • Cache-driven data loading (performance)
  • • Tailwind utility-first approach (consistent styling)
  • • Responsive breakpoint sistemi (mobile-first)
  • • Alpine.js store pattern (global state management)

📌 Dikkat Edilmesi Gerekenler

  • • Tailwind safelist'e yeni dinamik class eklendiğinde rebuild gerekli
  • • Cache key version'ları güncellenmeli (v4 → v5)
  • • Component değişikliklerinde tüm kullanım yerleri kontrol edilmeli
  • • Grid layout breakpoint'leri değiştirilirse CSS de güncellenmeli
  • • Eski cihaz uyumluluğu (@supports backdrop-filter) korunmalı

⚠️ Bilinen Sınırlamalar

  • • Eski Safari (< 14) için fixed layout devre dışı
  • • Grid layout IE11'de desteklenmiyor
  • • backdrop-filter Chrome < 76'da çalışmıyor
  • • CSS custom properties Firefox < 31'de yok

🚀 İyileştirme Fikirleri

  • • Component lazy loading (Livewire defer)
  • • Critical CSS inline (above-the-fold)
  • • WebP image support + fallback
  • • Skeleton loading screens
  • • Dark/Light mode toggle (şu an sadece dark)