wisecolt d50eaf250d feat(ios): align app UX with share extension interactions
- redesign main app screen to dark card-based layout

- add half-star drag/tap rating with haptic feedback

- add in-app comments list and composer interactions
2026-03-05 12:31:27 +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 Frontend şu adreste çalışacak: http://localhost:5173

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%