Initial commit: Animexe Laravel platform

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-14 00:01:48 +03:00
co-authored by Claude Opus 4.8
commit a63515cfc6
366 changed files with 74773 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
<?php
namespace Database\Seeders;
use App\Models\Achievement;
use Illuminate\Database\Seeder;
class AchievementSeeder extends Seeder
{
public function run(): void
{
$achievements = [
['key'=>'first_login', 'title'=>'Hoş Geldin!', 'description'=>'İlk kez giriş yaptın', 'icon'=>'bi-door-open', 'color'=>'#79c0ff', 'condition_type'=>'first_login', 'condition_value'=>1],
['key'=>'ep_1', 'title'=>'İzlemeye Başladım', 'description'=>'İlk bölümü %70 izledin', 'icon'=>'bi-play-circle', 'color'=>'#3fb950', 'condition_type'=>'episodes_watched', 'condition_value'=>1],
['key'=>'ep_10', 'title'=>'Anime Meraklısı', 'description'=>'10 bölüm izledin', 'icon'=>'bi-collection-play', 'color'=>'#3fb950', 'condition_type'=>'episodes_watched', 'condition_value'=>10],
['key'=>'ep_50', 'title'=>'Gerçek Otaku', 'description'=>'50 bölüm izledin', 'icon'=>'bi-trophy', 'color'=>'#f0883e', 'condition_type'=>'episodes_watched', 'condition_value'=>50],
['key'=>'ep_100', 'title'=>'Efsane İzleyici', 'description'=>'100 bölüm izledin', 'icon'=>'bi-trophy-fill', 'color'=>'#ffd700', 'condition_type'=>'episodes_watched', 'condition_value'=>100],
['key'=>'ep_500', 'title'=>'Ölümsüz Otaku', 'description'=>'500 bölüm izledin', 'icon'=>'bi-stars', 'color'=>'#a371f7', 'condition_type'=>'episodes_watched', 'condition_value'=>500],
['key'=>'hours_10', 'title'=>'10 Saatlik Mara', 'description'=>'10 saat anime izledin', 'icon'=>'bi-clock-fill', 'color'=>'#79c0ff', 'condition_type'=>'hours_watched', 'condition_value'=>10],
['key'=>'hours_100', 'title'=>'100 Saat Kulübü', 'description'=>'100 saat anime izledin', 'icon'=>'bi-alarm-fill', 'color'=>'#e84393', 'condition_type'=>'hours_watched', 'condition_value'=>100],
['key'=>'watchlist_5', 'title'=>'Listeci', 'description'=>'5 anime listeye ekledin', 'icon'=>'bi-bookmark-fill', 'color'=>'#79c0ff', 'condition_type'=>'watchlist_count', 'condition_value'=>5],
['key'=>'watchlist_20', 'title'=>'Liste Ustası', 'description'=>'20 anime listeye ekledin', 'icon'=>'bi-bookmarks-fill', 'color'=>'#a371f7', 'condition_type'=>'watchlist_count', 'condition_value'=>20],
['key'=>'rated_1', 'title'=>'Eleştirmen', 'description'=>'İlk anime puanını verdin', 'icon'=>'bi-star-fill', 'color'=>'#ffd700', 'condition_type'=>'anime_rated', 'condition_value'=>1],
['key'=>'rated_10', 'title'=>'Puan Makinesi', 'description'=>'10 animei puanladın', 'icon'=>'bi-star-half', 'color'=>'#ffd700', 'condition_type'=>'anime_rated', 'condition_value'=>10],
['key'=>'request_1', 'title'=>'Talep Eden', 'description'=>'Anime isteği gönderdin', 'icon'=>'bi-plus-circle-fill','color'=>'#3fb950', 'condition_type'=>'request_sent', 'condition_value'=>1],
];
foreach ($achievements as $ach) {
Achievement::firstOrCreate(['key' => $ach['key']], $ach);
}
}
}
+56
View File
@@ -0,0 +1,56 @@
<?php
namespace Database\Seeders;
use App\Models\MembershipPlan;
use App\Models\PermissionSetting;
use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
class DatabaseSeeder extends Seeder
{
public function run(): void
{
// Admin kullanıcısı
User::updateOrCreate(
['email' => 'admin@animexe.com'],
[
'name' => 'Admin',
'password' => Hash::make('admin123'),
'role' => 'admin',
]
);
// Global izin ayarları
$permissions = [
['key' => 'can_watch', 'label' => 'Video İzleme', 'required_membership' => 'free', 'description' => 'Bölümleri izleyebilme'],
['key' => 'can_comment', 'label' => 'Yorum Yapma', 'required_membership' => 'free', 'description' => 'Anime ve bölümlere yorum yapabilme'],
['key' => 'can_rate', 'label' => 'Puanlama', 'required_membership' => 'free', 'description' => 'Anime puanlayabilme'],
['key' => 'can_watchlist', 'label' => 'İzleme Listesi', 'required_membership' => 'free', 'description' => 'İzleme listesine ekleyebilme'],
['key' => 'watch_hd', 'label' => '1080p İzleme', 'required_membership' => 'premium', 'description' => 'HD kalitede izleyebilme'],
['key' => 'watch_4k', 'label' => '4K İzleme', 'required_membership' => 'premium', 'description' => '4K kalitede izleyebilme'],
['key' => 'no_ads', 'label' => 'Reklamsız İzleme', 'required_membership' => 'premium', 'description' => 'Reklam gösterilmez'],
['key' => 'early_access', 'label' => 'Erken Erişim', 'required_membership' => 'premium', 'description' => 'Yeni bölümlere erken erişim'],
['key' => 'download', 'label' => 'İndirme', 'required_membership' => 'premium', 'description' => 'Bölümleri indirebilme'],
];
foreach ($permissions as $perm) {
PermissionSetting::updateOrCreate(['key' => $perm['key']], $perm);
}
// Üyelik planları
$plans = [
['name' => 'Aylık Premium', 'slug' => 'aylik-premium', 'price' => 49.99, 'duration_days' => 30,
'features' => ['Reklamsız izleme', '1080p HD', 'Sınırsız bölüm', 'Erken erişim'], 'is_active' => true, 'sort_order' => 1],
['name' => '3 Aylık Premium', 'slug' => '3-aylik-premium', 'price' => 129.99, 'duration_days' => 90,
'features' => ['Reklamsız izleme', '1080p HD', '4K kalite', 'Erken erişim', 'İndirme'], 'is_active' => true, 'sort_order' => 2],
['name' => 'Yıllık Premium', 'slug' => 'yillik-premium', 'price' => 399.99, 'duration_days' => 365,
'features' => ['Reklamsız izleme', '1080p HD', '4K kalite', 'Erken erişim', 'İndirme', 'Öncelikli destek'], 'is_active' => true, 'sort_order' => 3],
];
foreach ($plans as $plan) {
MembershipPlan::updateOrCreate(['slug' => $plan['slug']], $plan);
}
}
}