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:
132
doc/proje-genel-bakis.md
Normal file
132
doc/proje-genel-bakis.md
Normal file
@@ -0,0 +1,132 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user