83 lines
2.9 KiB
Markdown
83 lines
2.9 KiB
Markdown
# Netflix Scraper API - Proje Özeti
|
||
|
||
## Proje Hakkında
|
||
|
||
Netflix Scraper API, Netflix içerik sayfalarından film/dizi bilgilerini çeken bir backend servisidir. URL gönderilerek içerik bilgileri çekilir, önbelleğe alınır ve geri döndürülür.
|
||
|
||
## Neden Oluşturuldu?
|
||
|
||
- **Otomatik İçerik Toplama**: Netflix URL'lerinden otomatik olarak içerik bilgisi çekmek
|
||
- **Performans**: Redis cache ile tekrarlayan isteklerde hızlı yanıt
|
||
- **Kalıcılık**: PostgreSQL ile verilerin kalıcı olarak saklanması
|
||
- **Gerçek Zamanlı**: Socket.IO ile canlı ilerleme bildirimleri
|
||
|
||
## Teknoloji Yığını
|
||
|
||
| Katman | Teknoloji |
|
||
|--------|-----------|
|
||
| Runtime | Node.js 20+ |
|
||
| Framework | Express.js |
|
||
| Database | PostgreSQL 16 |
|
||
| Cache | Redis 7 |
|
||
| Real-time | Socket.IO |
|
||
| Scraper | Cheerio |
|
||
| ORM | Prisma |
|
||
|
||
## Mimari
|
||
|
||
```
|
||
┌─────────────────┐
|
||
│ Frontend │
|
||
│ (Web/Mobile) │
|
||
└────────┬────────┘
|
||
│ HTTP + API Key
|
||
▼
|
||
┌─────────────────┐ ┌─────────────┐
|
||
│ Express API │────▶│ Redis │
|
||
│ (Port 3000) │ │ (Cache) │
|
||
└────────┬────────┘ └─────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────┐ ┌─────────────┐
|
||
│ Scraper Service │────▶│ PostgreSQL │
|
||
│ (Cheerio) │ │ (Data) │
|
||
└─────────────────┘ └─────────────┘
|
||
```
|
||
|
||
## Veri Akışı
|
||
|
||
1. **İstek Alınır**: `POST /api/getinfo` endpoint'ine URL gönderilir
|
||
2. **Cache Kontrolü**: Redis'te veri var mı diye bakılır
|
||
3. **DB Kontrolü**: PostgreSQL'de veri var mı diye bakılır
|
||
4. **Scraping**: Netflix'ten veri çekilir (cache/DB'de yoksa)
|
||
5. **Kaydetme**: Veri DB'ye ve cache'e yazılır
|
||
6. **Yanıt**: JSON formatında veri döndürülür
|
||
|
||
## Önemli Kararlar
|
||
|
||
### ADR-001: Cheerio Seçimi
|
||
Playwright yerine Cheerio seçildi. Başlangıç için yeterli, daha hafif ve hızlı. Gerekirse Playwright'a geçiş yapılabilir.
|
||
|
||
### ADR-002: Hybrid Cache Stratejisi
|
||
Cache → DB → Netflix sıralaması ile veri alınır. Bu sayede:
|
||
- En hızlı yanıt cache'ten gelir
|
||
- Cache'te yoksa DB'den gelir
|
||
- İlk istek hariç Netflix'e istek atılmaz
|
||
|
||
### ADR-003: Named API Keys
|
||
Her frontend için ayrı API key kullanılır. Bu sayede:
|
||
- Hangi frontend'in istek attığı takip edilebilir
|
||
- Gerekirse tek bir frontend'in erişimi kapatılabilir
|
||
|
||
## Güncellemeler
|
||
|
||
| Tarih | Güncelleme |
|
||
|-------|-----------|
|
||
| 2025-02-27 | Proje oluşturuldu |
|
||
|
||
## İlgili Dokümanlar
|
||
|
||
- [API Dokümantasyonu](./api.md)
|
||
- [Operasyon Notları](./ops.md)
|
||
- [Socket Events](./socket-events.md)
|