diff --git a/app/Filament/Admin/Resources/MusicProductions/MusicProductionResource.php b/app/Filament/Admin/Resources/MusicProductions/MusicProductionResource.php
new file mode 100644
index 0000000..da0fbaa
--- /dev/null
+++ b/app/Filament/Admin/Resources/MusicProductions/MusicProductionResource.php
@@ -0,0 +1,73 @@
+ ListMusicProductions::route('/'),
+ 'create' => CreateMusicProduction::route('/create'),
+ 'edit' => EditMusicProduction::route('/{record}/edit'),
+ ];
+ }
+
+ public static function getRecordRouteBindingEloquentQuery(): Builder
+ {
+ return parent::getRecordRouteBindingEloquentQuery()
+ ->withoutGlobalScopes([
+ SoftDeletingScope::class,
+ ]);
+ }
+}
diff --git a/app/Filament/Admin/Resources/MusicProductions/Pages/CreateMusicProduction.php b/app/Filament/Admin/Resources/MusicProductions/Pages/CreateMusicProduction.php
new file mode 100644
index 0000000..d39e604
--- /dev/null
+++ b/app/Filament/Admin/Resources/MusicProductions/Pages/CreateMusicProduction.php
@@ -0,0 +1,33 @@
+getResource()::getUrl('index');
+ }
+
+ protected function getCreatedNotificationTitle(): ?string
+ {
+ return __('music_productions.created_successfully');
+ }
+
+ protected function afterCreate(): void
+ {
+ // Save translations
+ TranslationTabs::saveTranslations($this->record, $this->form->getState());
+ }
+}
diff --git a/app/Filament/Admin/Resources/MusicProductions/Pages/EditMusicProduction.php b/app/Filament/Admin/Resources/MusicProductions/Pages/EditMusicProduction.php
new file mode 100644
index 0000000..ab92a37
--- /dev/null
+++ b/app/Filament/Admin/Resources/MusicProductions/Pages/EditMusicProduction.php
@@ -0,0 +1,86 @@
+label(__('music_productions.save'))
+ ->action('save')
+ ->keyBindings(['mod+s'])
+ ->color('primary')
+ ->size('sm'),
+ Action::make('cancel')
+ ->label(__('music_productions.cancel'))
+ ->url($this->getResource()::getUrl('index'))
+ ->color('gray')
+ ->size('sm'),
+ DeleteAction::make()
+ ->label(__('music_productions.delete'))
+ ->size('sm'),
+ RestoreAction::make()
+ ->label(__('music_productions.restore'))
+ ->size('sm'),
+ ForceDeleteAction::make()
+ ->label(__('music_productions.force_delete'))
+ ->size('sm'),
+ ];
+ }
+
+ protected function getFormActions(): array
+ {
+ return []; // Hide standard bottom save/cancel buttons
+ }
+
+ protected function getRedirectUrl(): string
+ {
+ return $this->getResource()::getUrl('index');
+ }
+
+ protected function getSavedNotificationTitle(): ?string
+ {
+ return __('music_productions.updated_successfully');
+ }
+
+ protected function mutateFormDataBeforeFill(array $data): array
+ {
+ // Load existing translations
+ $translationData = TranslationTabs::fillFromRecord($this->record);
+
+ \Log::info('Loading translations for music production edit', [
+ 'production_id' => $this->record->id,
+ 'translations' => $translationData
+ ]);
+
+ return array_merge($data, $translationData);
+ }
+
+ protected function afterSave(): void
+ {
+ \Log::info('Saving music production translations', [
+ 'production_id' => $this->record->id,
+ 'form_state' => $this->form->getState()
+ ]);
+
+ // Save translations
+ TranslationTabs::saveTranslations($this->record, $this->form->getState());
+ }
+}
diff --git a/app/Filament/Admin/Resources/MusicProductions/Pages/ListMusicProductions.php b/app/Filament/Admin/Resources/MusicProductions/Pages/ListMusicProductions.php
new file mode 100644
index 0000000..833fc92
--- /dev/null
+++ b/app/Filament/Admin/Resources/MusicProductions/Pages/ListMusicProductions.php
@@ -0,0 +1,25 @@
+label(__('music_productions.create')),
+ ];
+ }
+}
diff --git a/app/Filament/Admin/Resources/MusicProductions/Schemas/MusicProductionForm.php b/app/Filament/Admin/Resources/MusicProductions/Schemas/MusicProductionForm.php
new file mode 100644
index 0000000..a59436e
--- /dev/null
+++ b/app/Filament/Admin/Resources/MusicProductions/Schemas/MusicProductionForm.php
@@ -0,0 +1,142 @@
+columns(3)
+ ->schema([
+ // Sol Kolon - Ana İçerik (2 sütun genişliğinde)
+ Section::make(__('music_productions.content_section'))
+ ->schema([
+ TextInput::make('title')
+ ->label(__('music_productions.title_field'))
+ ->required()
+ ->maxLength(255)
+ ->live(onBlur: true)
+ ->afterStateUpdated(function (string $operation, $state, callable $set) {
+ if ($operation !== 'create') {
+ return;
+ }
+ $set('slug', \Str::slug($state));
+ }),
+
+ TextInput::make('slug')
+ ->label(__('music_productions.slug_field'))
+ ->required()
+ ->maxLength(255)
+ ->unique(ignoreRecord: true)
+ ->rules(['alpha_dash'])
+ ->helperText(__('music_productions.slug_helper')),
+
+ TextInput::make('client_name')
+ ->label(__('music_productions.client_name_field'))
+ ->maxLength(255),
+
+ RichEditor::make('content')
+ ->label(__('music_productions.content_field'))
+ ->fileAttachmentsDisk('public')
+ ->fileAttachmentsDirectory('music-productions')
+ ->fileAttachmentsVisibility('public')
+ ->columnSpanFull(),
+ ])
+ ->columnSpan(2)
+ ->collapsible(false),
+
+ // Sağ Kolon - Ayarlar (1 sütun genişliğinde)
+ Section::make(__('music_productions.settings_section'))
+ ->schema([
+ FileUpload::make('cover_image')
+ ->label(__('music_productions.cover_image_field'))
+ ->image()
+ ->disk('public')
+ ->directory('music-productions/covers')
+ ->visibility('public')
+ ->imageEditor()
+ ->imageEditorAspectRatios([
+ '16:9',
+ '4:3',
+ '1:1',
+ ])
+ ->helperText(__('music_productions.cover_image_helper'))
+ ->columnSpanFull(),
+
+ DatePicker::make('production_date')
+ ->label(__('music_productions.production_date_field'))
+ ->displayFormat('d.m.Y')
+ ->helperText(__('music_productions.production_date_helper'))
+ ->columnSpanFull(),
+
+ TextInput::make('sort_order')
+ ->label(__('music_productions.sort_order_field'))
+ ->numeric()
+ ->default(0)
+ ->columnSpanFull(),
+
+ Checkbox::make('is_active')
+ ->label(__('music_productions.is_active_field'))
+ ->default(true)
+ ->helperText(__('music_productions.is_active_helper'))
+ ->columnSpanFull(),
+ ])
+ ->columnSpan(1)
+ ->collapsible(false),
+
+ // Alt Kısım - Galeri Görselleri
+ Section::make(__('music_productions.gallery_field'))
+ ->schema([
+ FileUpload::make('gallery')
+ ->label(__('music_productions.gallery_field'))
+ ->multiple()
+ ->image()
+ ->disk('public')
+ ->directory('music-productions/gallery')
+ ->visibility('public')
+ ->helperText(__('music_productions.gallery_helper'))
+ ->columnSpanFull(),
+ ])
+ ->columnSpanFull()
+ ->collapsible(true)
+ ->collapsed(false),
+
+ // Çeviriler Kısımı (Çoklu Dil)
+ Section::make('🌍 ' . __('music_productions.translations_section'))
+ ->schema([
+ TranslationTabs::make([
+ 'title' => [
+ 'type' => 'text',
+ 'label' => __('music_productions.title_field'),
+ 'required' => false,
+ 'maxLength' => 255,
+ ],
+ 'client_name' => [
+ 'type' => 'text',
+ 'label' => __('music_productions.client_name_field'),
+ 'required' => false,
+ 'maxLength' => 255,
+ ],
+ 'content' => [
+ 'type' => 'richtext',
+ 'label' => __('music_productions.content_field'),
+ 'required' => false,
+ ],
+ ]),
+ ])
+ ->columnSpanFull()
+ ->collapsible(true)
+ ->collapsed(false),
+ ]);
+ }
+}
diff --git a/app/Filament/Admin/Resources/MusicProductions/Tables/MusicProductionsTable.php b/app/Filament/Admin/Resources/MusicProductions/Tables/MusicProductionsTable.php
new file mode 100644
index 0000000..e9d88c0
--- /dev/null
+++ b/app/Filament/Admin/Resources/MusicProductions/Tables/MusicProductionsTable.php
@@ -0,0 +1,92 @@
+columns([
+ ImageColumn::make('cover_image')
+ ->label(__('music_productions.cover_image_field'))
+ ->disk('public')
+ ->square()
+ ->size(60),
+
+ TextColumn::make('title')
+ ->label(__('music_productions.table_title'))
+ ->searchable()
+ ->sortable()
+ ->limit(50),
+
+ TextColumn::make('slug')
+ ->label(__('music_productions.table_slug'))
+ ->searchable()
+ ->sortable()
+ ->limit(30),
+
+ TextColumn::make('client_name')
+ ->label(__('music_productions.table_client_name'))
+ ->searchable()
+ ->sortable()
+ ->limit(30),
+
+ TextColumn::make('production_date')
+ ->label(__('music_productions.table_production_date'))
+ ->date('d.m.Y')
+ ->sortable(),
+
+ ToggleColumn::make('is_active')
+ ->label(__('music_productions.table_is_active'))
+ ->alignCenter(),
+
+ TextColumn::make('sort_order')
+ ->label(__('music_productions.sort_order_field'))
+ ->sortable()
+ ->alignCenter(),
+
+ TextColumn::make('created_at')
+ ->label(__('music_productions.table_created_at'))
+ ->dateTime('d.m.Y H:i')
+ ->sortable()
+ ->toggleable(isToggledHiddenByDefault: true),
+
+ TextColumn::make('updated_at')
+ ->label(__('music_productions.table_updated_at'))
+ ->dateTime('d.m.Y H:i')
+ ->sortable()
+ ->toggleable(isToggledHiddenByDefault: true),
+ ])
+ ->filters([
+ TernaryFilter::make('is_active')
+ ->label(__('music_productions.is_active_field')),
+ ])
+ ->recordActions([
+ EditAction::make()
+ ->label(__('music_productions.edit')),
+ ])
+ ->toolbarActions([
+ BulkActionGroup::make([
+ DeleteBulkAction::make()
+ ->label(__('music_productions.delete')),
+ RestoreBulkAction::make()
+ ->label(__('music_productions.restore')),
+ ForceDeleteBulkAction::make()
+ ->label(__('music_productions.force_delete')),
+ ]),
+ ])
+ ->defaultSort('sort_order', 'asc');
+ }
+}
diff --git a/app/Http/Controllers/MusicProductionController.php b/app/Http/Controllers/MusicProductionController.php
new file mode 100644
index 0000000..f7a5a7e
--- /dev/null
+++ b/app/Http/Controllers/MusicProductionController.php
@@ -0,0 +1,155 @@
+get();
+ foreach ($allSettings as $setting) {
+ $settings->{$setting->key} = $setting->value;
+ }
+
+ // Get active music productions
+ $productions = MusicProduction::active()
+ ->ordered()
+ ->paginate(9); // Using 9 for nice grid layout (3 per row)
+
+ // --- Header Logic ---
+ $renderedHeader = null;
+ $defaultHeaderId = $settings->default_header ?? null;
+
+ if ($defaultHeaderId) {
+ $headerTemplate = HeaderTemplate::find($defaultHeaderId);
+ if ($headerTemplate) {
+ $templateDefaults = $headerTemplate->default_data ?? [];
+ $mergedHeaderData = array_merge($templateDefaults, []);
+
+ $renderedHeader = TemplateService::replacePlaceholders(
+ $headerTemplate->html_content,
+ $mergedHeaderData,
+ null
+ );
+ }
+ }
+
+ // --- Footer Logic ---
+ $renderedFooter = null;
+ $defaultFooterId = $settings->default_footer ?? null;
+
+ if ($defaultFooterId) {
+ $footerTemplate = FooterTemplate::find($defaultFooterId);
+ if ($footerTemplate) {
+ $templateDefaults = $footerTemplate->default_data ?? [];
+ $mergedFooterData = array_merge($templateDefaults, []);
+
+ $renderedFooter = TemplateService::replacePlaceholders(
+ $footerTemplate->html_content,
+ $mergedFooterData,
+ null
+ );
+ }
+ }
+
+ $meta = [
+ 'title' => __('music_productions.meta-index-title'),
+ 'description' => __('music_productions.meta-index-description'),
+ 'image' => null,
+ ];
+
+ return view('front.music-productions.index', compact('productions', 'settings', 'renderedHeader', 'renderedFooter', 'meta'));
+ }
+
+ public function show($slug)
+ {
+ $production = MusicProduction::active()
+ ->where('slug', $slug)
+ ->firstOrFail();
+
+ // Get Settings
+ $settings = new \stdClass();
+ $allSettings = Setting::where('is_active', true)->get();
+ foreach ($allSettings as $setting) {
+ $settings->{$setting->key} = $setting->value;
+ }
+
+ // Fetch adjacent posts (Prev and Next)
+ $prev = MusicProduction::active()
+ ->where(function($q) use ($production) {
+ $q->where('sort_order', '<', $production->sort_order)
+ ->orWhere(function($sub) use ($production) {
+ $sub->where('sort_order', $production->sort_order)
+ ->where('id', '<', $production->id);
+ });
+ })
+ ->orderBy('sort_order', 'desc')
+ ->orderBy('id', 'desc')
+ ->first();
+
+ $next = MusicProduction::active()
+ ->where(function($q) use ($production) {
+ $q->where('sort_order', '>', $production->sort_order)
+ ->orWhere(function($sub) use ($production) {
+ $sub->where('sort_order', $production->sort_order)
+ ->where('id', '>', $production->id);
+ });
+ })
+ ->orderBy('sort_order', 'asc')
+ ->orderBy('id', 'asc')
+ ->first();
+
+ // --- Header Logic ---
+ $renderedHeader = null;
+ $defaultHeaderId = $settings->default_header ?? null;
+
+ if ($defaultHeaderId) {
+ $headerTemplate = HeaderTemplate::find($defaultHeaderId);
+ if ($headerTemplate) {
+ $templateDefaults = $headerTemplate->default_data ?? [];
+ $mergedHeaderData = array_merge($templateDefaults, []);
+
+ $renderedHeader = TemplateService::replacePlaceholders(
+ $headerTemplate->html_content,
+ $mergedHeaderData,
+ $production
+ );
+ }
+ }
+
+ // --- Footer Logic ---
+ $renderedFooter = null;
+ $defaultFooterId = $settings->default_footer ?? null;
+
+ if ($defaultFooterId) {
+ $footerTemplate = FooterTemplate::find($defaultFooterId);
+ if ($footerTemplate) {
+ $templateDefaults = $footerTemplate->default_data ?? [];
+ $mergedFooterData = array_merge($templateDefaults, []);
+
+ $renderedFooter = TemplateService::replacePlaceholders(
+ $footerTemplate->html_content,
+ $mergedFooterData,
+ $production
+ );
+ }
+ }
+
+ $meta = [
+ 'title' => $production->translate('title'),
+ 'description' => \Str::limit(strip_tags($production->translate('content')), 160),
+ 'image' => $production->cover_image ? asset('storage/' . $production->cover_image) : null,
+ ];
+
+ return view('front.music-productions.show', compact('production', 'prev', 'next', 'settings', 'renderedHeader', 'renderedFooter', 'meta'));
+ }
+}
diff --git a/app/Models/MusicProduction.php b/app/Models/MusicProduction.php
new file mode 100644
index 0000000..c381d84
--- /dev/null
+++ b/app/Models/MusicProduction.php
@@ -0,0 +1,67 @@
+ 'date',
+ 'gallery' => 'array',
+ 'is_active' => 'boolean',
+ 'sort_order' => 'integer',
+ ];
+
+ public function getUrlAttribute()
+ {
+ return route('music-productions.show', $this->slug);
+ }
+
+ public function getCoverImageUrlAttribute()
+ {
+ if ($this->cover_image) {
+ return asset('storage/' . $this->cover_image);
+ }
+
+ return null;
+ }
+
+ public function scopeActive($query)
+ {
+ return $query->where('is_active', true);
+ }
+
+ public function scopeOrdered($query)
+ {
+ return $query->orderBy('sort_order', 'asc')->orderBy('production_date', 'desc');
+ }
+}
diff --git a/database/migrations/2026_05_20_190658_create_music_productions_table.php b/database/migrations/2026_05_20_190658_create_music_productions_table.php
new file mode 100644
index 0000000..7917d1c
--- /dev/null
+++ b/database/migrations/2026_05_20_190658_create_music_productions_table.php
@@ -0,0 +1,40 @@
+id();
+ $table->string('title'); // Main title (usually default language)
+ $table->string('slug')->unique();
+ $table->string('cover_image')->nullable();
+ $table->longText('content')->nullable(); // Main content (usually default language)
+ $table->string('client_name')->nullable(); // Main client name (usually default language)
+ $table->date('production_date')->nullable();
+ $table->json('gallery')->nullable(); // Store gallery images
+ $table->boolean('is_active')->default(true);
+ $table->integer('sort_order')->default(0);
+ $table->softDeletes();
+ $table->timestamps();
+
+ $table->index(['is_active', 'sort_order']);
+ $table->index('slug');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('music_productions');
+ }
+};
diff --git a/lang/en/music_productions.php b/lang/en/music_productions.php
new file mode 100644
index 0000000..598ddd3
--- /dev/null
+++ b/lang/en/music_productions.php
@@ -0,0 +1,78 @@
+ 'Music Productions',
+ 'meta-index-title' => 'Music Productions',
+ 'meta-index-description' => 'Our music production, soundtrack and corporate music work.',
+ 'empty' => 'No music productions registered yet.',
+ 'project_details' => 'Project Details',
+ 'back_to_list' => 'Back to List',
+ 'prev' => 'Prev',
+ 'next' => 'Next',
+
+ // Module labels
+ 'title' => 'Music Productions',
+ 'navigation_label' => 'Music Production',
+ 'model_label' => 'Music Production',
+ 'plural_model_label' => 'Music Productions',
+
+ // Actions
+ 'create' => 'Create New Music Production',
+ 'edit' => 'Edit Music Production',
+ 'save' => 'Save',
+ 'cancel' => 'Cancel',
+ 'delete' => 'Delete Music Production',
+ 'restore' => 'Restore Music Production',
+ 'force_delete' => 'Force Delete',
+
+ // Form fields
+ 'title_field' => 'Title',
+ 'slug_field' => 'URL Slug',
+ 'content_field' => 'Content',
+ 'client_name_field' => 'Client Name',
+ 'production_date_field' => 'Production Date',
+ 'cover_image_field' => 'Cover Image',
+ 'gallery_field' => 'Gallery Images',
+ 'is_active_field' => 'Is Active?',
+ 'sort_order_field' => 'Sort Order',
+
+ // Sections
+ 'content_section' => 'Content',
+ 'settings_section' => 'Production Settings',
+ 'translations_section' => 'Translations',
+
+ // Helper texts
+ 'slug_helper' => 'The part that will appear in the URL. Example: music-production-1',
+ 'cover_image_helper' => 'Select a cover image for the production',
+ 'gallery_helper' => 'Select other images for the production (Multiple upload is supported)',
+ 'production_date_helper' => 'The date when the production was completed',
+ 'is_active_helper' => 'Display this music production on the site',
+ 'sort_order_helper' => 'Enter a sorting number for listing priority',
+
+ // Status options
+ 'status_draft' => 'Draft',
+ 'status_published' => 'Published',
+ 'status_archived' => 'Archived',
+
+ // Messages
+ 'created_successfully' => 'Music production created successfully.',
+ 'updated_successfully' => 'Music production updated successfully.',
+ 'deleted_successfully' => 'Music production deleted successfully.',
+ 'restored_successfully' => 'Music production restored successfully.',
+
+ // Table columns
+ 'table_title' => 'Title',
+ 'table_slug' => 'URL Slug',
+ 'table_client_name' => 'Client',
+ 'table_production_date' => 'Production Date',
+ 'table_status' => 'Status',
+ 'table_is_active' => 'Active',
+ 'table_created_at' => 'Created At',
+ 'table_updated_at' => 'Updated At',
+
+ // Validation messages
+ 'title_required' => 'Title field is required.',
+ 'slug_required' => 'URL slug field is required.',
+ 'slug_unique' => 'This URL slug is already in use.',
+];
diff --git a/lang/tr/music_productions.php b/lang/tr/music_productions.php
new file mode 100644
index 0000000..bf46fe4
--- /dev/null
+++ b/lang/tr/music_productions.php
@@ -0,0 +1,78 @@
+ 'Müzik Prodüksiyonları',
+ 'meta-index-title' => 'Müzik Prodüksiyonları',
+ 'meta-index-description' => 'Müzik prodüksiyonu, film müzikleri ve kurumsal müzik çalışmalarımız.',
+ 'empty' => 'Şu anda kayıtlı müzik prodüksiyonu bulunmuyor.',
+ 'project_details' => 'Proje Detayları',
+ 'back_to_list' => 'Listeye Geri Dön',
+ 'prev' => 'Önceki',
+ 'next' => 'Sonraki',
+
+ // Module labels
+ 'title' => 'Müzik Prodüksiyonları',
+ 'navigation_label' => 'Müzik Prodüksiyonu',
+ 'model_label' => 'Müzik Prodüksiyonu',
+ 'plural_model_label' => 'Müzik Prodüksiyonları',
+
+ // Actions
+ 'create' => 'Yeni Müzik Prodüksiyonu Oluştur',
+ 'edit' => 'Müzik Prodüksiyonunu Düzenle',
+ 'save' => 'Kaydet',
+ 'cancel' => 'İptal',
+ 'delete' => 'Müzik Prodüksiyonunu Sil',
+ 'restore' => 'Müzik Prodüksiyonunu Geri Yükle',
+ 'force_delete' => 'Kalıcı Olarak Sil',
+
+ // Form fields
+ 'title_field' => 'Başlık',
+ 'slug_field' => 'URL Yolu',
+ 'content_field' => 'İçerik',
+ 'client_name_field' => 'Müşteri Adı',
+ 'production_date_field' => 'Yapım Tarihi',
+ 'cover_image_field' => 'Kapak Görseli',
+ 'gallery_field' => 'Galeri Görselleri',
+ 'is_active_field' => 'Aktif mi?',
+ 'sort_order_field' => 'Sıralama',
+
+ // Sections
+ 'content_section' => 'İçerik',
+ 'settings_section' => 'Prodüksiyon Ayarları',
+ 'translations_section' => 'Çeviriler',
+
+ // Helper texts
+ 'slug_helper' => 'URL\'de görünecek kısım. Örnek: muzik-produksiyonu-1',
+ 'cover_image_helper' => 'Prodüksiyon için kapak görseli seçin',
+ 'gallery_helper' => 'Prodüksiyona ait diğer görselleri seçin (Çoklu yükleme desteklenir)',
+ 'production_date_helper' => 'Prodüksiyonun tamamlandığı tarih',
+ 'is_active_helper' => 'Bu müzik prodüksiyonunu sitede göster',
+ 'sort_order_helper' => 'Listeleme önceliği için sıralama numarası girin',
+
+ // Status options
+ 'status_draft' => 'Taslak',
+ 'status_published' => 'Yayınlandı',
+ 'status_archived' => 'Arşivlendi',
+
+ // Messages
+ 'created_successfully' => 'Müzik prodüksiyonu başarıyla oluşturuldu.',
+ 'updated_successfully' => 'Müzik prodüksiyonu başarıyla güncellendi.',
+ 'deleted_successfully' => 'Müzik prodüksiyonu başarıyla silindi.',
+ 'restored_successfully' => 'Müzik prodüksiyonu başarıyla geri yüklendi.',
+
+ // Table columns
+ 'table_title' => 'Başlık',
+ 'table_slug' => 'URL Yolu',
+ 'table_client_name' => 'Müşteri',
+ 'table_production_date' => 'Yapım Tarihi',
+ 'table_status' => 'Durum',
+ 'table_is_active' => 'Aktif',
+ 'table_created_at' => 'Oluşturulma Tarihi',
+ 'table_updated_at' => 'Güncellenme Tarihi',
+
+ // Validation messages
+ 'title_required' => 'Başlık alanı zorunludur.',
+ 'slug_required' => 'URL yolu alanı zorunludur.',
+ 'slug_unique' => 'Bu URL yolu zaten kullanılıyor.',
+];
diff --git a/resources/views/front/music-productions/index.blade.php b/resources/views/front/music-productions/index.blade.php
new file mode 100644
index 0000000..46f989b
--- /dev/null
+++ b/resources/views/front/music-productions/index.blade.php
@@ -0,0 +1,174 @@
+@extends('layouts.site')
+
+@section('content')
+
+
+
+
+
{{ __('music_productions.meta-index-title') }}
+
{{ __('music_productions.meta-index-description') }}
+
+
+
+
+
+
+
+ @if($productions->count() > 0)
+
+
+ @php
+ $accentColors = [
+ ['border' => '#54a8c7', 'text' => '#54a8c7', 'tooltip' => 'itooltip-aqua'],
+ ['border' => '#747ed1', 'text' => '#747ed1', 'tooltip' => 'itooltip-purple'],
+ ['border' => '#fab758', 'text' => '#fab758', 'tooltip' => 'itooltip-yellow'],
+ ['border' => '#e2626b', 'text' => '#e2626b', 'tooltip' => 'itooltip-red'],
+ ['border' => '#f78b77', 'text' => '#f78b77', 'tooltip' => 'itooltip-orange'],
+ ['border' => '#7cb798', 'text' => '#7cb798', 'tooltip' => 'itooltip-leaf'],
+ ['border' => '#d16b86', 'text' => '#d16b86', 'tooltip' => 'itooltip-pink'],
+ ['border' => '#45c4a0', 'text' => '#45c4a0', 'tooltip' => 'itooltip-green'],
+ ['border' => '#a07cc5', 'text' => '#a07cc5', 'tooltip' => 'itooltip-violet'],
+ ];
+ @endphp
+ @foreach($productions as $index => $production)
+ @php
+ $color = $accentColors[$index % count($accentColors)];
+ @endphp
+
+ @endforeach
+
+
+
+ {{-- Pagination --}}
+ @if($productions->hasPages())
+
+
+
+ @endif
+
+ @else
+
+
+
+
{{ __('music_productions.empty') }}
+
+
+ @endif
+
+
+
+@push('styles')
+
+@endpush
+@endsection
diff --git a/resources/views/front/music-productions/show.blade.php b/resources/views/front/music-productions/show.blade.php
new file mode 100644
index 0000000..5f744f1
--- /dev/null
+++ b/resources/views/front/music-productions/show.blade.php
@@ -0,0 +1,162 @@
+@extends('layouts.site')
+
+@section('content')
+
+
+
+
+
+
+
+ {{-- Cover Image --}}
+ @if($production->cover_image)
+
+
+
+ @endif
+
+ {{-- Content & Meta --}}
+
+
+
{{ __('music_productions.project_details') }}
+
+ {{-- Content column --}}
+
+
+ {!! $production->translate('content') !!}
+
+
+
+ {{-- Sidebar - Date & Client --}}
+
+
+
+
+
+ {{-- Gallery --}}
+ @php
+ $gallery = $production->gallery;
+ @endphp
+ @if(!empty($gallery) && is_array($gallery) && count($gallery) > 0)
+
+ @foreach($gallery as $galleryImage)
+
+ @endforeach
+
+ @endif
+
+
+
+
+
+
+
+{{-- Post Navigation (Prev / Next) --}}
+
+
+@push('styles')
+
+@endpush
+@endsection
diff --git a/resources/views/templates/home/services-cards.blade.php b/resources/views/templates/home/services-cards.blade.php
index a22010d..a5bcfc0 100644
--- a/resources/views/templates/home/services-cards.blade.php
+++ b/resources/views/templates/home/services-cards.blade.php
@@ -33,7 +33,7 @@
{!! t('Müzik Prodüksiyon') !!}
{!! t('Müzik prodüksiyonu, film müzikleri, kurumsal müzik çalışmaları ve benzeri alanlarda hizmet veriyoruz.') !!}
- {!! t('Daha fazla bilgi edin') !!}
+ {!! t('Daha fazla bilgi edin') !!}
diff --git a/routes/web.php b/routes/web.php
index 9adf699..d168eb1 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -106,6 +106,10 @@ Route::prefix('admin/api')->middleware(['auth', \App\Http\Middleware\SuperAdminM
Route::redirect('/urun-hizmet/Yazılım Danışmanlık', '/urun-hizmet/yazilim-danismanlik', 301);
Route::get('/urun-hizmet/{slug}', [\App\Http\Controllers\ProductController::class, 'show'])->name('products.show');
+// Music Productions
+Route::get('/muzik-produksiyonlari', [\App\Http\Controllers\MusicProductionController::class, 'index'])->name('music-productions.index');
+Route::get('/muzik-produksiyonlari/{slug}', [\App\Http\Controllers\MusicProductionController::class, 'show'])->name('music-productions.show');
+
// Career
Route::get('/kariyer', [\App\Http\Controllers\CareerController::class, 'index'])->name('career.index');
Route::get('/staj-basvurusu', [\App\Http\Controllers\CareerController::class, 'internship'])->name('career.internship');