Files
ratebubble/doc/overview.md
2026-02-28 02:44:41 +03:00

83 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)