README.md ve detaylı teknik dokümantasyon dosyaları (genel bakış, backend yapısı, frontend yapısı, teknoloji yığını) eklendi.
212 lines
8.8 KiB
Markdown
212 lines
8.8 KiB
Markdown
# 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)
|