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