szbk c0841aab20 feat(frontend): admin dashboard + içerik kataloğu UI, realtime sync
- index.css: IBM Plex Sans + Bricolage Grotesque font'ları import edildi;
  CSS custom property sistemi (--bg-base, --accent-main vb.) tanımlandı;
  body'ye fixed radial gradient + grid overlay arka plan eklendi.

- main.tsx: MantineProvider tema güncellendi — IBM Plex Sans/Bricolage
  Grotesque font ailesi, responsive heading boyutları, özel radius/shadow
  değerleri ayarlandı.

- App.css: Gereksiz yorum temizlendi, stil yönetimi route-level CSS'e taşındı.

- MoviesPage.tsx (büyük güncelleme):
  • Katalog görünümü: film/dizi grid, arama, sıralama, backdrop modal.
  • Admin Dashboard görünümü: cache özeti, content istatistikleri, job
    durum sayaçları, failed job listesi, cache expiry tablosu, metrics
    (hit/miss oranı, kaynak dağılımı).
  • Admin aksiyonlar: cache temizleme, cache ısıtma, başarısız job
    yeniden kuyruklama, eski içerik yenileme.
  • Socket.IO entegrasyonu: content:event dinlenerek katalog anlık
    güncelleniyor; metrics:updated ile dashboard metrikleri canlı akıyor.
  • Reconnect davranışı: bağlantı kopunca her görünüm kendi snapshot'ını
    otomatik yeniliyor.

- movies-page.css (yeni): MoviesPage'e özel kart, backdrop, istatistik
  kutusu ve animasyon stilleri.

- vite.config.ts: /socket.io proxy kuralı eklendi (ws: true) — dev
  sunucusu üzerinden WebSocket bağlantısı backend'e yönlendiriliyor.

- frontend/.env.example (yeni): VITE_API_BASE_URL, VITE_WEB_API_KEY,
  VITE_ADMIN_API_KEY değişken şablonu eklendi.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28 12:00:22 +03:00
2026-02-28 02:44:41 +03:00
2026-02-28 02:44:41 +03:00
2026-02-28 02:44:41 +03:00
2026-02-28 02:44:41 +03:00
2026-02-28 02:44:41 +03:00
2026-02-28 02:44:41 +03:00
2026-02-28 02:44:41 +03:00
2026-02-28 02:44:41 +03:00
2026-02-28 02:44:41 +03:00
2026-02-28 02:44:41 +03:00
2026-02-28 02:44:41 +03:00
2026-02-28 02:44:41 +03:00
2026-02-28 02:44:41 +03:00
2026-02-28 02:44:41 +03:00
2026-02-28 02:44:41 +03:00
2026-02-28 02:44:41 +03:00
2026-02-28 02:44:41 +03:00
2026-02-28 02:44:41 +03:00

Netflix Scraper API

Netflix içerik sayfalarından film/dizi bilgilerini çeken yüksek performanslı bir backend API servisi.

Özellikler

  • Scraping: Netflix URL'lerinden otomatik içerik bilgisi çekme
  • Cache: Redis ile 7 günlük önbellek (yapılandırılabilir)
  • Kalıcılık: PostgreSQL ile verilerin kalıcı saklanması
  • Real-time: Socket.IO ile canlı ilerleme bildirimleri
  • Güvenlik: API Key authentication ve rate limiting
  • Docker: Tek komut ile ayağa kalkma

Hızlı Başlangıç

# .env dosyasını oluştur
cp .env.example .env

# API key'leri düzenle
nano .env

# Başlat (tek komut!)
docker compose -f docker-compose.dev.yml up --build

API şu adreste çalışacak: http://localhost:3000

API Kullanımı

İstek Örneği

curl -X POST http://localhost:3000/api/getinfo \
  -H "Content-Type: application/json" \
  -H "X-API-Key: web-dev-key-change-me" \
  -d '{"url": "https://www.netflix.com/tr/title/81616256"}'

Yanıt Örneği

{
  "success": true,
  "data": {
    "title": "Hayata Röveşata Çeken Adam",
    "year": 2022,
    "plot": "Dünyaya karşı duyduğu öfke...",
    "genres": ["18+", "Komedi"],
    "cast": ["Tom Hanks", "Mariana Treviño", "Rachel Keller"],
    "backdrop": "https://occ-0-7335-..."
  }
}

Endpoints

Method Endpoint ıklama
GET /health Sağlık kontrolü
GET /ready Bağımlılık kontrolü
POST /api/getinfo İçerik bilgisi getir
POST /api/getinfo/async Asenkron job oluştur
GET /api/jobs/:jobId Job durumu sorgula

Socket.IO Events

Event Yön ıklama
job:subscribe Client → Server Job'a abone ol
job:progress Server → Client İlerleme güncellemesi
job:completed Server → Client İşlem tamamlandı
job:error Server → Client Hata oluştu

Environment Değişkenleri

Değişken ıklama Varsayılan
PORT Sunucu portu 3000
NODE_ENV Ortam development
POSTGRES_* PostgreSQL ayarları -
REDIS_* Redis ayarları -
REDIS_TTL_SECONDS Cache süresi 604800 (7 gün)
RATE_LIMIT_* Rate limit ayarları -
API_KEY_* API anahtarları -

Migration

Migration'lar otomatik olarak container başlatılırken çalışır.

# Manuel migration
docker compose exec app npx prisma migrate deploy

Teknoloji Yığını

Katman Teknoloji
Runtime Node.js 20+
Framework Express.js
Database PostgreSQL 16
Cache Redis 7
Real-time Socket.IO 4
Scraper Cheerio
ORM Prisma

Proje Yapısı

.
├── src/
│   ├── config/          # Yapılandırma (env, database, redis, socket)
│   ├── middleware/      # Express middleware (auth, rate-limit, validation)
│   ├── routes/          # API rotaları
│   ├── services/        # İş mantığı (scraper, cache, content, job)
│   ├── types/           # TypeScript tipleri
│   └── utils/           # Yardımcı fonksiyonlar
├── prisma/
│   ├── schema.prisma    # Veritabanı şeması
│   └── seed.ts          # Başlangıç verileri
├── doc/
│   ├── overview.md      # Proje özeti
│   ├── api.md           # API dokümantasyonu
│   ├── ops.md           # Operasyon notları
│   └── socket-events.md # Socket.IO events
├── docker-compose.dev.yml
├── docker-compose.yml
├── Dockerfile
└── package.json

Dokümantasyon

Geliştirme

Local Development

# Bağımlılıkları yükle
npm install

# Prisma client oluştur
npx prisma generate

# Development modda çalıştır
npm run dev

Production Build

npm run build
npm start

Güvenlik

  • API Key Authentication: Tüm istekler API key gerektirir
  • Rate Limiting: Dakikada max 30 istek (yapılandırılabilir)
  • Non-root Container: Production container'ları root olmayan kullanıcı ile çalışır
  • Input Validation: Tüm girdiler Zod ile doğrulanır

Lisans

MIT

Description
No description provided
Readme 479 KiB
Languages
TypeScript 69%
Swift 24.2%
CSS 4.4%
Shell 0.9%
Dockerfile 0.9%
Other 0.6%