πŸ›οΈ Sistem Mimarisi

Frontend + Backend + External entegrasyon β€” komple stack

Tam Mimari DiyagramΔ±

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ BROWSER (Client) β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Next.js 14 App Router + React Server Components (RSC) β”‚ β”‚ β”‚ β”‚ TanStack Query (React Query) β€” cache + invalidation β”‚ β”‚ β”‚ β”‚ TradingView Library (blob iframe) β”‚ β”‚ β”‚ β”‚ Recharts + echarts + d3 (10+ chart types) β”‚ β”‚ β”‚ β”‚ PostHog SDK v1.373.5 β”‚ β”‚ β”‚ β”‚ PWA Service Worker (1845 bytes, 248 chunk cache) β”‚ β”‚ β”‚ β”‚ BroadcastChannel + Leader Election (multi-tab) β”‚ β”‚ β”‚ β”‚ Zustand persist (localStorage state) β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β–Ό β–Ό β–Ό β–Ό β”‚ β”‚ [REST API] [WebSocket] [TradingView] [PostHog] β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β–Ό β–Ό β–Ό β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” [Blob URL] analytics. β”‚ fvt.com.tr β”‚ β”‚ 4 WS path β”‚ fvt.com.tr β”‚ /api/* β”‚ β”‚ + 3 ext WS β”‚ (PostHog) β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β–Ό β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ BACKEND (NestJS muhtemel) β”‚ β”‚ - 22 modΓΌl β”‚ β”‚ - 250+ endpoint β”‚ β”‚ - Validation pattern β”‚ β”‚ - TΓΌrkΓ§e field naming β”‚ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β–Ό β–Ό β–Ό β–Ό β”Œβ”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ SQL β”‚ β”‚Redisβ”‚ β”‚EventBusβ”‚Job Queueβ”‚ β”‚ DB β”‚ β”‚Cacheβ”‚ β”‚ Pub/Subβ”‚ (cron) β”‚ β””β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β–Ό β–Ό β–Ό β–Ό β–Ό [BIST] [KAP] [TEFAS] [Binance] [Matriks Radix] Hisse Aksiyon AylΔ±k fon Kripto Real-time fiyat fiyat BilanΓ§o rapor OHLC JWT RS256 endeks TemettΓΌ rt/dl broker

πŸ“‘ Frontend Stack

KatmanTeknolojiAmaΓ§
FrameworkNext.js 14 App RouterRSC + SSR + Routing
StateTanStack QueryServer state cache + invalidation
Local stateZustand persist14 localStorage key
Charts (1)TradingView LibraryProfesyonel grafik (blob iframe)
Charts (2)Recharts10+ chart bileşeni
Charts (3)echartsHeatmap, advanced
Charts (4)d3Custom SVG
AnalyticsPostHog v1.373.5Events + Session + Vitals + Surveys
PWAManifest + SWStandalone, offline static
Multi-tabBroadcastChannelLeader election (WS optimize)

πŸ”Œ Backend Tahminleri

KonuTahminKanΔ±t
FrameworkNestJSValidation error pattern, class-validator mesajlarΔ±
DBSQL (PostgreSQL muhtemel)Integer ID convention, relational data
CacheRedisPopular search counter (TLY 383K), session
Event BusRedis Pub/SubDomain events iΓ§in multi-server sync
WebSocketSocket.IOCustom events + ack pattern
AuthJWT + Cookie (HTTPOnly)Refresh token in localStorage
Job QueueCron + WorkerTEFAS aylΔ±k batch, KAP scraper

🌍 External Entegrasyonlar (11)

BIST

Hisse fiyat, endeks, devre kesici (Matriks proxy ΓΌzerinden)

KAP

Resmi şirket açıklamaları, bilanço, temettü, sermaye artırımı

TEFAS

YatΔ±rΔ±m fonu NAV, aylΔ±k portfΓΆy raporu, MKK kayΔ±t

Binance

Kripto real-time WS (wss://stream.binance.com:9443) + /api/v3/klines proxy

Matriks Radix

Profesyonel BIST real-time veri (rt + dl WS, JWT RS256 30dk)

Anthropic

Claude Haiku API β†’ Apex AI (/api/asistan/sor kaynak: haiku)

YouTube

CanlΔ± yayΔ±n iframe embed (video={canliYayinKod})

VakΔ±fBank

Sanal POS β€” PRO ΓΆdeme (/api/payment/vakifbank/create)

Google / Apple

OAuth login (/api/auth/google, /apple)

Parqet CDN

YabancΔ± hisse logolarΔ± (assets.parqet.com)

iShares

TUR ETF holdings scrape (Türk hisse ağırlıkları)

πŸ”„ Veri Akış YΓΆnleri

  1. Dış β†’ Δ°Γ§: BIST/KAP/TEFAS/Binance β†’ FVT DB (scraper, WS, batch)
  2. Δ°Γ§ β†’ Δ°Γ§: Domain Events (CQRS pattern) β†’ modΓΌller arasΔ± sync
  3. Δ°Γ§ β†’ KullanΔ±cΔ±: REST API + WebSocket push
  4. KullanΔ±cΔ± β†’ Δ°Γ§: Mutation (POST/PUT/DELETE) β†’ backend domain event