# Bookibra - Teknoloji Yığını

## Teknoloji Yığınına Genel Bakış

Bookibra, modern web teknolojileri ile geliştirilmiş full-stack bir uygulamadır. Aşağıda kullanılan tüm teknolojiler, neden kullanıldıkları ve projedeki rolleri detaylı olarak açıklanmıştır.

## Backend Tekolojileri

### Runtime ve Framework

| Teknoloji | Versiyon | Kullanım Amacı | Neden Seçildi? |
|-----------|----------|----------------|----------------|
| **Node.js** | LTS | JavaScript runtime | Sunucu tarafında JavaScript kullanımı, büyük ekosistem, asenkron I/O |
| **Express.js** | ^5.1.0 | Web framework | Minimal, esnek, büyük middleware ekosistemi |

### Web Scraping

| Teknoloji | Versiyon | Kullanım Amacı | Neden Seçildi? |
|-----------|----------|----------------|----------------|
| **axios** | ^1.13.2 | HTTP istekleri | Promise-based, interceptor desteği, otomatik JSON dönüşümü |
| **cheerio** | ^1.1.2 | HTML parsing | jQuery syntax, hızlı ve hafif |
| **szbk-amazon-book-search** | ^1.1.1 | Amazon scraping | Amazon'a özelleşmiş scraping kütüphanesi |

### Veritabanı ve Önbellekleme

| Teknoloji | Versiyon | Kullanım Amacı | Neden Seçildi? |
|-----------|----------|----------------|----------------|
| **PostgreSQL** | 8.16.3 (client) | İlişkisel veritabanı | ACID uyumlu, güçlü, açık kaynak |
| **ioredis** | ^5.8.2 | Redis client | Promise-based, cluster desteği |
| **Redis** | 7-alpine | Önbellekleme | In-memory store, hızlı, TTL desteği |

### Kimlik Doğrulama ve Güvenlik

| Teknoloji | Versiyon | Kullanım Amacı | Neden Seçildi? |
|-----------|----------|----------------|----------------|
| **jsonwebtoken** | ^9.0.2 | JWT token oluşturma | Stateless auth, standart, güvenli |
| **bcrypt** | ^6.0.0 | Şifre hashleme | Güçlü hash algoritması, salting |
| **express-validator** | ^7.3.0 | Input validation | Express ile entegre, decorator-based |

### Gerçek Zamanlı İletişim

| Teknoloji | Versiyon | Kullanım Amacı | Neden Seçildi? |
|-----------|----------|----------------|----------------|
| **Socket.IO** | ^4.8.1 | WebSocket server | Fall-back mekanizması, room desteği |

### Araçlar ve Yardımcılar

| Teknoloji | Versiyon | Kullanım Amacı | Neden Seçildi? |
|-----------|----------|----------------|----------------|
| **dotenv** | ^17.2.3 | Ortam değişkenleri | .env dosyası yönetimi |
| **cors** | ^2.8.5 | CORS middleware | Cross-origin resource sharing |
| **chalk** | ^4.1.2 | Terminal renklendirme | Logları okunabilir yapma |
| **uuid** | ^13.0.0 | UUID oluşturma | Benzersiz ID oluşturma |
| **nodemon** | ^3.1.10 | Otomatik restart | Development sırasında kolaylık |

## Frontend Teknolojileri

### Core Framework

| Teknoloji | Versiyon | Kullanım Amacı | Neden Seçildi? |
|-----------|----------|----------------|----------------|
| **React** | ^19.1.1 | UI framework | Component-based, büyük ekosistem, hooks |
| **Vite** | ^7.1.7 | Build tool ve dev server | Hızlı HMR, native ES modules |

### Routing

| Teknoloji | Versiyon | Kullanım Amacı | Neden Seçildi? |
|-----------|----------|----------------|----------------|
| **React Router** | ^7.9.5 | Client-side routing | Declarative routing, nested routes |

### Animasyonlar

| Teknoloji | Versiyon | Kullanım Amacı | Neden Seçildi? |
|-----------|----------|----------------|----------------|
| **Framer Motion** | ^12.23.24 | Animasyon library | Declarative API, gesture desteği |

### İkonlar ve Görseller

| Teknoloji | Versiyon | Kullanım Amacı | Neden Seçildi? |
|-----------|----------|----------------|----------------|
| **Font Awesome** | ^7.1.0 | İkon seti | Geniş ikon kütüphanesi |
| **react-image-glow** | ^1.0.6 | Resim efekti | Estetik glow efekti |
| **color-thief-react** | ^2.1.0 | Renk extract | Resimlerden ana renk alma |

### Barkod Tarama

| Teknoloji | Versiyon | Kullanım Amacı | Neden Seçildi? |
|-----------|----------|----------------|----------------|
| **react-qr-barcode-scanner** | ^2.1.18 | Barkod tarama | Hem QR hem barkod desteği |

### Development Araçları

| Teknoloji | Versiyon | Kullanım Amacı | Neden Seçildi? |
|-----------|----------|----------------|----------------|
| **ESLint** | ^9.36.0 | Linter | Kod kalitesi, tutarlılık |
| **@vitejs/plugin-react** | ^5.0.4 | React için Vite plugin | Fast refresh, JSX support |

## DevOps Teknolojileri

### Containerization

| Teknoloji | Versiyon | Kullanım Amacı | Neden Seçildi? |
|-----------|----------|----------------|----------------|
| **Docker** | Latest | Containerization | Tutarlı deployment, izolasyon |
| **Docker Compose** | Latest | Multi-container orchestration | Local development, tüm servisleri bir arada |

### Docker Hizmetleri

```yaml
services:
  frontend:    # React uygulaması
  api:         # Express backend
  redis:       # Önbellekleme
  postgres:    # Kullanıcı veritabanı
```

## Veri Akışı Diyagramı

```
┌─────────────────────────────────────────────────────────────┐
│                    USER BROWSER                              │
│                    (React App)                               │
└─────────────────────────────────────────────────────────────┘
                            │
                            │ HTTP Request
                            ▼
┌─────────────────────────────────────────────────────────────┐
│                    EXPRESS SERVER                            │
│  ┌──────────────────────────────────────────────────────┐  │
│  │  Request Logging → Auth → Route → Controller         │  │
│  └──────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘
                            │
        ┌───────────────────┼───────────────────┐
        ▼                   ▼                   ▼
┌───────────────┐  ┌────────────────┐  ┌──────────────┐
│     REDIS     │  │   POSTGRES     │  │   AMAZON     │
│   Check &     │  │   User Data    │  │   Scraping   │
│   Store       │  │   Auth         │  │   Book Data  │
└───────────────┘  └────────────────┘  └──────────────┘
```

## Paket Yönetimi

### Backend
```bash
npm install              # Development
npm run dev             # Development server (nodemon)
npm start               # Production server
```

### Frontend
```bash
npm install              # Development
npm run dev             # Development server (Vite)
npm run build           # Production build
npm run preview         # Production preview
```

## Versiyon Yönetimi

```json
{
  "name": "bookibra",
  "version": "1.0.0",
  "description": "Amazon kitap verilerini sunan Express tabanli backend"
}
```

## Bağımlılık Yönetimi Stratejisi

### Semantic Versioning
- `^` (caret): Minor güncellemelere izin verir
- `~` (tilde): Patch güncellemelere izin verir
- Tam versiyon: Kilidi korur

### Güvenlik
- Düzenli `npm audit` çalıştırma
- Vulnerability takibi
- Güncel bağımlılıklar

## Performans Optimizasyonları

### Backend
1. **Redis Önbellekleme**: 6 saat TTL ile kitap verileri önbellekte tutulur
2. **Connection Pooling**: PostgreSQL için connection pooling
3. **Lazy Connection**: Redis için lazy connect
4. **Asenkron İşlemler**: Promise.all ile parallel işlemler

### Frontend
1. **Code Splitting**: Vite ile otomatik code splitting
2. **Tree Shaking**: Kullanılmayan kod eliminasyonu
3. **Image Optimization**: Lazy loading
4. **Local Storage**: İstemci taraflı veri saklama

## Gelecek Teknoloji Eklentileri

Potansiyel iyileştirmeler:
1. **GraphQL**: REST yerine daha verimli sorgular
2. **TypeScript**: Tip güvenliği
3. **Testing Framework**: Jest, Cypress
4. **CI/CD**: GitHub Actions, GitLab CI
5. **Monitoring**: Prometheus, Grafana
6. **Load Balancer**: Nginx, HAProxy

---

**İlgili Dosyalar:**
- [Proje Genel Bakış](./proje-genel-bakis.md)
- [Backend Yapısı](./backend-yapisi.md)
- [Frontend Yapısı](./frontend-yapisi.md)
