Tech Stack Kararları
FRONTEND

Web & Mobil

TeknolojiKullanımGerekçe
Next.js 16Web uygulamasıSSR/SSG ile SEO (K1), React 19, App Router
React Native / FlutterMobil uygulamaSera kontrolü (K3), hastalık teşhisi (K4), forum (K5)
Tailwind CSS v4Stil sistemiHızlı UI geliştirme, tutarlı tasarım
ZustandState yönetimiHafif, TypeScript uyumlu
TanStack QueryVeri çekmeCache, optimistic updates, pagination
BACKEND

API & Servisler

TeknolojiKullanımGerekçe
FastifyREST APIYüksek performans, Swagger entegre, plugin sistemi
Drizzle ORMVeritabanı erişimiType-safe SQL, migration, MySQL uyumlu
MySQL 8İlişkisel veriÜrünler, siparişler, kullanıcılar, forum
TimescaleDBZaman serisiIoT sensör verileri, fiyat geçmişi (K4)
RedisCache & kuyrukOturum, hal fiyat cache, gerçek zamanlı bildirim
BunRuntimeHızlı başlatma, native TypeScript
AI & VERİ

Yapay Zeka & Analitik

TeknolojiKullanım
TensorFlow LiteMobilde hastalık teşhisi (MobileNetV3, <4MB)
Groq / Llama 3Türkçe AI chatbot ("Uzmana Sor"), RAG
Sentinel Hub APIUydu NDVI/EVI haritalama (ücretsiz katman)
OpenWeatherMap AgroMeteoroloji + don uyarısı
Apache KafkaIoT sensör veri streaming
GrafanaIoT dashboard & monitöring
DEVOPS & SERVİSLER

Altyapı & Entegrasyonlar

TeknolojiKullanım
Docker + NginxKonteyner orkestrasyon, reverse proxy
PM2Node.js process yönetimi
GitHub ActionsCI/CD pipeline
iyzicoÇok satıcılı ödeme (K2 pazaryeri)
CloudinaryGörsel CDN (ürün, hastalık fotoğrafları)
Moodle APILMS entegrasyonu (K5 eğitim)
MQTT / LoRaWANIoT sensör iletişimi (K4)
Birleştirilmiş Veritabanı Şeması
Mimari Karar: Çekirdek tablolar (users, cities) tüm katmanlar arasında paylaşılır. Her katmanın kendi modül tabloları ayrıdır. IoT zaman serisi verileri TimescaleDB'de, diğer tüm veriler MySQL 8'de tutulur.
-- ═══════════════════════════════════════ -- ÇEKIRDEK (Paylaşılan Tablolar) -- ═══════════════════════════════════════ TABLE users (id, name, email, phone, role, city_id, farm_type, created_at); TABLE cities (id, name, region, latitude, longitude); TABLE notifications (id, user_id, type, title, body, is_read, created_at); -- ═══════════════════════════════════════ -- KATMAN 1: İÇERİK -- ═══════════════════════════════════════ TABLE articles (id, title, slug, source, category, body, published_at); TABLE article_tags (article_id, tag_id); TABLE crops (id, name, slug, scientific_name, description); TABLE varieties (id, crop_id, name, characteristic, ttsm_code); TABLE diseases (id, name, symptoms, causes, period); TABLE crop_diseases (crop_id, disease_id); TABLE disease_treatments (disease_id, bku_drug_id, method); TABLE planting_calendar (crop_id, city_id, month, action_type); TABLE market_prices (product_name, city_id, price, unit, source, date); TABLE subscribers (id, user_id, email, preferences_json); -- ═══════════════════════════════════════ -- KATMAN 2: TİCARET -- ═══════════════════════════════════════ TABLE sellers (id, user_id, company_name, rating, verification_status); TABLE products (id, seller_id, category, name, price, stock, specs_json); TABLE orders (id, buyer_id, seller_id, total_amount, status, iyzico_ref); TABLE order_items (id, order_id, product_id, quantity, unit_price); TABLE group_buys (id, product_id, min_quantity, current_qty, end_date, discount_pct); TABLE group_buy_members (group_buy_id, user_id, quantity); TABLE price_comparisons (product_id, city_id, price, source, timestamp); -- ═══════════════════════════════════════ -- KATMAN 3: ÜRETİM YÖNETİMİ -- ═══════════════════════════════════════ TABLE farms (id, user_id, name, type, city_id, total_area); TABLE parcels (id, farm_id, name, area, crop_id, soil_type, gps_polygon); TABLE production_logs (id, parcel_id, action_type, input_product, quantity, date, notes); TABLE harvests (id, parcel_id, crop_id, yield_kg, quality_grade, harvest_date); TABLE inventory (id, farm_id, product_name, category, quantity, unit, cost_per_unit); -- ═══════════════════════════════════════ -- KATMAN 4: VERİ & AI (MySQL) -- ═══════════════════════════════════════ TABLE iot_devices (id, farm_id, device_type, protocol, status, last_seen); TABLE satellite_images (id, parcel_id, source, capture_date, cloud_cover, file_url); TABLE vegetation_indices (image_id, parcel_id, ndvi, evi, ndre, calculated_at); TABLE disease_detections (id, user_id, crop_id, image_url, model_version, result_json, confidence); TABLE ai_models (id, name, version, accuracy, size_mb, target_platform); TABLE yield_predictions (parcel_id, crop_id, season, predicted_yield, actual_yield, model_id); TABLE price_forecasts (product_id, city_id, predicted_price, actual_price, forecast_date); TABLE data_exports (id, buyer_type, region_id, data_scope, anonymization_level, export_date); -- KATMAN 4: VERİ & AI (TimescaleDB — ayrı DB) TABLE sensor_readings (device_id, metric, value, unit, timestamp); -- hypertable TABLE weather_data (city_id, source, temp, humidity, wind, rain, forecast_date); -- hypertable -- ═══════════════════════════════════════ -- KATMAN 5: EĞİTİM & TOPLULUK -- ═══════════════════════════════════════ TABLE courses (id, title, slug, category, instructor_id, duration_min, level, is_free); TABLE lessons (id, course_id, title, video_url, content_md, sort_order); TABLE enrollments (user_id, course_id, progress_pct, completed_at, certificate_url); TABLE quizzes (id, lesson_id, question, options_json, correct_answer); TABLE forum_categories (id, name, slug, description); TABLE forum_topics (id, user_id, category_id, title, body, upvotes, is_answered); TABLE forum_replies (id, topic_id, user_id, body, upvotes, is_expert_verified); TABLE consultants (id, user_id, specialty, tyd_certificate, rating, hourly_rate); TABLE appointments (id, consultant_id, farmer_id, datetime, type, status, payment_status); TABLE reviews (id, appointment_id, rating, comment); TABLE grants (id, name, institution, deadline, min_amount, max_amount, eligibility_json); TABLE grant_applications (user_id, grant_id, status, applied_at); TABLE badges (id, name, icon_url, criteria_json); TABLE user_badges (user_id, badge_id, earned_at); TABLE leaderboard (user_id, region_id, points, rank, period);
Toplam: 45 tablo (43 MySQL + 2 TimescaleDB hypertable). Katmanlar arası bağlantılar: users.id, crops.id, cities.id, products.id foreign key'leri ile sağlanır.
Katmanlar Arası Veri Akışı
K1 İçerik
SEO Trafik
K2 Ticaret
Dönüşüm
K3 Üretim
Günlük Kullanım
K4 AI
Akıllı Öneriler
K5 Eğitim
Bağlılık

Yatay Bağlantılar

  • K1 → K2: Hal fiyatları → Ticaret platformunda fiyat referansı
  • K2 → K3: Satın alınan girdi → Üretim kaydına otomatik ekleme
  • K3 → K4: Üretim verileri → AI verim tahmini besleme
  • K4 → K1: AI analiz sonuçları → İçerik olarak yayınlama
  • K5 → K1: Forum UGC → SEO trafik kaynağı
  • K4 → K5: Hastalık tespiti → Danışmanlık yönlendirme

Paylaşılan Veri Nesneleri

  • users: Tüm katmanlar — tek kimlik, tek profil
  • crops: K1 ansiklopedi + K3 üretim + K4 AI modelleri
  • cities: K1 takvim + K2 fiyat + K3 çiftlik + K4 hava durumu
  • products: K2 ticaret + K3 stok takip + K4 fiyat tahmini
  • diseases: K1 rehber + K4 AI teşhis + K5 danışmanlık
API Kontratları — Temel Endpoint'ler
-- ═══ KATMAN 1: İÇERİK API ═══ GET /api/v1/articles?category=&page=&limit= GET /api/v1/crops/:slug GET /api/v1/crops/:slug/diseases GET /api/v1/crops/:slug/calendar?city_id= GET /api/v1/market-prices?product=&city_id=&date_range= GET /api/v1/market-prices/trends?product=&period=30d -- ═══ KATMAN 2: TİCARET API ═══ GET /api/v1/products?category=&seller_id=&sort= POST /api/v1/orders GET /api/v1/orders/:id POST /api/v1/group-buys POST /api/v1/group-buys/:id/join GET /api/v1/price-compare?product_id=&city_id= POST /api/v1/payments/iyzico/callback -- ═══ KATMAN 3: ÜRETİM API ═══ GET /api/v1/farms POST /api/v1/farms/:id/parcels POST /api/v1/parcels/:id/logs POST /api/v1/parcels/:id/harvests GET /api/v1/farms/:id/inventory GET /api/v1/farms/:id/cost-report?season= -- ═══ KATMAN 4: VERİ & AI API ═══ POST /api/v1/ai/disease-detect (multipart/form-data: image) GET /api/v1/weather?city_id=&days= GET /api/v1/satellite/ndvi?parcel_id=&date_range= GET /api/v1/yield-prediction?parcel_id=&season= GET /api/v1/price-forecast?product_id=&city_id= GET /api/v1/iot/devices/:id/readings?metric=&range= POST /api/v1/ai/chat (body: { message, context }) -- ═══ KATMAN 5: EĞİTİM & TOPLULUK API ═══ GET /api/v1/courses?category=&level= POST /api/v1/courses/:id/enroll GET /api/v1/forum/topics?category=&sort= POST /api/v1/forum/topics POST /api/v1/forum/topics/:id/reply GET /api/v1/consultants?specialty=&city_id= POST /api/v1/appointments GET /api/v1/grants?eligible_for=user_id
Harici API Entegrasyonları
ServisAPIKullanımMaliyetKatman
OpenWeatherMap AgroRESTHava durumu + don uyarısı1K çağrı/gün ücretsizK4
Sentinel HubProcessing APINDVI/EVI uydu haritaları10K PU/ay ücretsizK4
FAOSTATRESTGlobal üretim/ihracat verisiÜcretsizK1, K4
iyzicoRESTÇok satıcılı ödemeİşlem komisyonuK2
Groq APIRESTLlama 3 chatbot / RAGFreemiumK5
CloudinaryREST + SDKGörsel yükleme/CDN25 kredit/ay ücretsizTümü
PlantNet APIRESTBitki türü tanıma (yedek)Araştırma ücretsizK4
TÜİKScrapingTarım istatistikleriÜcretsiz (API yok)K1, K4
Moodle APIRESTLMS kurs yönetimiSelf-hosted ücretsizK5
MVP Faz Planı
FAZ 1: TEMEL (Ay 1-6)

İçerik + Ticaret Çekirdeği

  • K1: Haber portalı (RSS/API otomatik toplama)
  • K1: Hal fiyatları sayfası (günlük güncelleme)
  • K1: İlk 50 ürün ansiklopedi sayfası
  • K2: Bereket Fide/Vista Seeds ürün kataloğu
  • K2: iyzico entegrasyonu, temel sipariş akışı
  • Altyapı: Next.js + Fastify + MySQL + Docker
Gelir: İlk Komisyon
FAZ 2: BÜYÜME (Ay 7-12)

Üretim SaaS + Topluluk

  • K3: Sera/tarla yönetimi MVP (kayıt tutma)
  • K3: Stok takip ve basit maliyet raporu
  • K2: 3. parti tedarikçilere açılma
  • K2: Toplu alım modülü
  • K5: Çiftçi forumu (Q&A)
  • K5: İlk 10 online kurs (Moodle)
  • Mobil uygulama v1
Gelir: SaaS + Forum Trafiği
FAZ 3: ZEKA (Ay 13-18)

AI & IoT Entegrasyonu

  • K4: AI hastalık teşhisi (TFLite mobil model)
  • K4: Hava durumu API + don uyarı sistemi
  • K4: Sentinel-2 NDVI haritaları
  • K4: IoT sensör pilot (LoRaWAN gateway)
  • K5: Danışmanlık pazaryeri (video call)
  • K5: AI chatbot ("Uzmana Sor" — Groq/Llama 3)
  • K5: Hibe takip modülü
Gelir: Premium AI + Danışmanlık
FAZ 4: ÖLÇEK (Ay 19-24)

Veri Monetizasyon & Genişleme

  • K4: Verim tahmini modelleri (CNN-BiLSTM)
  • K4: Fiyat tahmini (hal fiyat AI)
  • K4: Veri monetizasyon (sigorta, devlet, gıda)
  • K1: 6500+ otomatik SEO sayfası
  • K5: Gamification (liderlik tablosu, rozetler)
  • K2: Tarfin BNPL entegrasyonu
  • IPARD/hibe başvurusu (platform yatırımı için)
Gelir: Tam Ekosistem
Gelir Modeli Özeti
%5-8 Komisyon

K2 Pazaryeri satışları

999-2499 TL/ay

K3 SaaS abonelik

Premium AI

K4 Gelişmiş analitik

AdSense + Sponsor

K1 İçerik reklamları

%15-20 Kesinti

K5 Danışmanlık komisyonu

Veri Satışı

K4 Anonim toplu veri

Sonraki Adım
Aksiyon — Faz 1 Başlangıç: Next.js 16 + Fastify + MySQL + Docker boilerplate oluştur. Drizzle ORM ile çekirdek ve K1 tablolarını migrate et. Hal fiyatları scraper MVP'sini yaz. Bereket Fide ürün kataloğunu seed data olarak hazırla.