# 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)