projectrules.ai

🔥 Tüm Proje Standartları ve Yapısı (Backend & Frontend)

BackendFrontendIntegrationAPIStandards

Description

# 🎯 Cursor AI Asistan Kuralları ve Proje Standartları

Globs

**/*
---
description: # 🎯 Cursor AI Asistan Kuralları ve Proje Standartları
globs: **/*
---

# 🔥 Tüm Proje Standartları ve Yapısı (Backend & Frontend)

**Amaç:** Bu belge, projenin **backend, frontend, veritabanı, entegrasyonlar ve altyapı gereksinimlerini** belirleyen kesin ve net standartları tanımlar.

## 📌 1. Proje Genel Bakışı
Bu proje, Wolvox ERP sistemi ile WooCommerce e-ticaret platformu arasında tam entegrasyon sağlayan bir sistemdir. Temel hedeflerimiz:

- Wolvox ve WooCommerce arasında gerçek zamanlı veri senkronizasyonu
- Yüksek performanslı ve ölçeklenebilir API altyapısı
- Güvenli ve izlenebilir veri akışı
- Kullanıcı dostu yönetim arayüzü

## 📌 2. Kişilik ve Davranış Kuralları
Ben bir kıdemli yazılım geliştirici olarak:

- Her zaman en iyi pratikleri ve tasarım desenlerini kullanırım
- Kodun okunabilirliğini ve bakım yapılabilirliğini ön planda tutarım
- Güvenlik açıklarına karşı proaktif yaklaşırım
- Detaylı dokümantasyon ve açıklayıcı yorumlar eklerim

## 📌 1. Proje Gereksinimleri
**Tüm bileşenler kesin kurallarla tanımlanmalı ve herhangi bir sapmaya izin verilmemelidir.**

### **1.1 Genel Teknoloji Seçimleri**
- **Backend:** Python (FastAPI)
- **Frontend:** React + Next.js (TypeScript .tsx)
- **Veritabanı:** Firebird 2.5
- **Cache:** Redis
- **E-Ticaret API:** WooCommerce
- **Testler:** pytest
- **CI/CD:** GitHub Actions
- **Konteynerizasyon:** Docker + Docker Compose
- **Sunucu:** Ubuntu 22.04 (NGINX, Supervisor)
- **MasaĂĽstĂĽnden Tek TuĹźla BaĹźlatma:** Windows `.bat` & Linux `.sh` scriptleri

---

## 📌 2. Dizin Yapısı
📍 **Projede, kesinleşmiş standart dizin yapısı kullanılmalı ve farklı isimlendirme yapılmamalıdır.**

```
/project_root
│── backend
│   ├── src
│   │   ├── api  # API endpointleri
│   │   │   ├── v1
│   │   │   │   ├── products.py  # WooCommerce entegrasyonu
│   │   │   │   ├── orders.py  # Sipariş entegrasyonu
│   │   │   │   ├── customers.py  # Müşteri entegrasyonu
│   │   ├── wolvox
│   │   │   ├── wolvox_service.py  # Wolvox veri senkronizasyonu
│   │   │   ├── wolvox_db.py  # Firebird 2.5 veritabanı bağlantısı
│   │   ├── core
│   │   │   ├── database.py  # ORM & DB Bağlantısı
│   │   │   ├── settings.py  # Konfigürasyon
│   │   ├── utils
│   │   │   ├── logger.py  # Loglama
│   │   │   ├── cache.py  # Redis bağlantısı
│   │   ├── main.py  # Ana FastAPI uygulaması
│   ├── tests
│   │   ├── test_products.py  # WooCommerce testi
│   │   ├── test_wolvox.py  # Wolvox testi
│   ├── scripts
│   │   ├── start_backend.bat  # Windows için başlatma scripti
│   │   ├── start_backend.sh  # Linux için başlatma scripti
│   ├── prometheus  # Backend metrik konfigürasyonları
│   │   ├── prometheus.yml
│   │   └── metrics/
│   ├── k8s  # Kubernetes manifest dosyaları
│   │   ├── deployment.yaml
│   │   └── service.yaml
│   ├── helm  # Helm chart'ları
│   │   ├── templates/
│   │   └── values.yaml
│   ├── deployment  # CI/CD ve deployment scriptleri
│   │   ├── scripts/
│   │   └── configs/
│   ├── Dockerfile
│   ├── docker-compose.yml
│   ├── .env
│
│── prometheus  # Ana prometheus konfigürasyonları
│   ├── prometheus.yml  # Ana prometheus konfigürasyonu
│   └── rules/  # Alert kuralları
│
│── frontend
│   ├── src
│   │   ├── components
│   │   ├── pages
│   │   │   ├── index.tsx  # Ana sayfa
│   │   ├── services
│   │   │   ├── api.ts  # Backend ile iletişim
│   ├── public
│   ├── styles
│   ├── package.json
│   ├── tsconfig.json
│   ├── next.config.js
│
│── docs  # Proje dokümanları
│   ├── README.md
│   ├── API_DOCS.md  # API dokümanları
│
│── .gitignore
│── requirements.txt  # Backend bağımlılıkları
│── package.json  # Frontend bağımlılıkları
```

---

## 📌 3. Kodlama Standartları

### **3.1 Backend (Python + FastAPI)**
- **Kodlama standardı:** PEP8
- **Bağımlılıklar:** `requirements.txt` ile sabitlenmeli.
- **Veri modeli:** Pydantic + SQLAlchemy
- **Bağlantı:** Firebird **hardcoded değil,** `.env` dosyasından alınmalı.
- **Hata yönetimi:**
  - Tüm hatalar `try-except` blokları ile ele alınmalı.
  - Loglar `utils/logger.py` içinde tutulmalı.

### **3.2 Frontend (React + TypeScript + Next.js)**
- **Tüm bileşenler `.tsx` uzantılı olmalı.**
- **Fonksiyonlar `useEffect` ve `useState` ile kontrol edilmeli.**
- **Redux veya Context API kullanılmalı.**
- **Tüm stil dosyaları `TailwindCSS` veya modüler kullanarak ayrılmalı.**
- **Backend API'ye sadece `services/api.ts` içinden erişilmeli.**

---

## 📌 4. API Standartları
### **4.1 Genel API Kuralları**
- **API sadece JWT ile erişime açık olmalı.**
- **Tüm endpointler `api/v1/` formatında olmalı.**
- **Hatalar JSON formatında döndürülmelidir.**

### **4.2 WooCommerce API**
- **API Anahtarları `.env` dosyasında saklanmalı.**
- **Tüm çağrılar `async` ve `await` kullanarak yapılmalı.**
- **Yüksek hacimli istekler Redis cache ile yönetilmeli.**

---

## 📌 5. Hata Yönetimi ve Loglama
- **Hatalar 3 seviyeye ayrılmalı:** `DEBUG`, `INFO`, `ERROR`
- **Kritik hatalar Slack veya E-Posta ile bildirilmelidir.**
- **Tüm loglar günlük olarak temizlenmeli ve sıkıştırılmalıdır.**

---

## 📌 6. Test Standartları
### **6.1 Backend Testleri**
- **Pytest kullanılmalı.**
- **TĂĽm API endpointleri test edilmeli.**
- **Veritabanı testleri için mock Firebird kullanılmalı.**

### **6.2 Frontend Testleri**
- **Jest + React Testing Library kullanılmalı.**
- **Her sayfa test edilmeli.**
- **API bağlantıları mock edilerek test edilmelidir.**

---

## 📌 7. CI/CD ve Deployment Standartları
### **7.1 CI/CD Kuralları**
- **GitHub Actions kullanılmalı.**
- **Push anında backend testleri çalıştırılmalı.**
- **Docker container otomatik oluşturulmalı.**

### **7.2 Deployment**
- **Backend: Ubuntu 22.04 + Gunicorn + Supervisor + Nginx**
- **Frontend: Vercel veya Nginx ĂĽzerinden deploy edilmeli.**

---
## 📌 8. Monitoring ve Deployment Altyapısı
### 8.1 Monitoring (Prometheus & Grafana)
- **Ana prometheus/ dizini:** Tüm servislerin metrik toplama konfigürasyonları
- **backend/prometheus/:** Backend-spesifik metrik konfigürasyonları
- **Metrik standardı:** RED (Rate, Errors, Duration) metodolojisi

### 8.2 Kubernetes & Helm
- **k8s/:** Kubernetes manifest dosyaları
- **helm/:** Helm chart'ları ve değerleri
- **deployment/:** CI/CD ve deployment scriptleri

## 📌 9. Sonuç
Bu belge, **kesin kurallara sahip bir proje mimarisi oluşturmak için** rehberdir. **Tüm geliştiriciler bu standartlara uymak zorundadır.**

### 🚀 Wolvox-WooCommerce Entegrasyonu - Loglama ve Hata Yönetimi Standartları

Bu belge, **loglama ve hata yönetimi süreçlerini** belirler. Tüm hata yönetimi ve günlükleme işlemleri **tutarlı, detaylı ve izlenebilir olmalıdır**.

---

## 📌 1. Genel Kurallar
✔ **Tüm işlemler loglanmalıdır.**
   - **Başarılı ve başarısız işlemler kayıt altına alınmalıdır.**
   - **Loglarda detaylı bilgi bulunmalıdır (timestamp, hata türü, çağıran modül vb.).**

✔ **Hata yönetimi merkezi bir yapı üzerinden gerçekleştirilmelidir.**
   - **TĂĽm hatalar `error_handler.py` ĂĽzerinden iĹźlenmelidir.**
   - **Kritik hatalar e-posta veya bildirim servisi ile yöneticilere iletilmelidir.**

âś” **Log seviyeleri (Logging Levels) net olarak belirlenmelidir.**
   - `DEBUG`: Hata ayıklama için düşük seviyeli bilgi.
   - `INFO`: Genel çalışma bilgileri.
   - `WARNING`: Potansiyel sorunlar.
   - `ERROR`: İşleyişi bozan hatalar.
   - `CRITICAL`: Acil mĂĽdahale gerektiren hatalar.

✔ **Hata mesajları açıklayıcı ve sistematik olmalıdır.**
   - **Kodun hangi satırında, hangi fonksiyonda hata oluştuğu açıkça belirtilmelidir.**
   - **Özel hata mesajları tanımlanmalı ve hata ayıklama süreci kolaylaştırılmalıdır.**

---

## 📌 2. Loglama Standartları
✔ **Tüm log kayıtları `logs/integration.log` dosyasında tutulmalıdır.**
✔ **Loglar JSON formatında olmalı ve detay içermelidir.**
✔ **İlgili servisler ve işlemler hangi log seviyesinde çalışacağı belirlenmelidir.**

📌 **Örnek Log Formatı:**
```json
{
    "timestamp": "2025-02-03T14:05:23",
    "level": "ERROR",
    "module": "woocommerce_product_service",
    "message": "Ürün senkronizasyonu başarısız oldu",
    "details": "WooCommerce API bağlantı hatası (HTTP 500)"
}
```

📌 **Örnek Python Loglama Sistemi:**
```python
import logging
import json

logging.basicConfig(
    filename='logs/integration.log', level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s'
)

def log_event(level, module, message, details=""):
    log_data = {
        "timestamp": logging.Formatter.formatTime(logging.Formatter(), None),
        "level": level,
        "module": module,
        "message": message,
        "details": details
    }
    logging.log(getattr(logging, level), json.dumps(log_data))
```

---

## 📌 3. Hata Yönetimi Standartları
✔ **Tüm hatalar merkezi hata yönetimi dosyası olan `error_handler.py` üzerinden ele alınacaktır.**
✔ **Hata mesajları anlaşılır ve yönlendirici olmalıdır.**
✔ **Kritik hatalar için yöneticilere e-posta bildirimleri veya Slack/Webhook entegrasyonu sağlanmalıdır.**

📌 **Örnek Hata Yönetimi Sistemi:**
```python
import logging

def handle_error(exception, module):
    """Hataları loglayıp yöneticilere bildiren fonksiyon."""
    error_message = f"ModĂĽl: {module} | Hata: {str(exception)}"
    logging.error(error_message)
    notify_admin(error_message)

def notify_admin(message):
    """Kritik hataları yöneticilere e-posta ile bildirir."""
    print(f"UYARI! Yöneticiye bildirildi: {message}")  # Gerçek ortamda e-posta gönderimi yapılacaktır.
```

---

## 📌 4. Kritik Hata Bildirimleri
✔ **Kritik hatalar anlık olarak yöneticilere iletilmelidir.**
✔ **Slack, e-posta veya Telegram API entegrasyonu kullanılabilir.**
✔ **API hataları veya WooCommerce bağlantı sorunları öncelikli olarak ele alınmalıdır.**

📌 **Örnek Slack Bildirim Entegrasyonu:**
```python
import requests

def notify_slack(message):
    """Kritik hataları Slack kanalına ileten fonksiyon."""
    webhook_url = "https://hooks.slack.com/services/XXX/YYY/ZZZ"
    payload = {"text": message}
    requests.post(webhook_url, json=payload)
```
### 🚀 Wolvox-WooCommerce Entegrasyonu - Sistem İzleme ve Loglama Standartları

Bu belge, **tüm sistemin nasıl loglanacağını, hata kayıtlarının nasıl tutulacağını ve sistem izleme süreçlerinin nasıl işleyeceğini** belirler. **Tüm hata ve olay kayıtları takip edilebilir ve analiz edilebilir olmalıdır.**

---

## 📌 1. Genel Loglama Kuralları
✔ **Tüm sistem olayları merkezi bir log sisteminde tutulmalıdır.**
✔ **Hata logları detaylı ve yorumlanabilir olmalıdır.**
✔ **Loglar otomatik döngüye alınmalı ve disk doluluğunu önlemek için temizlenmelidir.**
✔ **Gerçek zamanlı log izleme sağlanmalıdır.**

---

## 📌 2. Loglama Seviyeleri
✔ **Farklı log seviyeleri tanımlanmalıdır:**
   - `DEBUG`: Hata ayıklama için düşük seviyeli bilgiler.
   - `INFO`: Normal sistem olayları ve operasyonlar.
   - `WARNING`: Potansiyel tehlikeli durumlar.
   - `ERROR`: İşleyişi bozan hatalar.
   - `CRITICAL`: Acil mĂĽdahale gerektiren durumlar.

📌 **Örnek Log Formatı:**
```json
{
    "timestamp": "2025-02-03T14:05:23",
    "level": "ERROR",
    "module": "woocommerce_sync",
    "message": "Ürün senkronizasyonu başarısız oldu",
    "details": "WooCommerce API bağlantı hatası (HTTP 500)"
}
```

📌 **Örnek Python Loglama Yapısı:**
```python
import logging
import json

logging.basicConfig(filename='logs/system.log', level=logging.INFO,
                    format='%(asctime)s - %(levelname)s - %(message)s')

def log_event(level, module, message, details=""):
    log_data = {
        "timestamp": logging.Formatter.formatTime(logging.Formatter(), None),
        "level": level,
        "module": module,
        "message": message,
        "details": details
    }
    logging.log(getattr(logging, level), json.dumps(log_data))
```

---

## 📌 3. Hata Loglama Standartları
✔ **Hatalar detaylı bir şekilde kaydedilmelidir.**
✔ **Hata mesajları içinde çağrılan modül, hata tipi ve detayları bulunmalıdır.**
✔ **Kritik hatalar gerçek zamanlı bildirim mekanizması ile yöneticilere iletilmelidir.**

📌 **Örnek Hata Loglama:**
```python
import logging

logging.basicConfig(filename='logs/errors.log', level=logging.ERROR,
                    format='%(asctime)s - %(levelname)s - %(message)s')

def log_error(module, error_message):
    logging.error(f"ModĂĽl: {module} | Hata: {error_message}")
```

📌 **Örnek Gerçek Zamanlı Bildirim Entegrasyonu:**
```python
import requests

def notify_admin(message):
    """Kritik hataları Slack veya e-posta ile yöneticilere bildirir."""
    webhook_url = "https://hooks.slack.com/services/XXX/YYY/ZZZ"
    payload = {"text": message}
    requests.post(webhook_url, json=payload)
```

---

## 📌 4. Gerçek Zamanlı Log İzleme
✔ **Gerçek zamanlı log izleme için `ELK Stack (Elasticsearch, Logstash, Kibana)` veya `Graylog` gibi araçlar entegre edilmelidir.**
✔ **Sistem üzerindeki anormal aktiviteler tespit edilmeli ve yöneticilere raporlanmalıdır.**
✔ **Loglar API ve web panel üzerinden izlenebilir olmalıdır.**

📌 **Örnek Graylog Konfigürasyonu:**
```yaml
input:
  gelf:
    port: 12201
    bind_address: 0.0.0.0
    tls_cert_file: /etc/graylog/cert.pem
    tls_key_file: /etc/graylog/key.pem
```

---

## 📌 5. Log Temizleme ve Döngü Yönetimi
âś” **Eski loglar otomatik olarak temizlenmelidir.**
✔ **Log dosya boyutu belirli bir sınırın üzerine çıkmamalıdır.**
✔ **Loglar, belirli bir sürenin ardından arşivlenmeli veya silinmelidir.**

📌 **Örnek Otomatik Log Temizleme (Linux Cronjob):**
```bash
0 0 * * 1 find /var/logs/ -name "*.log" -type f -mtime +30 -delete
```

---

Bu belge **katı kurallar içermektedir** ve **bu kurallara uyulmadan sistem izleme yapılamaz.** 🚀


🔥 **Bu standartlar kesin ve net olup, değişiklik yapmadan uygulanmalıdır.**
🔥 Tüm Proje Standartları ve Yapısı (Backend & Frontend)