KoderKoder.ai
FiyatlandırmaKurumsalEğitimYatırımcılar için
Giriş YapBaşla

Ürün

FiyatlandırmaKurumsalYatırımcılar için

Kaynaklar

Bize UlaşınDestekEğitimBlog

Yasal

Gizlilik PolitikasıKullanım KoşullarıGüvenlikKabul Edilebilir Kullanım PolitikasıKötüye Kullanımı Bildir

Sosyal

LinkedInTwitter
Koder.ai
Dil

© 2026 Koder.ai. Tüm hakları saklıdır.

Ana Sayfa›Blog›Web, Mobil ve API'ler için Tek Bir Yapay Zeka Tarafından Üretilen Kod Tabanı
29 Eki 2025·7 dk

Web, Mobil ve API'ler için Tek Bir Yapay Zeka Tarafından Üretilen Kod Tabanı

Tek bir yapay zeka tarafından oluşturulan kod tabanının, paylaşılan mantık, tutarlı veri modelleri ve daha güvenli sürümlerle web uygulamaları, mobil uygulamalar ve API'leri nasıl güçlendirebileceğini keşfedin.

Web, Mobil ve API'ler için Tek Bir Yapay Zeka Tarafından Üretilen Kod Tabanı

Tek Bir Yapay Zeka Tarafından Üretilen Kod Tabanı Ne Anlama Gelir

“Tek bir kod tabanı” nadiren her yerde çalışan tek bir UI demektir. Pratikte genellikle tek bir depo ve paylaşılan kurallar anlamına gelir—ayrı teslim yüzeyleri (web uygulaması, mobil uygulama, API) vardır ve hepsi aynı temel iş kararlarına dayanır.

Paylaşılan mantık vs. paylaşılan UI

İyi bir zihinsel model, asla anlaşmaması gereken parçaları paylaşmaktır:

  • Domain kuralları: hesaplamalar, uygunluk kontrolleri, fiyatlandırma, iş akışları, değişmezlikler.
  • Kullanım senaryoları: “sipariş oluştur”, “abonelik iptal et”, “iade ver” vb.
  • Veri sözleşmeleri: istek/yanıt biçimleri, doğrulama kuralları, hata kodları.

Bu arada, tipik olarak UI katmanını bütünüyle paylaşmazsınız. Web ve mobil farklı navigasyon desenlerine, erişilebilirlik beklentilerine, performans kısıtlarına ve platform yeteneklerine sahiptir. UI paylaşmak bazı durumlarda kazanç sağlayabilir, ama “tek kod tabanı”nın tanımı bu değildir.

AI neyi değiştirir (ve neyi değiştirmez)

AI tarafından üretilen kod şunları dramatik şekilde hızlandırabilir:

  • proje iskeleti oluşturma (kataloglar, build script'leri, temel bileşenler)
  • CRUD endpoint'leri ve istemciler üretme
  • örneklerden testler ve fixture'lar oluşturma

Ama AI otomatik olarak tutarlı bir mimari üretmez. Net sınırlar olmadan, mantığı uygulamalar arasında çoğaltma, kaygıları karıştırma (UI doğrudan veritabanı kodunu çağırma) ve birden çok yerde “neredeyse aynı” doğrulamalar yaratma eğilimindedir. İvme, önce yapıyı tanımlamaktan—sonra tekrarlayan kısımları doldurmak için AI kullanmaktan gelir.

Hedeflenmesi gereken çıktılar

Tek bir AI-destekli kod tabanı başarılı olduğunda şunları sağlar:

  • Tutarlılık: web, mobil ve API aynı kuralları uygular.
  • Hız: yeni özellik bir kez geliştirilir, sonra her yerde görünür hale gelir.
  • Sürdürülebilirlik: değişiklikler lokalize edilir, incelenir, test edilir ve öngörülebilir şekilde yayınlanır.

Web, Mobil ve API Teslimi için Hedefler ve Kısıtlar

Tek bir kod tabanı, neyi başarması gerektiği—ve neyi standartlaştırmaması gerektiği—açık olduğunda işe yarar. Web, mobil ve API farklı kitlelere ve kullanım desenlerine hizmet eder; aynı iş kurallarını paylaşsalar bile.

Kimi hedefliyorsunuz (ve nasıl)

Çoğu üründe en az üç “ön kapı” vardır:

  • Web uygulaması kullanıcıları (müşteriler, yöneticiler, destek ekipleri) hızlı gezinme, erişilebilirlik ve kolay güncellemeler bekler.
  • Mobil kullanıcılar yerel his veren etkileşimler, aralıklı bağlantı desteği ve verimli pil/ağ kullanımı bekler.
  • Üçüncü taraf entegrasyonlar (partnerler, dahili sistemler, otomasyon araçları) stabil API'lere, net sözleşmelere ve öngörülebilir hata ele alma davranışına güvenir.

Amaç, davranışta tutarlılıktır (kurallar, izinler, hesaplamalar)—aynı deneyimler değil.

Hedef olmayanlar: aynı UX’i zorlamayın

Yaygın bir hata modu “tek kod tabanı”nı “tek UI” gibi ele almaktır. Bu genellikle web-benzeri bir mobil uygulama veya mobil-benzeri bir web uygulaması üretir—her ikisi de sinir bozucu olur.

Bunun yerine şuna odaklanın:

  • Paylaşılan domain mantığı ve doğrulama
  • Paylaşılan veri modelleri ve API sözleşmeleri
  • Platforma özel sunum ve etkileşim tasarımı

Erken tasarım için önemli kısıtlar

Çevrimdışı modu: Mobil genellikle ağ olmadan okuma (ve bazen yazma) gerektirir. Bu, yerel depolama, eşitleme stratejileri, çakışma yönetimi ve net “gerçek kaynağın” kuralları anlamına gelir.

Performans: Web paket boyutu ve etkileşime geçme süresi önemser; mobil açılış zamanı ve ağ verimliliği; API ise gecikme ve throughput. Kod paylaşmak, her istemciye gereksiz modüller göndermek anlamına gelmemelidir.

Güvenlik ve uyumluluk: Kimlik doğrulama, yetkilendirme, denetim izleri, şifreleme ve veri saklama kuralları tüm yüzeylerde tutarlı olmalıdır. Düzenlemeli alanlarda çalışıyorsanız, kayıt, onam ve en az ayrıcalık gereksinimlerini baştan uygulayın—yamalar olarak değil.

Referans Mimari: Katmanlar ve Sorumluluklar

Tek bir kod tabanı, net sorumluluklara sahip açık katmanlara organize edildiğinde en iyi şekilde çalışır. Bu yapı ayrıca AI tarafından üretilen kodun gözden geçirilmesini, test edilmesini ve bir kısmının diğerlerini bozmadan değiştirilmesini kolaylaştırır.

Yüksek seviyeli akış

Çoğu ekibin üzerinde birleştiği temel şekil şöyledir:

Clients (Web / Mobile / Partners)
          ↓
     API Layer
          ↓
    Domain Layer
          ↓
 Data Sources (DB / Cache / External APIs)

Ana fikir: kullanıcı arayüzleri ve taşıma detayları kenarlarda durur, iş kuralları merkezdedir.

Nelerin paylaşıldığı

“Paylaşılabilir çekirdek”, her yerde aynı şekilde davranması gereken her şeydir:

  • Domain (iş mantığı): fiyatlandırma kuralları, uygunluk kontrolleri, sipariş durum geçişleri vb.
  • Doğrulama: giriş kuralları ve tutarlı hata mesajlarına eşlenmiş kodlar.
  • Ağ + şemalar: API istek/yanıt tipleri, serileştirme ve sözleşme testleri.

AI yeni özellikler ürettiğinde en iyi sonuç: domain kurallarını bir kez güncellersiniz ve her istemci otomatik olarak fayda sağlar.

Nelerin farklı kalması gerekir

Bazı kodları paylaşıma zorlamak maliyetli (ve riskli) olabilir:

  • UI bileşenleri: web tasarım sistemleri vs native kontroller.
  • Navigasyon ve kullanıcı akışları: tarayıcı yönlendirmesi vs mobil stack'leri.
  • Cihaz yetenekleri: push bildirimleri, biyometri, kamera, çevrimdışı depolama.

Pratik kural: kullanıcı görebiliyorsa veya OS bozabiliyorsa, buna uygulama özgü kalmasına izin verin. İşle ilgili bir karar ise domain'de kalsın.

Katmanlara göre sorumluluklar

  • API katmanı: kimlik doğrulama, hız sınırları, HTTP/GraphQL’den domain komutlarına eşleme.
  • Domain katmanı: saf kurallar ve kullanım senaryoları, minimum bağımlılık.
  • Veri kaynakları: veritabanları ve üçüncü taraf servisler, implementasyonlar değişse bile iş mantığını yeniden yazmamak için arayüzlerin arkasında tutulur.

Paylaşılan Domain Katmanı (İş Mantığı)

Paylaşılan domain katmanı, kod tabanının en “sıkıcı” hissettirmesi gereken kısmıdır: öngörülebilir, test edilebilir ve her yerde yeniden kullanılabilir. AI sisteminizi bu katmana dayandırmanız gereklidir—böylece web ekranları, mobil akışlar ve API endpoint'leri aynı kuralları yansıtır.

İsimlerle (isimler ve fiiller) başlayın

Ürününüzün temel kavramlarını entityler (zaman içinde kimliği olan şeyler, ör. Account, Order, Subscription) ve value objectler (değerleriyle tanımlanan şeyler, ör. Money, EmailAddress, DateRange) olarak tanımlayın. Davranışı ise use caseler (bazen application services denir) halinde yakalayın: “Sipariş oluştur”, “Abonelik iptal et”, “E-postayı değiştir”.

Bu yapı domain'i uzman olmayanlar için anlaşılır kılar: isimler neyin var olduğunu, fiiller sistemin ne yaptığını anlatır.

İş kurallarını UI'dan bağımsız tutun

Domain mantığı tetiklendiğinin bir buton tıklaması, web form gönderimi veya API isteği olup olmadığını bilmemelidir. Pratikte bu şunları gerektirir:

  • Framework importları yok (domain kodunda web controller'ları, mobil view'ları veya ORM anotasyonları bulunmasın)
  • UI stringleri yok (hata kodları veya anahtarları, sabit mesajlar yerine tercih edilir)
  • Ağ varsayımları yok (domain “API çağırmaz”; kuralları ifade eder)

AI kod ürettiğinde bu ayrımı kaybetmek kolaydır—modeller UI kaygılarıyla doluverir. Buna refaktör tetikleyicisi olarak bakın, tercih değil.

Her yerde tek bir doğrulama seti

Doğrulama ürünlerin sıkça sürüklenme yaşadığı alandır: web bir şeyi izin verir, API reddeder veya mobil farklı doğrulama uygular. Doğrulamayı domain katmanına (veya paylaşılan bir doğrulama modülüne) koyun ki tüm yüzeyler aynı kuralları uygulasın.

Örnekler:

  • EmailAddress formatını bir kez doğrulayın, web/mobile/API yeniden kullansın
  • Money negatif toplamları engellesin, değerin nereden geldiğine bakılmaksızın
  • Kullanım senaryoları alanlar arası kuralları uygulasın (ör. "bitiş tarihi başlangıçtan sonra olmalı")

Bunu iyi yaparsanız, API katmanı çevirmen olur, web/mobile sunar—domain katmanı tek gerçek kaynak olarak kalır.

API Katmanı: Her Şeyin Sürücüsü Olan Sözleşmeler

Ürettikten sonra daha hızlı gönderin
Üretilen koddan çalışan bir uygulamaya dağıtım, barındırma ve özel alan adlarıyla geçin.
Uygulamayı Yayınla

API katmanı sisteminizin “kamuya açık yüzü”dür—ve tek bir AI-destekli kod tabanında her şeyi sabitleyen kısım olmalıdır. Sözleşme netse, web uygulaması, mobil uygulama ve dahili servisler aynı kaynaktan üretilip doğrulanabilir.

API-öncelikli sözleşme ile başlayın

Sözleşmeyi handler veya UI bağlamadan önce tanımlayın:

  • Endpoint'ler ve kaynaklar: tutarlı isimler (ör. /users, /orders/{id}), öngörülebilir filtreleme ve sıralama.
  • Hatalar: stabil bir hata şekli (kod, mesaj, detaylar) ve HTTP durum kullanımı dokümante edilmiş olsun.
  • Sayfalandırma: bir yaklaşım seçin (cursor-based evrim için genellikle daha esnektir) ve yanıt alanlarını standardize edin.
  • Sürümleme: erken karar verin (path /v1/... veya header-temelli) ve deprecasyon kurallarını dokümante edin.

Tek bir şemadan tipler ve istemciler üretin

OpenAPI (veya GraphQL SDL) gibi bir şemayı kanonik yapı olarak kullanın. Bundan şunları üretin:

  • Sunucu iskeletleri (route'lar, doğrulama iskeleti)
  • Web ve mobil için tipli istemciler
  • Sürüklenmeyi azaltan paylaşılan istek/yanıt modelleri

Bu AI tarafından üretilen kod için önemlidir: model çok kod üretebilir, ama şema tümünü hizalı tutar.

İnce hataları önleyen tutarlılık kuralları

Birkaç vazgeçilmez kural koyun:

  • Adlandırma: snake_case veya camelCase, ikisi birden olmasın; JSON ile üretilen tipler arasında eşleşsin.
  • Durum kodları: başarı için 200/201/204, doğrulama için 400, kimlik/izin için 401/403, çakışma için 409.
  • Idempotency: riskli işlemler (ödeme, sipariş oluşturma) için Idempotency-Key isteyin ve yeniden deneme davranışını tanımlayın.

API sözleşmesini bir ürün gibi ele alın. Stabil olduğunda, diğer her şey üretmeyi, test etmeyi ve göndermeyi kolaylaştırır.

Web Uygulaması: Paylaşılan Mantığı Bağlarken Bağlantıyı Kırmayın

Web uygulaması paylaşılan iş mantığından büyük fayda sağlar—ve mantık UI kaygılarıyla dolaştığında zarar görür. Anahtar, paylaşılan domain katmanını “headless” bir motor olarak ele almaktır: kuralları, doğrulamayı ve iş akışlarını bilir, ama bileşenler, route'lar veya tarayıcı API'leri hakkında hiçbir şey bilmez.

Render seçenekleri: SSR vs CSR (ve neden önemli)

Eğer SSR (server-side rendering) kullanıyorsanız, paylaşılan kod sunucuda çalışmaya uygun olmalıdır: doğrudan window, document veya tarayıcı depolama çağrısı olmamalıdır. Bu iyi bir zorlama oluşturur: tarayıcıya bağımlı davranışı ince bir web adaptör katmanına koyun.

CSR (client-side rendering) ile daha fazla özgürlüğünüz vardır, ama aynı disiplin yine fayda sağlar. Sadece CSR projeleri genellikle domain modüllerine UI kodu “yanlışlıkla” import eder—ta ki daha sonra SSR, edge rendering veya Node’da koşan testler eklenene kadar.

Pratik kural: paylaşılan modüller deterministik ve ortamdan bağımsız olmalı; cookie, localStorage veya URL ile ilgili her şey web katmanında olmalı.

Durum sınırları: domain durumu vs UI durumu

Paylaşılan mantık domain durumunı (ör. sipariş toplamları, uygunluk, türetilmiş bayraklar) basit nesneler ve saf fonksiyonlar aracılığıyla dışa verebilir. Web uygulaması UI durumunu sahiplenmelidir: yükleme spinner'ları, form odaklanması, iyimser animasyonlar, modal görünürlüğü.

Bu, React/Vue gibi kütüphaneleri değiştirmeyi kolaylaştırır: iş kurallarını baştan yazmadan kütüphane değiştirilebilir.

İzole etmeniz gereken web-spesifik konular

Web katmanı şu işleri ele almalı:

  • Erişilebilirlik (semantik markup, klavye navigasyonu, ARIA)
  • Routing (URL yapısı, derin linkler, sunucu yönlendirmeleri)
  • Tarayıcı depolama (cookie/oturum, localStorage, önbellekleme)

Web uygulamasını, kullanıcı etkileşimlerini domain komutlarına çeviren ve domain sonuçlarını erişilebilir ekranlara çeviren bir adaptör olarak düşünün.

Mobil Uygulama: Yerel Yetkinliklerle Paylaşılan Mantık

Mobil uygulama en çok paylaşılan domain katmanından fayda sağlar: fiyatlandırma, uygunluk, doğrulama ve iş akışları web ve API ile aynı davranmalıdır. Mobil UI, paylaşılan mantığın etrafında dokunma için optimize edilmiş, aralıklı bağlantıya ve cihaz özelliklerine uygun bir “kabuğun” görevini görür.

Tasarlamanız gereken platform desenleri

Paylaşılan iş mantığı olsa bile mobildeki desenler nadiren web ile birebir eşleşir:

  • Navigasyon: navigasyon durumunu uygulama katmanında modelleyin (ekranlar, sekmeler, modal'lar), domain kararlarını (ör. “kullanıcının ödeme yapmadan önce e-postasını doğrulaması gerekir”) paylaşılan kodda tutun.
  • Arka plan işleri: eşitleme, yüklemeler ve yenilemeler açık görevler olarak ele alınsın; süre sınırları ve devam ettirilebilirlik olsun.
  • Push bildirimleri: bildirim yüklerini uygulama katmanında ayrıştırın, sonra paylaşılan mantığa devredin.
  • Deep linkler: yönlendirmeyi uygulama katmanında yapın, ama gerekli veriyi doğrulama ve alma işini paylaşılan kod yapısına bırakın.

Çevrimdışı-öncelikli: önbellekleme, eşitleme ve çakışma stratejisi

Gerçek mobil kullanım bekliyorsanız, çevrimdışı varsayımı yapın:

  • Okuma modellerini yerelde önbelleğe alın (key-value veya SQLite) ve net bir bayatlık politikası belirleyin.
  • Yazmaları niyet/olay kuyruğu olarak sıraya alın (ör. “sipariş taslağı oluştur”), sonra çevrimiçi olunca eşitleyin.
  • Çakışma kurallarını baştan belirleyin (son yazma kazanır, sunucu-otoritatif birleştirme veya kullanıcı çözümü).
  • API’nin tekrarları güvenle kabul edebilmesi için backoff ve idempotency anahtarları ile yeniden denemeler uygulayın.

Mobil-spesifik kaygılar

  • Uygulama boyutu: paylaşılan katmanı modüler tutun ki uygulama sadece ihtiyaç duyduğunu paketlesin.
  • Pil/veri: ağ çağrılarını gruplayın ve agresif pollingden kaçının.
  • İzinler: sadece gerektiğinde isteyin (kamera, konum, rehber) ve izin kontrollerini domain kodundan uzak tutun ki platforma göre politika değişebilsin.

Tüm Yüzeylerde Veri Modelleri, Kimlik Doğrulama ve İzinler

Dışa aktarılabilir kaynak kodu edinin
Gözden geçirilebilir, test edilebilir ve istediğiniz yere taşınabilir gerçek kaynak kodu ile tam kontrolü koruyun.
Kodu Dışa Aktar

Web, mobil ve API her biri kendi veri şekillerini ve güvenlik kurallarını icat ederse “tek kod tabanı” hızla bozulur. Çözüm, modelleri, kimlik doğrulamayı ve yetkilendirmeyi ürün kararları olarak tek yerde tanımlayıp bir kez kodlamaktır.

Veri modelleri için tek gerçek kaynak

Modellerin yaşadığı bir yer seçin ve diğer her şeyi ondan türetin. Yaygın seçenekler:

  • Şema-öncelikli: varlıkları ve doğrulama kurallarını şema dosyalarında (OpenAPI/JSON Schema) tanımlayın, sonra API, web ve mobil için tipler üretin.
  • Paylaşılan modüller: model tiplerini ve doğrulayıcıları paylaşılan bir pakette (genellikle “domain” paketi) tutun ve tüm uygulamalar içe aktarsın.
  • Hibrit: dış sözleşmeler için şema dosyaları, dahili domain kuralları için paylaşılan modüller kullanın.

Anahtar araç değil—tutarlılık. Eğer “OrderStatus” bir istemcide beş değere sahip, diğerinde altı değere sahipse, AI üretilen kod memnuniyetle derlenecek ama hatalar gönderecektir.

Kimlik doğrulama: oturumlar, tokenlar ve güvenli depolama

Kimlik doğrulama kullanıcı için aynı hissettirmeli ama mekanikler yüzeye göre farklı olmalı:

  • Web genellikle cookie tabanlı oturumlar tercih eder (CSRF koruması, basit tarayıcı depolama).
  • Mobil ve üçüncü taraf istemciler genelde token tabanlı auth (access token + refresh token) ister.

Tek bir akış tasarlayın: giriş → kısa ömürlü erişim → gerektiğinde yenileme → sunucu tarafı durumu geçersiz kılan çıkış. Mobilde sırları Keychain/Keystore gibi güvenli depolamada saklayın; webde httpOnly cookie tercih edin.

Yetkilendirme: merkezi kurallar, API'de zorlanan

İzinler bir kez tanımlanmalı—tercihen iş kurallarına yakın bir yerde—ve sonra her yerde uygulanmalı.

  • Kontrolleri domain katmanında merkezileştirin (ör. canApproveInvoice(user, invoice)).
  • Gerçek güvenlik için API'de zorlayın.
  • UI’da yalnızca eylemleri gizlemek/devre dışı bırakmak için yansıtın, veriyi korumak için değil.

Bu, “mobilde çalışıyor ama webde çalışmıyor” sürüklenmesini önler ve AI kod üretimine kimin ne yapabileceğine dair net, test edilebilir bir sözleşme verir.

Build, Yayın ve Dağıtım Stratejisi

Birleşik bir kod tabanı, build ve yayınlar öngörülebilir olduğunda birleşik kalır. Amaç: ekiplerin API, web ve mobil uygulamaları bağımsız şekilde yayınlayabilmesi—mantığı çatallamadan veya çevresel "özel durum"lar koymadan.

Monorepo vs çoklu repo

Tek bir repo, çoklu paket/uygulama içeren monorepo, tek kod tabanı için genellikle en iyi sonucu verir çünkü paylaşılan domain mantığı, API sözleşmeleri ve UI istemcileri birlikte evrilir. Atomik değişiklikler (tek PR bir sözleşmeyi ve tüm tüketicileri güncelleyebilir) ve daha basit refaktörler elde edersiniz.

Çoklu repo da birleşik çalışabilir ama koordinasyon maliyeti ödemeniz gerekir: paylaşılan paketlerin versiyonlaması, artefakt yayınlama ve kırıcı değişikliklerin senkronizasyonu. Örgütsel sınırlar, güvenlik kuralları veya ölçek nedeniyle monorepo pratik değilse çoklu repo seçin.

Build hedefleri ve artefaktlar

Her yüzeyi ayrı build hedefi olarak ele alın:

  • API servis artefakti: API uygulama paketinden oluşturulan container imajı veya serverless paket.
  • Web paketi: statik varlıklar + sunucu runtime (SSR varsa).
  • Mobil build'ler: Android (AAB/APK) ve iOS (IPA), paylaşılan mantığı bağımlılık olarak çeken native pipeline'lar.

Build çıktılarının açık ve yeniden üretilebilir olmasını sağlayın (lockfile'lar, sabitlenmiş toolchain, deterministik buildler).

CI/CD hattı ve ortam ayrımı

Tipik pipeline: lint → typecheck → unit test → sözleşme testleri → build → güvenlik taraması → deploy.

Konfigürasyonu koddan ayırın: environment değişkenleri ve gizli bilgiler CI/CD ve gizli yönetim sisteminde olsun, repoda değil. Aynı artefaktın environment'lar arasında yeniden dağıtılabilmesi için environment-spesifik overlay'ler (dev/stage/prod) kullanın—özellikle API ve web runtime için yeniden build etmeye gerek kalmadan.

Paylaşılan Kod için Testler ve Kalite Kapıları

Anlık görüntüler ve geri alma ile yineleyin
AI ile üretilen değişikliklerle güvenli şekilde deney yapın ve bir refaktör ters giderse geri alın.
Anlık Görüntü Oluştur

Web, mobil ve API aynı kod tabanından çıktığında testler "bir kutucuk daha" olmaktan çıkar ve küçük bir değişikliğin üç ürünü birden kırmasını engelleyen mekanizma haline gelir. Amaç: sorunları en ucuz yerde tespit etmek ve riskli değişiklikleri kullanıcılara ulaşmadan önce engellemek.

Paylaşılan kod tabanı için pratik test piramidi

Paylaşılan domain (iş mantığı) ile başlayın; en çok tekrarlanır ve altyapı olmadan test etmek en kolay olandır.

  • Unit testleri (domain katmanı): fiyatlandırma, uygunluk, izin kararları, durum geçişleri ve sınır durumlarını doğrulayın. Hızlı koşmalı ve test süitinin büyük kısmını oluşturmalı.
  • Entegrasyon testleri (API katmanı): gerçek serileştirme, doğrulama, kimlik doğrulama ve veri erişimi ile end-to-end çalıştığını kanıtlayın. Kritik akışlara odaklı tutun.
  • UI testleri (her istemci için): giriş, ödeme, form gönderimi gibi ana yolculukları doğrulayan az sayıda yüksek değerli kontrol. Bunlar yavaştır; onları "alarm" olarak görün, ayrıntılı kanıt değil.

Bu yapı çoğu güveni paylaşılan mantıkta tutar, katmanların birleştiği yerdeki "kablolama" sorunlarını yakalar.

İstemciler ve API'yi hizada tutmak için sözleşme testleri

Monorepo içinde bile API derlenip kullanıcı deneyimini bozacak şekilde değişebilir. Sözleşme testleri bu sürüklenmeyi engeller.

  • API-istemci sözleşmeleri: istek/yanıt şekilleri, hata formatları ve durum kodlarını kilitleyin. API yeni zorunlu alan ekler veya enum değiştirirse, sözleşme testleri merge öncesi başarısız olur.
  • Şema bir kapı olsun: OpenAPI/GraphQL şemalarını yayınlıyorsanız, şema değişikliklerini gözden geçirilebilir artefaktlar olarak ele alın. Kırıcı değişiklikler açık onay ve göç planı gerektirsin.

Yayınları koruyan kalite kapıları

İyi testler önemli, ama etraflarındaki kurallar da öyle:

  • PR kapıları: çalışan unit + entegrasyon testleri, lint/format kontrolleri ve domain katmanında minimum kapsam zorunlu olsun.
  • Feature flag'ler: tamamlanmamış davranışı ortadan kaldırmak için flag'lerin arkasına gizleyin; ortam veya kullanıcı grubu bazlı etkinleştirme yapın.
  • Aşamalı dağıtımlar: önce dahili kullanıcılara, sonra küçük bir prod trafiğine, sonra herkese.
  • Geri alma planı: geri almayı birincil seçenek yapın—versiyonlu sürümler, tersine çevrilebilir veya güvenle ileri sarılabilen DB migrasyonları ve net "hattı durdur" kriterleri.

Bu kapılarla AI destekli değişiklikler sık ama kırılgan olmadan yapılabilir.

Mimariden Vazgeçmeden AI’yı Nasıl Kullanmalı

AI, tek bir kod tabanını hızlandırabilir ama sadece hızlı bir junior mühendis gibi ele alındığında işe yarar: taslak üretir, okunmalı ve incelenmelidir. Amaç AI’yı hız için kullanmak; mimari, sözleşmeler ve uzun vadeli tutarlılık için insanları sorumlu tutmaktır.

AI nerede en çok yardımcı olur (ve düşük risklidir)

AI’yı şu mekanik işleri üretmesi için kullanın:

  • Proje iskeletleri (dizin yapısı, boilerplate modüller, feature kemikleri)
  • Mevcut sözleşmelerden API dökümantasyonu ve örnekler
  • Test suiti oluşturma (domain kuralları çevresinde unit testler, endpoint sözleşme testleri)
  • Migration ve seed veri script'leri
  • Tekrarlı refaktörler (alan adı değişikleri, modül bölme), planı siz tanımladıktan sonra

İyi kural: AI tarafından üretilen kod okunarak veya test çalıştırılarak kolayca doğrulanabilecek şekilde üretilsin; iş anlamını sessizce değiştiren kod üretmesin.

Mimarileri koruyan koruma hatları

AI çıktısı açık kurallarla sınırlandırılmalıdır, hislere bırakılmamalıdır. Bu kuralları kodun neresine koyduğunuz önemlidir:

  • Kodlama standartları: linter/formatter, adlandırma kuralları ve “UI’den doğrudan DB erişimi yok” gibi stil kısıtları.
  • Mimari kurallar: bağımlılık sınırları (ör. domain katmanı web’i import edemez), araçlar veya basit build kontrolleriyle zorlanabilir.
  • PR kontrol listesi: “Sözleşme değişti mi? OpenAPI + istemci tiplerini + testleri güncelle.” “Yeni domain kuralı mı var? Domain testleri ekle.”

AI kısa yol önersede sınırları ihlal ediyorsa, cevap "hayır" olmalı, derlense bile.

Yönetim: AI çıktısının izlenebilir olması

Risk sadece kötü kod değildir—izlenmeyen kararlardır. Bir iz audit izi bırakın:

  • Önemli prompt ve cevapları iş kalemleriyle (ticket ID, PR linkleri) birlikte kaydedin.
  • Sözleşme değişiklikleri, auth modeli değişimleri veya yeni domain kavramları için mimari karar kayıtları (ADR) tutun.
  • API değişiklikleri açık olsun: versiyonlu, dokümante edilmiş ve sözleşme testleriyle desteklenmiş.

AI en değerli olduğunda tekrarlanabilir: ekip neden bir şey üretildiğini görebilir, doğrulayabilir ve gerektikçe güvenle yeniden üretebilir.

Araç notu: sınırları koruyan AI

Sistem düzeyinde AI-destekli geliştirmeyi benimsiyorsanız, en önemli “özellik” ham üretim hızı değil—çıktıların sözleşmeleriniz ve katmanlamanızla hizalı kalma yeteneğidir.

Örneğin, Koder.ai bir sohbet arayüzü üzerinden web, sunucu ve mobil uygulamalar oluşturmanıza yardımcı olan bir platformdur—aynı zamanda gerçek, dışa aktarılabilir kaynak kodu üreterek mimari sınırları korumanıza olanak verir. Bu tür araçlar, API sözleşmesi ve domain kurallarını tanımlayıp sonra React tabanlı web yüzeyleri, Go + PostgreSQL arka uçları ve Flutter mobil uygulamaları arasında tutarlılığı kaybetmeden hızlı yinelemeye imkan verir. Planlama modu, anlık görüntüler ve geri alma gibi özellikler de "üretilir → doğrulanır → terfi ettirilir" yayın disiplinine iyi uyar.

SSS

Tek "AI tarafından üretilen kod tabanı" her yerde çalışan tek bir UI anlamına mı geliyor?

Genellikle bir depo ve bir dizi paylaşılan kural anlamına gelir; tek tip bir uygulama değil.

Uygulamada web, mobil ve API, ortak bir domain katmanı (iş kuralları, doğrulama, kullanım senaryoları) ve genellikle tek bir API sözleşmesi paylaşır; her platform kendi UI'sını ve platform entegrasyonlarını korur.

Web, mobil ve API arasında ne paylaşılmalı — ne paylaşılmamalı?

Asla uyuşmaması gerekenleri paylaşın:

  • Domain kuralları (fiyatlandırma, uygunluk, iş akışları, değişmezlikler)
  • Kullanım senaryoları (sipariş oluşturma, abonelik iptali, iade verme)
  • Doğrulama + hata kodları
  • API şemaları/sözleşmeleri (OpenAPI/GraphQL) ve üretilen tipler

UI bileşenleri, navigasyon ve cihaz/tarayıcı entegrasyonlarını platforma özgü tutun.

AI mimaride neyi değiştirir, ne değişmez?

AI, iskelet ve tekrarlı işleri (CRUD, istemciler, testler) hızlandırır; fakat iyi sınırlar otomatik oluşmaz.

Kasıtsız bir mimari yoksa AI tarafından üretilen kod genellikle:

  • uygulamalar arasında mantığı kopyalar
  • sorumlulukları karıştırır (UI doğrudan veri kaynağına erişir)
  • doğrulamada çok hafif farklılıklar oluşturur

AI’yı iyi tanımlanmış katmanları doldurmak için kullanın, katmanları icat etmesi için değil.

Tek paylaşılan kod tabanı için iyi bir referans mimari nedir?

Basit, güvenilir bir akış genellikle şöyledir:

  • İstemciler (web/mobil/partnerler) API katmanını çağırır
  • API katmanı istekleri domain kullanım senaryolarına çevirir
  • Domain, veri kaynağı arayüzlerini (DB/cache/harici API'ler) çağırır

Bu, iş kurallarını merkezileştirir ve test etmeyi ile AI ile eklemeyi kolaylaştırır.

Web, mobil ve API arasında doğrulama sürüklenmesini nasıl önleriz?

Doğrulamayı tek bir yerde (domain veya paylaşılan doğrulama modülü) tutun ve her yerde yeniden kullanın.

Pratik örnekler:

  • EmailAddress formatını bir kez doğrulayın, web/mobile/API tarafından yeniden kullanın
  • Money negatif toplamları her durumda engellesin
  • Kullanım senaryoları alanlar arası kuralları uygulasın (ör. bitiş tarihi başlangıçtan sonra olmalı)

Böylece "web kabul ediyor, API reddediyor" sürüklenmesini önlersiniz.

API sözleşmesi nasıl tüm sistem için "gerçek kaynak" olur?

OpenAPI (veya GraphQL SDL) gibi kanonik bir şema kullanın ve bundan üretin:

  • sunucu iskeletleri (route'lar, doğrulama iskeletleri)
  • web ve mobil için tipli istemciler
  • sürüklenmeyi azaltan paylaşılan istek/yanıt modelleri

Ayrıca sözleşme testleri ekleyin ki şema ihlalleri CI'de başarısız olsun.

Mobil ile paylaşılan mantıkta "çevrimdışı-öncelikli" ne demek?

Çevrimdışı amaçlı tasarım, sadece "cache işe yarar umudu" değil:

  • Okuma modellerini yerel olarak önbelleğe alın ve bir bayatlık politikası belirleyin
  • Yazmaları niyet/olay olarak kuyruğa alın ve çevrimiçi olunca eşitleyin
  • Çakışma kurallarını önceden tanımlayın (sunucu-otoritatif, birleştirme veya kullanıcı çözümü)
  • Tekrar denemeler için backoff ve idempotency anahtarları kullanın

Çevrimdışı depolama ve eşitleme mobil katmanda olsun; iş kuralları paylaşılan domain kodunda kalsın.

Web, mobil ve API'lerde kimlik doğrulama ve izinler nasıl çalışmalı?

Kullanıcı için tek bir akış tasarlayın, yüzeylere uygun şekilde uygulayın:

  • Web: sıklıkla httpOnly cookie tabanlı oturumlar (tokenlerin JS'e maruz kalmasını azaltır)
  • Mobil/üçüncü taraflar: access + refresh token; Keychain/Keystore gibi güvenli depolamada saklanmalı

Yetkilendirme kuralları merkezi olarak tanımlanmalı (ör. canApproveInvoice) ve ; UI sadece eylemleri gizlemek/devre dışı bırakmak için aynısını yansıtmalı.

Birleşik kod tabanında build ve yayınlar nasıl yönetilir?

Her yüzeyi ayrı bir build hedefi olarak ele alın, ortak paketleri tüketsinler:

  • API: container imajı veya serverless bundle
  • Web: statik varlıklar + SSR runtime gerekirse
  • Mobil: Android (AAB/APK) ve iOS (IPA) native pipeline'ları

CI/CD hattında: lint → typecheck → unit test → sözleşme testi → build → güvenlik taraması → deploy. Gizli bilgiler repoda değil, CI/CD’nin sekret yöneticisinde olsun.

Mimariden taviz vermeden AI nasıl kullanılır?

AI’yı hızlı bir junior mühendis gibi kullanın: taslaklar için harika, doğrudan merge edilmemeli.

Koruyucular:

  • bağımlılık sınırlarını zorunlu kılın (domain web/mobile/API'yi import etmemeli)
  • sözleşme değiştiyse OpenAPI + istemci tiplerini ve testleri güncelleme zorunluluğu koyun
  • yeni kural eklenmişse domain unit testleri isteyin
  • ADR'ler ve önemli promptları PR/ticket'lara bağlayın

AI çıktısı sınırları ihlal ediyorsa, derlense bile reddedin.

İçindekiler
Tek Bir Yapay Zeka Tarafından Üretilen Kod Tabanı Ne Anlama GelirWeb, Mobil ve API Teslimi için Hedefler ve KısıtlarReferans Mimari: Katmanlar ve SorumluluklarPaylaşılan Domain Katmanı (İş Mantığı)API Katmanı: Her Şeyin Sürücüsü Olan SözleşmelerWeb Uygulaması: Paylaşılan Mantığı Bağlarken Bağlantıyı KırmayınMobil Uygulama: Yerel Yetkinliklerle Paylaşılan MantıkTüm Yüzeylerde Veri Modelleri, Kimlik Doğrulama ve İzinlerBuild, Yayın ve Dağıtım StratejisiPaylaşılan Kod için Testler ve Kalite KapılarıMimariden Vazgeçmeden AI’yı Nasıl KullanmalıSSS
Paylaş
Koder.ai
Build your own app with Koder today!

The best way to understand the power of Koder is to see it for yourself.

Start FreeBook a Demo
API'de zorlanmalı