Files
bookibra/README.md
wisecolt 836d60da78 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.
2026-02-10 21:57:56 +03:00

300 lines
8.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Bookibra 📚
**Bookibra**, Amazon'dan kitap verilerini çeken, barkod tarama özelliği olan ve kişisel kitap kütüphanesi yönetimi sağlayan modern bir full-stack web uygulamasıdır.
## 📋 Proje Hakkında
Bookibra, kitap severler için geliştirilmiş bir platformdur. Ana özellikleri:
- 🔍 **Kitap Arama**: ISBN veya başlık ile kitap arama
- 📸 **Barkod Tarama**: Kamera ile ISBN barkod tarama
- 🌍 **Çoklu Dil**: Türkçe ve İngilizce Amazon sitelerinden veri çekme
- 💾 **Kütüphane Yönetimi**: Kitapları kaydetme ve organize etme
-**Önbellekleme**: Redis ile hızlı erişim
## 🏗️ Mimari
```
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Frontend │─────▶│ Backend │─────▶│ Amazon │
│ (React) │ │ (Express) │ │ Scraping │
└─────────────┘ └─────────────┘ └─────────────┘
┌───────────────────┼───────────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Redis │ │ PostgreSQL │ │ Socket.IO │
│ (Cache) │ │ (Users) │ │ (WebSocket) │
└─────────────┘ └─────────────┘ └─────────────┘
```
## 🚀 Hızlı Başlangıç
### Gereksinimler
- Docker ve Docker Compose
- Node.js 20+ (Docker olmadan geliştirme için)
### Docker ile Başlatma
1. Projeyi klonlayın:
```bash
git clone https://github.com/yourusername/bookibra.git
cd bookibra
```
2. Ortam değişkenlerini yapılandırın:
```bash
cp .env.example .env
# .env dosyasını düzenleyin (JWT_SECRET vb.)
```
3. Tüm servisleri başlatın:
```bash
docker-compose up --build
```
4. Tarayıcıda açın:
- Frontend: http://localhost:5173
- Backend API: http://localhost:8080
- Health Check: http://localhost:8080/health
### Manuel Kurulum (Development)
#### Backend
```bash
# Backend dizininde
npm install
npm run dev
```
#### Frontend
```bash
# Frontend dizininde
npm install
npm run dev
```
## 📁 Proje Yapısı
```
bookibra/
├── doc/ # Dokümantasyon
├── frontend/ # React Frontend
│ ├── src/
│ │ ├── components/ # React bileşenleri
│ │ ├── pages/ # Sayfalar
│ │ ├── context/ # Context API
│ │ └── main.jsx # Giriş noktası
│ └── package.json
├── src/ # Backend
│ ├── config/ # Yapılandırma
│ ├── controllers/ # Endpoint kontrolcüleri
│ ├── middleware/ # Express middleware
│ ├── routes/ # API rotaları
│ ├── services/ # İş mantığı
│ └── utils/ # Yardımcı fonksiyonlar
├── docker-compose.yml # Docker orchestration
├── Dockerfile # Backend Docker image
└── package.json
```
## 🔧 Ortam Değişkenleri
```bash
# Backend (.env)
NODE_ENV=development
PORT=8080
GEMINI_API_KEY=your_gemini_key # İsteğe bağlı
ALLOWED_ORIGINS=*
REQUEST_LOGGING=true
REDIS_URL=redis://redis:6379
ISBN_CACHE_TTL_SECONDS=21600
JWT_SECRET=please_change_me # Production'da değiştirin!
JWT_EXPIRES_IN=1h
# PostgreSQL
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DB=bookibra
POSTGRES_USER=bookibra
POSTGRES_PASSWORD=bookibra
# Frontend (frontend/.env)
VITE_API_BASE_URL=http://localhost:8080
```
## 📡 API Endpoint'leri
### Kitap Arama
| Endpoint | Method | Açıklama |
|----------|--------|----------|
| `/api/books/isbn/:isbn` | GET | ISBN ile kitap arama |
| `/api/books/title` | GET | Başlık ile kitap arama |
| `/api/books/filter` | GET | Başlık ve yıl ile filtreleme |
**Örnek:**
```bash
# ISBN ile arama
curl "http://localhost:8080/api/books/isbn/9786053717355?locales=tr,en"
# Başlık ile arama
curl "http://localhost:8080/api/books/title?title=Suç%20ve%20Ceza&locales=tr"
# Tarih filtreleme
curl "http://localhost:8080/api/books/filter?title=Sapiens&published=2011"
```
### Kimlik Doğrulama
| Endpoint | Method | Açıklama |
|----------|--------|----------|
| `/api/auth/register` | POST | Kayıt olma |
| `/api/auth/login` | POST | Giriş yapma |
| `/api/auth/profile` | GET | Profil bilgisi (Auth required) |
**Örnek:**
```bash
# Kayıt olma
curl -X POST http://localhost:8080/api/auth/register \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com","password":"password123"}'
# Giriş yapma
curl -X POST http://localhost:8080/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com","password":"password123"}'
```
## 🎨 Kullanım
### Kitap Arama
1. **Add Books** sayfasına gidin
2. Arama kutusuna kitap adını yazın
3. Ara butonuna tıklayın
4. Sonuçları görüntüleyin ve kütüphanenize ekleyin
### Barkod Tarama
1. **Add Books** sayfasında barkod ikonuna tıklayın
2. Kitabın barkodunu kameraya gösterin
3. Kitap bilgileri otomatik getirilecek
### Kütüphane Yönetimi
1. **My Books** sayfasına gidin
2. Kayıtlı kitaplarınızı görüntüleyin
3. Detayları görmek için kitaba tıklayın
4. Silmek için "Remove from My Books" butonuna tıklayın
## 🛠️ Geliştirme
### Backend Development
```bash
npm run dev # nodemon ile development server
npm start # Production server
```
### Frontend Development
```bash
npm run dev # Vite development server
npm run build # Production build
npm run preview # Build preview
```
### Docker Development
```bash
# Tüm servisleri başlat
docker-compose up
# Arka planda çalıştır
docker-compose up -d
# Logları görüntüle
docker-compose logs -f
# Servisleri durdur
docker-compose down
# Volumes ile birlikte temizle
docker-compose down -v
```
## 📚 Dokümantasyon
Detaylı dokümantasyon için `/doc` dizinine bakın:
- [Proje Genel Bakış](./doc/proje-genel-bakis.md) - Proje hakkında genel bilgi
- [Backend Yapısı](./doc/backend-yapisi.md) - Backend detayları
- [Frontend Yapısı](./doc/frontend-yapisi.md) - Frontend detayları
- [Teknoloji Yığını](./doc/teknoloji-yigini.md) - Kullanılan teknolojiler
## 🔐 Güvenlik
- JWT token tabanlı kimlik doğrulama
- bcrypt ile şifre hashleme (10 rounds)
- CORS yapılandırması
- Input validation (express-validator)
**Production için:**
- `JWT_SECRET` ortam değişkenini güçlü bir değerle değiştirin
- HTTPS kullanın
- Rate limiting ekleyin
- Güvenlik header'larını ekleyin (helmet)
## 🐛 Sorun Giderme
### Redis Bağlantı Hatası
```bash
# Redis container'ının çalıştığından emin olun
docker-compose ps redis
# Redis loglarını kontrol edin
docker-compose logs redis
```
### PostgreSQL Bağlantı Hatası
```bash
# PostgreSQL container'ını kontrol edin
docker-compose ps postgres
# Database'i yeniden oluşturun
docker-compose down -v
docker-compose up
```
### Frontend API Erişim Hatası
```bash
# frontend/.env dosyasında VITE_API_BASE_URL'in doğru olduğundan emin olun
# Docker kullanıyorsanız: http://localhost:8080
```
## 📝 Lisans
ISC
## 🤝 Katkıda Bulunma
Katkılarınızı bekliyoruz! Lütfen:
1. Fork yapın
2. Feature branch oluşturun (`git checkout -b feature/amazing-feature`)
3. Değişikliklerinizi commit edin (`git commit -m 'feat: Add amazing feature'`)
4. Branch'inizi push edin (`git push origin feature/amazing-feature`)
5. Pull Request açın
## 👥 Geliştiriciler
- Bookibra Development Team
---
**Not**: Bu proje AI agent'ların projeyi daha iyi anlaması için detaylı dokümantasyon ile geliştirilmiştir. Dokümantasyon `/doc` dizininde Türkçe olarak bulunabilir.