furkanyigit34 1c10a701cf feat: Miller Columns kategori seçici + JSON tree tabanlı mimari
Ne yaptık:
- Sahibinden.com tarzı Miller Columns kategori seçici (CategorySelector.jsx)
- Trendyol API'den 3971 kategori ağacı çekildi (Playwright ile)
- Backend: JSON tree tabanlı kategori endpoint'leri (/api/category-tree/*)
- Backend: Rapor oluşturma artık DB kategorilerine bağımlı değil
- Report tablosundaki category_id FK constraint kaldırıldı
- Dockerfile'a trendyol_category_tree.json eklendi

Neden yaptık:
- DB'deki kategori tablosu boştu, Trendyol API ID'leri ile Excel ID'leri farklıydı
- Playwright ile Trendyol'un kendi kategori ağacını çektik (3971 kategori, gerçek API ID'leri)
- Miller Columns ile kullanıcı adım adım derinleşerek kategori seçebiliyor
- Arama özelliği ile kelime bazlı kategori bulma da mümkün

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 02:24:22 +03:00

Trendyol Product Dashboard

Trendyol e-ticaret platformu için kategori bazlı ürün analiz sistemi. 7 tab'lı interaktif dashboard, otomatik rapor oluşturma ve detaylı metrikler sunar.

Özellikler

Tab ıklama
Genel Bakış KPI kartları, özet grafikler, temel metrikler
Marka Marka analizi, pazar payı dağılımı
Kategori Kategori bazlı ürün dağılımı
Menşei Ülke bazlı ürün analizi
Barkod Barkod veri analizi ve dağılımı
Keyword Aracı Anahtar kelime trend analizi
Ürün Bulma Gelişmiş ürün arama ve filtreleme

Teknoloji Stack

Katman Teknoloji
Frontend React 19.2.0, Vite 7.2.2, Tailwind CSS 4.1.17, Recharts 3.4.1
Backend FastAPI 0.104.1, SQLAlchemy 2.0.45, Uvicorn 0.24.0
Database SQLite
HTTP Client Axios 1.13.2

Hızlı Başlangıç

Otomatik Başlatma (Önerilen)

python3 start.py

Bu script otomatik olarak:

  • Dependency'leri kontrol eder
  • Port çakışmalarını çözer
  • Backend ve frontend'i başlatır

Manuel Başlatma

Terminal 1 - Backend:

cd backend
pip install -r requirements.txt
python3 main.py

Terminal 2 - Frontend:

cd admin-panel
npm install
npm run dev

Erişim URL'leri

Proje Yapısı

product_Dashboard/
├── backend/                     # FastAPI Backend
│   ├── main.py                  # Ana API (~4400 satır, 30+ endpoint)
│   ├── database.py              # SQLAlchemy modelleri
│   ├── scraper.py               # Trendyol veri çekme
│   └── requirements.txt         # Python dependencies
│
├── admin-panel/                 # React Frontend
│   └── src/
│       ├── components/
│       │   ├── CategoryManagement.jsx    # Kategori yönetimi
│       │   ├── ReportGeneration.jsx      # Rapor oluşturma
│       │   ├── ReportList.jsx            # Rapor listesi
│       │   ├── ReportDashboard.jsx       # 7-tab dashboard
│       │   └── dashboard-tabs/           # Tab componentleri
│       ├── config/api.js                 # API konfigürasyonu
│       └── constants/tabGroups.js        # Tab yapılandırması
│
├── categories/                  # Kategori JSON dosyaları (1842 adet)
├── reports/                     # Oluşturulan raporlar
├── docs/                        # Dokümantasyon
│   ├── ARCHITECTURE.md          # Sistem mimarisi (Türkçe)
│   ├── API_DOCUMENTATION.md     # API referansı
│   ├── SETUP_GUIDE.md           # Kurulum kılavuzu
│   └── DASHBOARD_ARCHITECTURE.md # Dashboard geliştirme rehberi
│
├── start.py                     # Otomatik başlatma scripti
├── CLAUDE.md                    # Claude Code rehberi
└── README.md                    # Bu dosya

Docker ile Çalıştırma

# Build
docker-compose build

# Başlat
docker-compose up -d

# Durdur
docker-compose down

Docker Erişim:

API Özeti

Endpoint Metod ıklama
/categories/main GET Ana kategoriler
/categories/{id}/subcategories GET Alt kategoriler
/api/reports GET Rapor listesi
/api/reports/create POST Rapor oluştur
/api/reports/progress/{task_id} GET İlerleme durumu
/api/dashboard/{report_id} GET Dashboard verisi

Konfigürasyon

API Timeout Değerleri

Tip Süre Kullanım
STANDARD 30s Genel istekler
DASHBOARD 180s Dashboard yükleme
ENRICHMENT 120s Sosyal kanıt verisi
KEYWORD_ANALYSIS 300s Keyword analizi

Kaynak Limitleri

Kaynak Limit
Cache 100 item, 1 saat TTL
Frontend pagination 150 item/sayfa
Backend pagination 200 item/sayfa
Rate limit 2 istek/saniye

Sorun Giderme

Port Çakışması

# Otomatik çözüm
python3 start.py

# Manuel çözüm
lsof -ti:8001 | xargs kill -9
lsof -ti:5173 | xargs kill -9

CORS Hatası

backend/main.py dosyasında frontend portunu CORS listesine ekleyin:

allow_origins=["http://localhost:5173", "http://localhost:5174", ...]

Database Sıfırlama

cd backend
python3 -c "from database import init_db; init_db()"

Dokümantasyon

Dosya ıklama
docs/ARCHITECTURE.md Sistem mimarisi (Türkçe)
docs/API_DOCUMENTATION.md API referansı
docs/SETUP_GUIDE.md Kurulum kılavuzu
docs/DASHBOARD_ARCHITECTURE.md Dashboard geliştirme
CLAUDE.md Claude Code rehberi

Gereksinimler

  • Python 3.8+
  • Node.js 18+
  • npm 9+

Versiyon: 2.1.0 | Son Güncelleme: Ocak 2025

Description
CiroMarket Trendyol analiz aracı — GitHub mirror
Readme 86 MiB
Languages
JavaScript 51.8%
Python 46.5%
Shell 0.8%
Dockerfile 0.5%
CSS 0.2%