Modern, responsive ve şık bir Linktree tarzı profil sitesi. YouTube ve Kick canlı yayın durumu kontrolü, müzik çalma, sosyal medya linkleri, video galerisi ve detaylı analytics özellikleriyle donatılmıştır.
- 🌙 Koyu Tema - Modern dark mode tasarım
- 🎨 Glassmorphism - Cam efekti ile şık görünüm
- ✨ Animasyonlar - Hover efektleri ve glow animasyonları
- 📱 Tam Responsive - Mobil, tablet ve masaüstü uyumlu
- 🎵 Müzik Çalma - YouTube müzik desteği
- 🔴 Canlı Yayın Durumu - YouTube ve Kick canlı yayın kontrolü (API kullanmadan)
- 👤 Admin Paneli - Kolay içerik yönetimi
- 🎬 Video Galerisi - Son videolar bölümü
- 🔐 Şifre Korumalı Admin - Güvenli admin paneli
- 📊 Dashboard & Analytics - Detaylı görüntülenme ve tıklama istatistikleri
- 🛡️ Spam Koruması - Bot ve aşırı tıklama koruması
- 🔄 Şifre Yönetimi - Admin panelinden şifre değiştirme
- Node.js 18+
- npm veya yarn
- Git
git clone https://github.com/TheOrderx/StreamLink/tree/main
cd stenpm install.env.example dosyasını .env.local olarak kopyalayın:
# Windows
copy .env.example .env.local
# Linux/Mac
cp .env.example .env.localSonra .env.local dosyasını düzenleyin:
# Admin Panel Şifresi
NEXT_PUBLIC_ADMIN_PASSWORD=1234567
# YouTube API Key (Video bilgileri için - opsiyonel)
# Canlı yayın kontrolü API kullanmaz, bu yüzden zorunlu değildir.
YOUTUBE_API_KEY=your_youtube_api_key_hereNot:
- YouTube API key sadece admin panelinde video bilgilerini otomatik çekmek için kullanılır (opsiyonel).
- Canlı yayın kontrolü API kullanmaz, bu yüzden YouTube API key zorunlu değildir.
- Admin şifresini mutlaka değiştirin!
npm run devTarayıcınızda http://localhost:3000 adresini açın.
- Ana sayfayı kontrol edin: http://localhost:3000
- Admin paneline giriş yapın: http://localhost:3000/admin
- Şifre:
.env.localdosyasındakiNEXT_PUBLIC_ADMIN_PASSWORDdeğeri
- Şifre:
- Profil bilgilerinizi güncelleyin
- Sosyal medya linklerinizi ekleyin
- Videolarınızı ekleyin
- Admin panelinden şifrenizi değiştirin (Güvenlik menüsü)
npm run build
npm startste/
├── app/
│ ├── admin/ # Admin paneli
│ │ ├── login/ # Admin giriş sayfası
│ │ └── page.tsx # Admin ana sayfa (Dashboard, Profil, Sosyal Medya, Videolar, Güvenlik)
│ ├── api/ # API routes
│ │ ├── admin/ # Admin işlemleri
│ │ │ └── password/ # Şifre değiştirme
│ │ ├── analytics/ # Analytics işlemleri
│ │ │ ├── track/ # Görüntülenme takibi
│ │ │ └── link-click/ # Link tıklama takibi
│ │ ├── kick/ # Kick canlı yayın kontrolü
│ │ ├── links/ # Veri yönetimi
│ │ └── youtube/ # YouTube işlemleri
│ │ ├── live-status/ # Canlı yayın kontrolü (API kullanmadan)
│ │ └── route.ts # Video bilgileri
│ ├── page.tsx # Ana profil sayfası
│ ├── layout.tsx # Root layout
│ ├── globals.css # Global stiller
│ ├── error.tsx # Hata sayfası
│ ├── not-found.tsx # 404 sayfası
│ ├── global-error.tsx # Global hata sayfası
│ └── loading.tsx # Yükleme sayfası
├── data/
│ ├── links.json # İçerik verileri
│ └── analytics.json # Analytics verileri (gitignore'da)
├── public/ # Statik dosyalar
└── package.json # Bağımlılıklar
- Tarayıcınızda
/adminadresine gidin - Şifre:
.env.localdosyasındakiNEXT_PUBLIC_ADMIN_PASSWORDdeğeri - Varsayılan şifre:
1234567 - İlk girişten sonra şifrenizi değiştirmeniz önerilir (Güvenlik menüsü)
Admin panelinden şunları yönetebilirsiniz:
- Görüntülenme istatistikleri (Son 24 saat, 7 gün, 30 gün, Toplam)
- En çok tıklanan linkler istatistikleri
- İstatistikleri sıfırlama
- İsim
- Profil fotoğrafı URL
- YouTube Kanal ID (UC... formatında)
- Kick Kullanıcı Adı
- Çevrimdışı mesajları (YouTube ve Kick için ayrı)
- Müzik URL
- Platform adı
- URL
- İkon seçimi
- Renk özelleştirme (border ve glow)
- Video başlığı
- Tarih
- Thumbnail URL
- Video URL (YouTube otomatik thumbnail ve tarih desteği)
- Admin şifresi değiştirme
- YouTube'da kanal sayfanıza gidin
- URL'deki
UC...ile başlayan 22 karakterlik kısım kanal ID'nizdir - Örnek:
https://www.youtube.com/channel/UC12345678901234567890- Kanal ID:
UC12345678901234567890
- Kanal ID:
- Kick profil sayfanıza gidin
- URL'deki
kick.com/kullaniciadikısmındaki kullanıcı adınızı girin - Örnek:
https://kick.com/orderflex- Kullanıcı adı:
orderflex
- Kullanıcı adı:
Renkleri app/globals.css dosyasından özelleştirebilirsiniz:
- Arka plan gradient:
bg-gradient-to-br from-[#0a0e27] via-[#1a1a2e] to-black - Glassmorphism efektleri:
.glassclass'ı - Glow efektleri:
.glow-red,.glow-red-strongclass'ları
Admin panelinden her buton için:
- Border rengi (RGBA formatında)
- Glow rengi (RGBA formatında)
- İkon rengi (Tailwind class)
GET: Tüm içeriği getirirPUT: İçeriği günceller
GET: YouTube canlı yayın durumunu kontrol eder (API kullanmadan)- Parametre:
channelId(YouTube kanal ID) - Cache: 5 dakika
GET: Kick canlı yayın durumunu kontrol eder- Parametre:
username(Kick kullanıcı adı)
GET: YouTube video bilgilerini getirir (admin paneli için)- Parametre:
videoId(YouTube video ID)
POST: Görüntülenme kaydı oluştururGET: Görüntülenme istatistiklerini getirirDELETE: Görüntülenme istatistiklerini sıfırlar
POST: Link tıklama kaydı oluşturur (spam koruması ile)GET: Link tıklama istatistiklerini getirirDELETE: Link tıklama istatistiklerini sıfırlar
GET: Şifre varlığını kontrol ederPUT: Şifreyi günceller
{
"socialLinks": [
{
"id": 1,
"name": "YouTube",
"url": "https://www.youtube.com",
"icon": "Youtube",
"iconColor": "text-red-500",
"borderColor": "rgba(239, 68, 68, 0.4)",
"glowColor": "rgba(239, 68, 68, 0.3)"
}
],
"videos": [
{
"id": 1234567890,
"title": "Video Başlığı",
"date": "1 Şubat 2025",
"thumbnail": "https://img.youtube.com/vi/VIDEO_ID/maxresdefault.jpg",
"url": "https://www.youtube.com/watch?v=VIDEO_ID"
}
],
"profile": {
"name": "Kullanıcı Adı",
"image": "https://example.com/profile.jpg",
"musicUrl": "https://www.youtube.com/watch?v=MUSIC_ID",
"youtubeChannelId": "UC...",
"kickUsername": "kullaniciadi",
"youtubeOfflineMessage": "İyi ki canlı yayında değiliz. 😛",
"kickOfflineMessage": "Şimdilik Kick'te değiliz. 😊"
},
"adminPassword": "1234567"
}{
"views": [
{
"timestamp": 1234567890,
"ip": "192.168.1.1",
"userAgent": "Mozilla/5.0..."
}
],
"linkClicks": [
{
"linkId": 1,
"linkName": "YouTube",
"timestamp": 1234567890,
"ip": "192.168.1.1"
}
]
}- Admin paneli şifre korumalıdır
- Şifre
.env.localdosyasında veyadata/links.jsoniçinde saklanır (Git'e commit edilmez) - SessionStorage kullanarak oturum yönetimi yapılır
- 24 saatlik oturum süresi
- Spam koruması: Bot filtreleme ve rate limiting
- IP bazlı duplicate kontrolü
- Son 24 saat, 7 gün, 30 gün ve toplam görüntülenme sayıları
- Her benzersiz IP'den 5 dakikada bir sayılır
- Botlar ve crawler'lar otomatik filtrelenir
- Aynı kullanıcı sayfayı yenilerse 5 dakika içinde tekrar sayılmaz
- En çok tıklanan linkler (Son 24 saat ve tüm zamanlar)
- Toplam tıklama sayıları
- Spam koruması:
- Aynı IP'den aynı linke 10 saniye içinde tekrar tıklama engellenir
- Aynı IP'den 1 dakika içinde 10'dan fazla farklı linke tıklama engellenir
- Bot ve crawler filtreleme
- Dashboard'dan tüm istatistikleri tek seferde sıfırlama
- Link tıklama istatistiklerini ayrı sıfırlama
- YouTube: API kullanmadan, kanal sayfasından kontrol edilir
- Kick: Kick API v2 kullanılarak kontrol edilir
- Her 20 saniyede bir otomatik kontrol
- 5 dakika cache süresi
- Bağımsız kontrol (bir platform offline olsa bile diğeri çalışır)
- YouTube URL desteği
- Otomatik çalma (tarayıcı politikalarına göre)
- Play/Pause kontrolü
- Düşük ses seviyesi (50%)
- Mobil: Tek sütun, kompakt görünüm
- Tablet: 2 sütun grid
- Desktop: 3 sütun grid (sosyal medya), 2 sütun grid (videolar)
- Dashboard: İstatistikler ve en çok tıklanan linkler
- Profil: Temel bilgiler, canlı yayın ayarları, mesajlar, medya
- Sosyal Medya: Link ekleme, düzenleme, silme, renk özelleştirme
- Videolar: Video ekleme, düzenleme, silme, YouTube otomatik bilgi çekme
- Güvenlik: Şifre değiştirme
- YouTube canlı yayın kontrolü bazen gecikebilir (cache nedeniyle)
- Müzik otomatik çalma bazı tarayıcılarda çalışmayabilir (tarayıcı politikaları)
- Analytics verileri
.gitignore'da olduğu için Git'e commit edilmez (her deployment'ta sıfırlanır)
- Dashboard ve analytics özellikleri
- Link tıklama istatistikleri
- Spam koruması
- Şifre değiştirme özelliği
- İstatistikleri sıfırlama
- İlk stabil sürüm
- YouTube ve Kick canlı yayın kontrolü
- Admin paneli
- Müzik çalma özelliği
- Responsive tasarım
Bu proje özel kullanım içindir.
- Fork edin
- Feature branch oluşturun (
git checkout -b feature/amazing-feature) - Commit edin (
git commit -m 'Add amazing feature') - Push edin (
git push origin feature/amazing-feature) - Pull Request açın
Sorularınız için issue açabilirsiniz.