# 📊 ReviewPilot — Kurulum & Deployment Rehberi
## Pinkod Dijital | Shared Hosting Edition

---

## 📑 İçindekiler

1. [Sistem Gereksinimleri](#sistem-gereksinimleri)
2. [Hızlı Kurulum (5 dakika)](#hızlı-kurulum)
3. [Detaylı Kurulum Adımları](#detaylı-kurulum-adımları)
4. [API Anahtarları Yapılandırması](#api-anahtarları)
5. [Sorun Giderme](#sorun-giderme)
6. [Bakım & Monitoring](#bakım--monitoring)
7. [Production Optimization](#production-optimization)

---

## 🔧 Sistem Gereksinimleri

### Hosting (Pinkod Dijital veya benzer)
- ✅ **Node.js** 16+ (cPanel: EasyApache → Node.js)
- ✅ **npm** 7+
- ✅ **SQLite3** (varsayılan yüklü)
- ✅ **SSH Erişimi** etkinleştirilmiş
- ✅ **mod_rewrite** ve **mod_proxy** (Apache)
- ✅ Minimum **500MB** boş disk alanı

### Lokal Geliştirme
```bash
node --version     # v18.0.0 veya üstü
npm --version      # 8.0.0 veya üstü
sqlite3 --version  # İsteğe bağlı
```

---

## ⚡ Hızlı Kurulum

Hosting'e SSH ile bağlandıktan sonra:

```bash
# 1. Dosyaları indir
cd ~ && unzip reviewpilot-full.zip

# 2. Hızlı kurulum scripti çalıştır
bash reviewpilot-full/quick-install.sh

# 3. .env dosyasını düzenle
nano ~/private/reviewpilot-backend/.env

# 4. Tarayıcıda test et
# https://orneksite.com/app/
```

**Demo Giriş:**
- E-posta: `admin@reviewpilot.com`
- Şifre: `Admin123!`

---

## 🛠️ Detaylı Kurulum Adımları

### Aşama 1: SSH Bağlantısı

```bash
# Lokal bilgisayarınızdan
ssh kullaniciadi@orneksite.com

# Şifre girip Enter
# Bağlantı tamamlandı ✓
```

### Aşama 2: Dosyaları Yükle

**Seçenek A: FTP ile**
1. Filezilla/WinSCP aç
2. `reviewpilot-full/` klasörünü ev dizinine kopyala
3. Backend dosyalarını `private/reviewpilot-backend/` a taşı
4. Frontend dosyalarını `public_html/app/` a taşı

**Seçenek B: Git ile**
```bash
cd ~
git clone https://github.com/pinkoddigital/reviewpilot.git reviewpilot-full
```

**Seçenek C: SSH curl ile**
```bash
cd ~
curl -L -o reviewpilot.zip https://github.com/.../releases/.../reviewpilot-full.zip
unzip reviewpilot.zip
```

### Aşama 3: Backend Kurulumu

```bash
cd ~/private/reviewpilot-backend

# Bağımlılıkları yükle
npm install --production

# Veritabanını oluştur
npm run migrate

# Çıktı:
# ✅ Demo verileri oluşturuldu
# ✅ Veritabanı migration tamamlandı
```

### Aşama 4: Frontend Kurulumu

```bash
cd ~/public_html/app

# Bağımlılıkları yükle
npm install

# Production build oluştur
npm run build

# Çıktı:
# dist/index.html
# dist/assets/App-xxxxx.js
# ✓ built in 3.2s
```

### Aşama 5: Backend'i Başlat (PM2)

```bash
# PM2'yi global yükle
npm install -g pm2

# Backend'i başlat
cd ~/private/reviewpilot-backend
pm2 start src/index.js --name "reviewpilot-backend" --env production

# Startup'a ekle (otomatik yeniden başlatma)
pm2 startup
# Çıkacak komut kopyala-yapıştır

pm2 save

# Durumu kontrol et
pm2 status
pm2 logs reviewpilot-backend
```

### Aşama 6: Proxy Ayarı (Apache)

cPanel → "Select PHP Version" → "Apache Handler" seçili mi kontrol et

Sonra `public_html/app/.htaccess` oluştur:

```apache
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /app/
  RewriteCond %{REQUEST_FILENAME} -f [OR]
  RewriteCond %{REQUEST_FILENAME} -d
  RewriteRule ^ - [L]
  RewriteCond %{REQUEST_URI} ^/api/
  RewriteRule ^api/(.*)$ http://localhost:3001/api/$1 [P,L,QSA]
  RewriteRule ^(.*)$ index.html [QSA,L]
</IfModule>

<IfModule mod_proxy.c>
  ProxyRequests Off
  ProxyPreserveHost On
  ProxyPass /api/ http://localhost:3001/api/ nocanon
  ProxyPassReverse /api/ http://localhost:3001/api/
</IfModule>
```

### Aşama 7: SSL Etkinleştir

cPanel → AutoSSL → "Issue" butonuna tıkla
veya Let's Encrypt seçeneğini aktifleştir

### Aşama 8: Health Check

```bash
# Backend sağlığı kontrol
curl http://localhost:3001/api/health

# Beklenen yanıt:
# {"status":"ok","time":"2026-05-31T...","version":"1.0.0"}

# Frontend'e erişim
# Tarayıcı: https://orneksite.com/app/
```

---

## 🔑 API Anahtarları Yapılandırması

### Google Places API

1. https://console.cloud.google.com git
2. Yeni Proje Oluştur
3. "Places API" ara, etkinleştir
4. Credentials → Create API Key
5. Restriction: HTTP referrers

```bash
# .env dosyasında
GOOGLE_PLACES_API_KEY=AIzaSyD...
```

### Anthropic API (Claude AI)

1. https://console.anthropic.com git
2. "API Keys" → Create New API Key
3. Kopyala

```bash
ANTHROPIC_API_KEY=sk-ant-v7-...
```

### Gmail SMTP (E-posta)

1. Gmail hesabı → Güvenlik → 2 Adımlı Doğrulama
2. Uygulama Şifreleri → Mail + Diğer Cihaz
3. 16 haneli şifre oluştur

```bash
SMTP_USER=senin@gmail.com
SMTP_PASS=xxxx xxxx xxxx xxxx
```

### Telegram Bot

1. Telegram → `@BotFather` → `/newbot`
2. Bot adı ve @kullaniciadi ver → Token al
3. Bota `/start` gönder
4. `https://api.telegram.org/bot<TOKEN>/getUpdates` → chat.id

```bash
TELEGRAM_BOT_TOKEN=1234567890:AAF...
```

### .env Dosyasını Düzenle

```bash
nano ~/private/reviewpilot-backend/.env
```

Tüm anahtarları doldur. Sonra Ctrl+X → Y → Enter

---

## ⚠️ Sorun Giderme

### Backend 502 Bad Gateway Hatası

```bash
# 1. PM2 loglarını kontrol et
pm2 logs reviewpilot-backend

# 2. Bağlantı sını
curl http://localhost:3001/api/health

# 3. Port zaten kullanılıyorsa
lsof -i :3001
kill -9 <PID>

# 4. Yeniden başlat
pm2 restart reviewpilot-backend
```

### Veritabanı Kilitli

```bash
cd ~/private/reviewpilot-backend
rm -f data/reviewpilot.db-journal
npm run migrate
pm2 restart reviewpilot-backend
```

### Node.js Sürüm Hatası

```bash
# Kurulu sürümleri listele
node -v

# Güncelle (hosting sağlayıcısından)
# cPanel → Software Collections → Node.js 18.x
```

### npm Install Başarısız

```bash
# Cache temizle
npm cache clean --force

# npm güncelle
npm install -g npm@latest

# Tekrar dene
npm install --production
```

### Frontend Boş Sayfası Gösteriyor

```bash
# Build'i yeniden oluştur
cd ~/public_html/app
rm -rf node_modules dist
npm install
npm run build

# .htaccess varsa kontrol et
cat .htaccess
```

---

## 🔍 Bakım & Monitoring

### Günlük Kontrol

```bash
# Sistem durumu
pm2 status

# CPU ve bellek kullanımı
pm2 monit

# Son hatalar
pm2 logs reviewpilot-backend --err
```

### Haftalık Bakım

```bash
# Veritabanı optimize
cd ~/private/reviewpilot-backend
sqlite3 data/reviewpilot.db "VACUUM; ANALYZE;"

# Bellek kontrolü
free -h

# Disk kullanımı
du -sh ~
```

### Aylık Bakım

```bash
# Dependency güncellemeleri kontrol
cd ~/private/reviewpilot-backend
npm outdated

# Yedekleme (cPanel Backup veya manuel)
cd ~
tar -czf backup-$(date +%Y%m%d).tar.gz private/reviewpilot-backend public_html/app logs/
```

### Cron Jobs (Otomatik)

```bash
# Crontab aç
crontab -e

# Aşağıdakileri ekle:
# PM2 health check (her 5 dakika)
*/5 * * * * curl -s http://localhost:3001/api/health > /dev/null || pm2 restart reviewpilot-backend

# Haftalık DB temizleme
0 2 * * 0 cd ~/private/reviewpilot-backend && sqlite3 data/reviewpilot.db "VACUUM;"

# Aylık yedekleme
0 3 1 * * tar -czf ~/backup-$(date +\%Y\%m\%d).tar.gz ~/private/reviewpilot-backend
```

---

## 🚀 Production Optimization

### 1. Node Bellek Limiti

```bash
# .env
NODE_OPTIONS="--max-old-space-size=512"
```

### 2. PM2 Cluster Mode

```bash
# Multiple instances
pm2 start src/index.js -i max --name "reviewpilot-backend"
```

### 3. Gzip Sıkıştırması

`.htaccess` içinde:
```apache
<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/css application/json
</IfModule>
```

### 4. Cache Headers

```apache
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresByType application/javascript "access plus 1 month"
  ExpiresByType text/css "access plus 1 month"
  ExpiresByType image/* "access plus 1 month"
</IfModule>
```

### 5. Rate Limiting (Backend)

Backend'de zaten implementasyon var:
- 200 istek/15dk genel
- 20 deneme/15dk login

### 6. Database Index

```bash
cd ~/private/reviewpilot-backend
sqlite3 data/reviewpilot.db << 'SQL'
CREATE INDEX IF NOT EXISTS idx_reviews_status ON reviews(status);
CREATE INDEX IF NOT EXISTS idx_reviews_rating ON reviews(rating);
CREATE INDEX IF NOT EXISTS idx_reviews_business ON reviews(business_id);
ANALYZE;
SQL
```

---

## 📊 Monitoring & Analytics

### Sistem Durumu Paneli

```bash
# Gerçek zamanlı monitoring
pm2 monit

# Web dashboard (opsiyonel)
npm install -g pm2-web
pm2 web
# http://localhost:9615 git
```

### Günlük Kontrol Listesi

- [ ] PM2 durumu kontrol (pm2 status)
- [ ] Error logs kontrol (pm2 logs --err)
- [ ] API health check (curl /api/health)
- [ ] Frontend erişim test
- [ ] Disk kullanımı kontrol (du -sh)

### Aylık Kontrol Listesi

- [ ] Dependency güncellemeleri (npm outdated)
- [ ] SSL sertifika geçerli mi (cPanel SSL checker)
- [ ] Yedekleme başarılı mı
- [ ] Performance analytics
- [ ] Security logs

---

## 🎓 Kullanıcı Yönetimi

### Demo Hesapları

| E-posta | Şifre | Rol |
|---------|-------|-----|
| admin@reviewpilot.com | Admin123! | Admin (tüm işletmeler) |
| nazar@reviewpilot.com | demo123 | Manager (Nazar Cafe) |

### Yeni Kullanıcı Ekleme

Panel → Ayarlar → Kullanıcılar → Yeni Kullanıcı

Veya API:
```bash
curl -X POST http://localhost:3001/api/auth/register \
  -H "Authorization: Bearer [ADMIN_TOKEN]" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Yeni Yönetici",
    "email": "yonetici@orneksite.com",
    "password": "GuclluSifre123",
    "role": "manager",
    "businessIds": ["biz_id_1", "biz_id_2"]
  }'
```

---

## 🔐 Güvenlik Kontrol Listesi

- [ ] JWT_SECRET güçlü mü (.env)
- [ ] Google API anahtarı domain-restricted mi
- [ ] SMTP şifresi secure mi
- [ ] SSL sertifikası aktif mi
- [ ] Firewall kuralları doğru mu
- [ ] Dosya izinleri uygun mu (644 dosyalar, 755 klasörler)
- [ ] .env dosyası gizli dizinde mi (~/private/)
- [ ] Veritabanı public erişimli değilmi

---

## 📞 Destek & İletişim

**Pinkod Dijital Destek:** support@pinkoddigital.com

---

## 📝 Lisans ve Hukuki

ReviewPilot © 2026 Pinkod Dijital. Tüm hakları saklıdır.

Sorular? E-posta gönder veya panel üzerinden mesaj bırak.

---

**Son Güncelleme:** 31 Mayıs 2026 | v1.0.0
