docs: proje dokümantasyonunu ekle
README.md ve detaylı teknik dokümantasyon dosyaları (genel bakış, backend yapısı, frontend yapısı, teknoloji yığını) eklendi.
This commit is contained in:
211
doc/teknoloji-yigini.md
Normal file
211
doc/teknoloji-yigini.md
Normal file
@@ -0,0 +1,211 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user