first commit
This commit is contained in:
82
doc/overview.md
Normal file
82
doc/overview.md
Normal file
@@ -0,0 +1,82 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user