Meta-Framework — Mimari Katmanlar

10 Katmanlı Mimari Kanban — Eğitim Notları

Aşağıdaki tablo, sihirbazda yaptığın seçimlere göre üretilen statik referans mimari. Her sütun bir mimari katman; her kart bir bileşen + alt senaryo + karar gerekçesi içerir. Ekip eğitim oturumunda sırayla aşağı, sonra yana okumak için tasarlandı.

1 · Client 2 · Edge 3 · API 4 · Application 5 · Domain 6 · AI 7 · Tenant 8 · Persistence 9 · DX 10 · Ops

Senaryo: Meta-Framework (vibecoding'e açık)

Başkasına framework satıyorsun. Solo başlangıç, AI-first, white-label tenant, MIT + Managed Cloud. Detaylı katman ayrımı bu seçimlere uyarlanmıştır.

Meta-Framework White-label tenant AI-First / Agents Karma SQL+Document Hybrid BM25+Vector Bildirim real-time PWA Vibecoding kritik Tek Hetzner VPS MIT + Managed
1
Client Katmanı
Sunum — Presentation
PWA Shell

Web tarayıcı ana erişim, offline'a dirençli

  • Service Worker — istek cache, offline fallback
  • manifest.json — add-to-home + ikon seti
  • IndexedDB queue — offline aksiyon buffer
  • Background Sync API — bağlantı dönüşte gönder
MUSTSprint 1
UI Komponent Kütüphanesi

Flowbite tabanlı, Tailwind utility-first

  • Flowbite 2.5 — modal, drawer, dropdown, table
  • Phosphor — ikonografi (CDN)
  • Custom tokens — CSS variables (renk, spacing)
  • Roboto 300+ — min 1rem text disiplini
MUSTSprint 0
Adaptive Breakpoints

Cihaz spektrumuna uyum

  • Container queries — component-level responsive
  • Tailwind sm/md/lg/xl — sayfa-level grid
  • Touch + hover — input modalite ayrımı
MUST
Theming Engine

White-label per-tenant brand

  • CSS değişken katmanı — --c-brand-{50..900}
  • Logo + ikon override — tenant manifest'inden
  • Dark mode — opsiyonel toggle
  • E-mail şablonu — aynı paletten render
MUSTSprint 2
i18n

Çok dilli içerik + UI

  • Locale catalog — JSON (TR + EN baz)
  • Lazy load — locale başına bundle
  • Browser locale — auto-detect + fallback
Sprint 5
Native (Expo)

v0.2 — backlog

  • Monorepo — paylaşılan UI tokenları
  • Native modüller — kamera, biometric, push
  • OTA update — Expo update channel
v0.2
2
Edge / Gateway
Giriş — Ingress
Caddy Reverse Proxy

Tek VPS için tek binary çözüm

  • TLS auto — Let's Encrypt + ZeroSSL
  • HTTP/3 — QUIC native
  • Tenant subdomain — *.tenant.framework.io
  • Custom domain — CNAME mapping (managed)
MUSTSprint 0
Write Protection

Tahtada daire içindeki kritik bant

  • JWT/session doğrulama — yazma uçları zorunlu
  • CSRF token — double-submit cookie
  • tenant_id enjeksiyonu — her sorguya zorlanır
  • Idempotency-Key — POST tekrar koruması
MUSTSprint 1
Rate Limit

Kötüye kullanım + cost guard

  • Redis token bucket — sliding window
  • Per-tenant + per-endpoint — quota
  • Anonim IP-based — baseline
  • AI endpoint özel — token / dakika
MUST
Security Headers

CSP + clickjacking + HSTS

  • CSP — script + img kaynak whitelist
  • X-Frame-Options — iframe yasak default
  • HSTS — preload
  • Permissions-Policy — kamera/mikrofon gate
MUST
Static Asset CDN

MinIO origin + Caddy edge cache

  • Bucket prefix — tenant başına yol
  • Image transform — boyutla on-the-fly
  • Signed URL — private asset
Sprint 3
WAF (opsiyonel)

Cloudflare frontmost — büyürken

  • Bot management — challenge ladder
  • OWASP rule set — SQL/XSS guard
  • Geo block — gerekirse
Opsiyonelv0.2+
3
API Yüzeyi
Kontrak — Contract
FastAPI Uygulaması

Tahtada kırmızı — birincil backend

  • uvicorn async worker — N×CPU
  • Pydantic v2 — input/output şema
  • OpenAPI 3.1 — otomatik üretim
  • Dependency injection — port adapter swap
MUSTSprint 0
REST Endpoints

CRUD jeneratörü ile otomatik

  • Doctype → REST — entity tanımından üretilir
  • Pagination + filter + sort — standart query
  • OData-benzeri DSL — ?filter=...&sort=...
  • HATEOAS opsiyonel — discovery link
MUST
Typed RPC

TS SDK paketi (npm registry)

  • End-to-end tip güvencesi — schema → TS
  • Auto-generated client — build pipeline
  • tRPC tarzı imza — Pydantic'tan üretim
MUSTSprint 2
GraphQL Gateway

Karma/document veri için opsiyonel

  • Field-level perm — RBAC entegre
  • DataLoader — N+1 koruma
  • Persisted query — production safe
COULDSprint 4+
WebSocket / SSE

Bildirim + agent stream

  • Notification channel — toast, alert
  • Agent token stream — LLM tool-call SSE
  • Live form validation — server-side check
  • Connection reverse-proxy — Caddy ws upgrade
MUST
4
Application
Use-case Katmanı
Vertical Slice Handlers

Feature başına dilim — AI üretmesi kolay

  • Controller + business + view bir arada
  • Saf use-case fonksiyonu — framework-free
  • Test edilebilirlik — pytest fixture'larıyla
MUST
Agent Runtime

AI agent yürütme motoru

  • Tool-calling loop — XML/JSON tool çağrısı
  • Planning + reflection — multi-step görev
  • Memory — kısa (context) + uzun (vector)
  • Human-in-loop — onay döngüsü UI
  • Cancellation — kullanıcı durdurabilir
MUSTSprint 3
ECA Engine

No-code akış kuralları

  • Event listener registry — domain event'lere bağlanır
  • Condition evaluator — rule DSL (JsonLogic veya custom)
  • Action dispatcher — başka context çağırır
  • Audit'li — her tetiklenme log
MUSTSprint 3
Workflow Orchestrator

Uzun süren async görevler

  • State machine — pending → running → done
  • Retry + backoff — exponential
  • Timeout — DLQ'ya düşürme
  • Resumable — kaldığı yerden devam
Sprint 4
Job / Queue Dispatcher

Cron + on-demand iş kuyruğu

  • Cron entry points — kayıtlı schedule'lar
  • Priority queue — yüksek-düşük
  • DLQ — başarısız iş gözü
  • Worker pool — VPS'te ayrı process
MUST
5
Domain
İş Kuralı — DDD
Core / IAM

Auth + kim ne yapabilir

  • User, Tenant, Role, Permission — ana varlıklar
  • RBAC + ABAC — rol + attribute kombinasyon
  • Session, AuthToken — JWT + refresh
  • OAuth provider hooks — Google, GitHub, SSO
  • SCIM — gelecek enterprise provisioning
MUSTSprint 1
Field / Custom Field API

Drupal Field / Frappe Custom Field

  • Runtime alan tanımı — UI'dan
  • Tip sistemi — string, number, ref, json
  • Validation — alan başına kural
  • Migration runner — JSONB veya ALTER TABLE
MUSTSprint 2
Types / Schema Registry

Tek kaynak şema — DB + API + TS

  • Schema-first — YAML veya code-first
  • Code generator — TS tip + Pydantic + Prisma
  • Versioning — semver per schema
MUSTSprint 2
Content Context

Entity + revisions + audit

  • Doctype tanımları — Frappe modeli
  • Revisions — versiyon tut, geri al
  • Taxonomy ağacı — hierarchical tag
  • Workflow state — draft / review / published
MUST
Layout Context

Drupal Layout Builder benzeri

  • Region + section + block — hiyerarşi
  • Components → Builder — reusable block
  • Theme override stack — tenant + brand katmanı
  • Conditional visibility — rol + tenant + locale
MUSTSprint 4
Search Context

Hybrid arama policy'si

  • Per-entity index policy — alanlar + ağırlık
  • Faceted query model — filter agregat
  • Reciprocal Rank Fusion — BM25 + vector
MUSTSprint 3
Plugin Context

Plugin lifecycle yönetimi

  • Manifest model — name, version, hooks, perms
  • Lifecycle hooks — install, enable, disable, uninstall
  • Dependency resolver — topological install
  • Plugin API stability — SemVer + deprecation
MUSTSprint 4
Billing Context

Managed Cloud edition için

  • Subscription + plan — Stripe Billing
  • Usage metering — token, agent run, storage
  • Quota enforcement — soft + hard limit
  • Invoice + dunning — overdue akışı
Sprint 6
6
AI / Agents
Akıl Katmanı
Provider Abstraction

Hexagonal port — model swap ucuz

  • Anthropic Claude — birincil
  • OpenAI — alternatif
  • Ollama / vLLM — self-host
  • Streaming + retry + timeout
  • Cost tracking — token sayacı
MUSTSprint 3
Agent Definitions

Tenant-aware kayıtlı agentlar

  • System prompt yönetimi — versioned
  • Tool registry — agent'a erişim verilen kapılar
  • Allowed contexts — whitelist
  • Per-tenant prompt override
MUST
Embedding Pipeline

Doc → chunk → vector

  • Chunking — semantic split + overlap
  • Embed (provider) — text-embedding
  • Upsert — pgvector veya Qdrant
  • Reindex cron — değişen entity
MUST
Hybrid Search Ranker

BM25 + vector kombinasyonu

  • Elastic BM25 — keyword skoru
  • pgvector cosine — semantic skoru
  • RRF fusion — tek liste döndür
  • Re-ranker (ops.) — Cohere/Voyage
MUST
Prompt Library

Git-backed versiyonlama

  • Markdown prompt'lar — repo'da kayıtlı
  • A/B test framework — variant skor
  • Tenant override — özel istemler
Sprint 5
AI Audit + PII Guard

Tüm LLM çağrıları kayıtlı

  • Log entry per call — input + output + maliyet
  • PII detection — input mask
  • Output sanitization — yasaklı içerik kontrol
  • Per-tenant cost dashboard
MUST
7
Tenant
Multi-Brand White-label
Tenant Resolver

Request → tenant_id

  • Subdomain — birinci tercih
  • Path-based — //... fallback
  • Custom domain — CNAME → tenant
  • Header override — admin tooling için
MUSTSprint 1
Brand Theme Store

Per-tenant CSS variable seti

  • Color tokens — --c-brand-{50..900}
  • Logo + favicon — asset key
  • Email template — başlık + logo
  • Dark mode opt-in
MUSTSprint 2
Asset Isolation

Veri sızıntısı imkansız

  • MinIO bucket prefix — tenant key altında
  • Signed URL TTL — kısa süre
  • Storage quota — plan başına
MUST
Tenant Provisioning

Self-service signup workflow

  • Signup form — slug + plan seçim
  • Migration runner — yeni tenant tabloları
  • Welcome email — onboarding link
  • Tour — Onboarding plugin tetiklenir
MUSTSprint 2
Plan + Quota Gate

Feature flag + soft/hard limit

  • Plan → feature set — JSON/DB tanımı
  • Counter — Redis (token, request, storage)
  • Soft limit — uyarı + grace
  • Hard limit — 429 + upgrade CTA
Sprint 5
Tenant Lifecycle

Pause / archive / delete

  • Suspend — okuma açık, yazma kapalı
  • Archive — read-only kalır, asset cold
  • Delete (GDPR) — 30 gün grace + export
  • Backup per tenant — restore plan
Sprint 6
8
Persistence
Saklama Katmanı
PostgreSQL Primary

Yapısal + JSONB karma

  • Master + replica — multi-node ileride
  • JSONB GIN index — esnek alan sorgu
  • pgvector extension — embedding column
  • Row-level Security — tenant_id zorla
MUSTSprint 0
Prisma ORM

Schema-first + tip güvencesi

  • Migration history — repo'da
  • TS client — backend trigger
  • Python prisma-client-py — alternatif
MUST
CouchDB (opsiyonel)

Sync-friendly document store

  • Replication — offline-first için
  • Mobil sync — RN edisyonu ile
  • Decision deferred — ihtiyaç doğunca
v0.2SHOULD
Elasticsearch

Full-text + facet

  • Tek node — Sprint başı
  • Cluster — K3s migrasyonu sonrası
  • Reindex pipeline — domain event'leri tüket
MUSTSprint 3
pgvector / Qdrant

Vector search

  • pgvector default — tek DB
  • Qdrant alternatif — büyük corpus
  • IVFFlat / HNSW index
  • Hybrid query — filter + k-NN
Sprint 3
MinIO (S3-uyumlu)

Object storage

  • Bucket per tenant — izolasyon
  • Signed URL — private asset
  • Lifecycle policy — eski versiyonları arşivle
MUST
Redis

Cache + rate limit + pubsub

  • Cache layer — hot read
  • Rate limit bucket
  • Pub/Sub hafif — basit notification fan-out
  • NATS — büyürken yerini alır
MUST
9
DX & Tooling
Vibecoding Katmanı
CLI Scaffolder (mf)

Komut satırı jeneratör

  • mf gen context <ad> — yeni bounded context
  • mf gen doctype <ad> — entity + migrasyon
  • mf gen view <ad> — liste/dashboard
  • mf gen plugin <ad> — plugin iskeleti
  • mf dev — hot reload
MUSTSprint 11
Doctype Designer (UI)

Tıklayarak entity + alan

  • Drag & drop alan ekle — string, ref, json...
  • Migration üretici — Prisma diff
  • Permission editor — RBAC inline
  • Önizleme — örnek kayıt formu
MUSTSprint 11–12
View Designer (UI)

Listing / dashboard no-code

  • Tablo + filtre + grafik — drag
  • Drupal Views muadili
  • SQL preview — power-user için
MUST
VS Code Extension

Schema intellisense

  • Route navigation — Cmd+click → handler
  • Plugin wizard — yeni plugin sihirbazı
  • Snippet picker
Sprint 12
Snippet Library

AI-generated tip-safe kod

  • Use-case başına — auth, CRUD, agent tool
  • Inline edit — params doldur
  • Toplulukça katkı — repo PR
SHOULD
Documentation Site

MDX + live playground

  • API reference — OpenAPI'den auto
  • Tutorial steps — interactive
  • Search (Algolia DocSearch)
MUST
10
Observability
Ops & Reliability
Structured Logging

JSON Lines, request_id korelasyon

  • stdout → Loki — single VPS için Grafana stack
  • trace_id + tenant_id — her satıra zorla
  • Log retention — 30 gün hot, 1 yıl cold
MUSTSprint 1
Audit Trail

Değiştirilemez event log

  • Postgres tablosu — INSERT only
  • Append-only constraint — DB-level
  • Forensic query — kim ne zaman ne yaptı
MUST
Metrics

Prometheus-uyumlu

  • FastAPI middleware — req duration histogram
  • DB query timings
  • Agent run + cost — özel metrik
  • Per-tenant breakdown
MUST
Tracing

OpenTelemetry SDK

  • Trace ID propagation — request başına
  • Span enstrümantasyon — auto + manual
  • Jaeger / Tempo — collector
SHOULD
Health & Readiness

/healthz + /readyz

  • Dependency check — DB, Redis, ES, MinIO
  • Liveness vs readiness — ayrı
  • Uptime monitoring — UptimeRobot / Healthchecks.io
MUST
Backup & DR

pg_dump + MinIO snapshot

  • Saatlik WAL — point-in-time recovery
  • Günlük tam — ayrı fiziksel disk
  • Off-site backup — başka cloud
  • DR drill — 3 ayda bir restore testi
MUST
CI/CD

GitHub Actions → Hetzner

  • Build → test → deploy — ana pipeline
  • Docker registry (ghcr) — image kayıt
  • Migration adımı — deploy öncesi
  • Rollback — bir önceki image hızlıca
MUST

Request hayat döngüsü — katmanlar boyunca

Eğitim için: bir HTTP isteği aşağıdaki sırayla katmanlardan geçer. Her geçişte hangi sorumluluğun yerine getirildiğini ekibinize açıklayabilirsiniz.

1. Client

Kullanıcı PWA'da form gönderir. Service Worker offline ise IndexedDB'ye kuyruğa alır, sonra retry.

2. Edge

Caddy TLS terminate. Write Protection JWT + tenant + CSRF doğrular, rate limit kontrol, security header ekler.

3. API

FastAPI route Pydantic ile validate. OpenAPI'den üretilen tip + RPC SDK aynı kontrak.

4. Application

Vertical slice handler use-case'i çağırır; gerekirse Agent Runtime tetiklenir (AI tool-call) veya ECA Engine event yayınlar.

5. Domain

Bounded context içinde iş kuralı uygulanır. Field/Custom Field API doğrulaması yapılır.

6. AI

Agent gerekirse Provider Abstraction üzerinden LLM çağırır; Hybrid Ranker bağlam getirir; tüm çağrı AI Audit'e düşer.

7. Tenant

Tenant Resolver tenant_id'yi enjekte eder; Quota Gate plan limitini kontrol eder; brand theme UI'a yayılır.

8. Persistence

Postgres + Prisma ile yazma; gerekirse Elastic/pgvector reindex event'i Redis pub/sub'a düşer.

9. DX

CLI/Designer üretilen kod buradan akar. Geliştirme aşamasında — runtime'da yer almaz, geliştirici loop'unun parçası.

10. Ops

Tüm adımlar log + metric + trace olarak yayılır. Audit Trail yazma işlemlerini immutable kayıtla saklar.

Anti-pattern uyarıları

Eğitim oturumunda katman ihlali olarak işaretleyin — bunlar gözden kaçırılınca framework çöker.

Cross-layer leak

Domain bounded context bir başkasını doğrudan import etmesin — sadece event veya port üzerinden.

Tenant_id atlama

Sorgu yazarken WHERE'a tenant_id koymayı unutma. Middleware'den otomatik ekleyen helper kullan, manuel SQL yazma.

Plugin core'a sızıntı

Plugin core entity'ye doğrudan dokunamaz; sadece ilan ettiği hook + API üzerinden.

Senkron AI çağrısı

LLM çağrısı request handler içinde bloke etmesin — agent runtime queue'ya at, SSE ile sonucu döndür.

Schema değişikliği commit'siz

Doctype Designer ile yapılan değişiklik git'e commit'lenmeden tenant tarafına yansımasın.

Audit log es geçme

Yazma operasyonları audit'siz kabul edilmesin. Yasal compliance + güven için zorunlu.