# Bookibra - Proje Genel Bakış

## Proje Tanımı

**Bookibra**, Amazon'dan kitap verilerini çekip sunan, barkod tarama özelliği bulunan ve kullanıcıların kendi kitap kütüphanelerini yönetebilecekleri modern bir full-stack web uygulamasıdır.

## Ana Özellikler

### 1. Kitap Arama ve Keşfetme
- ISBN ile kitap arama
- Kitap başlığı ile arama
- Yayın tarihine göre filtreleme (örn: "Kitap Adı .2020")
- Çoklu dil desteği (Türkçe/İngiliz Amazon siteleri)

### 2. Barkod Tarama
- Cihaz kamerası ile ISBN barkod tarama
- Otomatik kitap bilgisi getirme
- Mobil uyumlu tarayıcı arayüzü

### 3. Kullanıcı Yönetimi
- Kayıt olma ve giriş yapma
- JWT tabanlı kimlik doğrulama
- Profil yönetimi

### 4. Kitap Kütüphanesi
- Kitapları kaydetme (localStorage)
- Kayıtlı kitapları görüntüleme
- Kitap detaylarını inceleme
- Kitap silme

### 5. Performans ve Önbellekleme
- Redis ile önbellekleme sistemi
- Medya (kapak resmi) önbellekleme
- Amazon API çağrılarını minimize etme

## Mimari Genel Bakış

```
┌─────────────────────────────────────────────────────────────┐
│                         CLIENT                               │
│                   (React + Vite)                            │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐   │
│  │ HomePage │  │AddBooks  │  │ MyBooks  │  │ Profile  │   │
│  └──────────┘  └──────────┘  └──────────┘  └──────────┘   │
└─────────────────────────────────────────────────────────────┘
                            │
                            │ HTTP/REST
                            ▼
┌─────────────────────────────────────────────────────────────┐
│                      BACKEND API                             │
│                   (Express + Node.js)                       │
│  ┌────────────┐  ┌────────────┐  ┌──────────────────────┐  │
│  │ Auth Routes│  │Book Routes │  │  Middleware          │  │
│  └────────────┘  └────────────┘  │  - Auth              │  │
│                                   │  - Error Handler     │  │
│  ┌────────────┐  ┌────────────┐  │  - Request Logger    │  │
│  │ Controllers│  │ Services   │  └──────────────────────┘  │
│  └────────────┘  └────────────┘                           │
└─────────────────────────────────────────────────────────────┘
                            │
        ┌───────────────────┼───────────────────┐
        ▼                   ▼                   ▼
┌───────────────┐  ┌────────────────┐  ┌──────────────┐
│    Redis      │  │   PostgreSQL   │  │   Socket.IO  │
│   (Cache)     │  │  (Users DB)    │  │ (WebSocket)  │
└───────────────┘  └────────────────┘  └──────────────┘
        │
        ▼
┌─────────────────────────────────────────┐
│         External Services                │
│  ┌──────────────┐  ┌──────────────┐    │
│  │   Amazon     │  │   Gemini AI  │    │
│  │   Scraping   │  │   (Optional) │    │
│  └──────────────┘  └──────────────┘    │
└─────────────────────────────────────────┘
```

## Proje Yapısı

### Dizin Hiyerarşisi

```
bookibra/
├── doc/                    # Dokümantasyon
├── frontend/               # React Frontend Uygulaması
│   ├── src/
│   │   ├── components/     # React Bileşenleri
│   │   ├── pages/          # Sayfa Bileşenleri
│   │   ├── context/        # React Context API
│   │   └── main.jsx        # Uygulama Giriş Noktası
│   └── package.json
├── src/                    # Backend Kaynak Kodları
│   ├── config/             # Yapılandırma Dosyaları
│   ├── controllers/        # İstek Kontrolcüleri
│   ├── middleware/         # Express Middleware
│   ├── routes/             # API Rotaları
│   ├── services/           # İş Mantığı Servisleri
│   ├── utils/              # Yardımcı Fonksiyonlar
│   ├── validators/         # İstek Doğrulayıcıları
│   ├── app.js              # Express Uygulaması
│   └── server.js           # HTTP Sunucusu
├── docker-compose.yml      # Docker Orchestration
├── Dockerfile              # Backend Docker Image
└── package.json
```

## Çalışma Prensibi

### Kitap Arama Akışı

1. **Kullanıcı İsteği**: Frontend'den arama parametresi gönderilir
2. **Önbellek Kontrolü**: Redis'te önceden yapılmmış arama var mı kontrol edilir
3. **Amazon Scraping**: Önbellekte yoksa Amazon'dan veri çekilir
4. **Veri İşleme**: HTML parse edilir ve kitap bilgileri çıkarılır
5. **Önbellekleme**: Sonuçlar Redis'e kaydedilir
6. **Cevap**: İşlenmiş veri frontend'e gönderilir

### Barkod Tarama Akışı

1. **Kamera Erişimi**: React-qr-barcode-scanner ile kamera açılır
2. **Barkod Algılama**: ISBN formatında barkod algılanır
3. **ISBN Arama**: Backend'e ISBN ile kitap bilgisi istenir
4. **Kitap Gösterimi**: Bulunan kitap kullanıcıya sunulur

## Deployment

Uygulama Docker Compose ile tüm servisleri (frontend, backend, redis, postgres) tek seferde başlatmayı destekler.

---

**Son Güncelleme**: 2026-02-10
**Versiyon**: 1.0.0
