Ana sayfaHikotest
Platform Tanıtımı

İş mantığını WebAssembly'e derle, store onayı beklemeden anında yayınla.

Hikotest; mobil (Android/iOS) ve web uygulamalarındaki karar veren fonksiyonları (fiyatlandırma, doğrulama, kampanya kuralları…) tek bir WASM modülüne derleyip Over-The-Air günceller. Kullanıcı hiçbir güncelleme yapmadan yeni mantık devreye girer.

YazpaneldeWASMderleOTAyayınlaSDKanındastore onayı yok — saniyeler içinde canlı
Problem

Store onayı, ekiplerin en yavaş adımı

Küçücük bir iş kuralı değişikliği bile mağaza incelemesine takılıyor — ve aynı mantık üç platformda birbirinden sapıyor.

Günler / haftalar bekleme

Fiyat mantığındaki tek satırlık düzeltme bile App Store / Play Store incelemesinden geçmek zorunda. Acil bir hata bile kuyrukta bekler.

Üç kez yazılan mantık

Aynı kural Web/JS, Android/Kotlin ve iOS/Swift için ayrı ayrı yazılır; zamanla üçü birbirinden sessizce sapar.

Zor geri alma

Yayınlanan bir hatayı geri almak yeni bir store submission demektir — yine bekleme, yine risk.

Çözüm

Karar veren mantığı OTA'lı hale getir

Uygulamanın tamamı değil — sadece seçtiğin fonksiyonlar WASM'a derlenir. UI, navigasyon ve native entegrasyonlar uygulamanda native kalır.

Seçtiğin fonksiyonlar (fiyatlandırma kuralı, doğrulama, kampanya mantığı…) tek bir WebAssembly modülüne dönüştürülür.

Her müşteri aynı sabit Hikotest SDK'sını kurar; projeler arasındaki fark koddan değil, OTA ile dağıtılan içerikten (bundle) gelir. SDK bu modülü arka planda indirir ve çalıştırır.

Sonuç: mantık bir kez, doğru şekilde yazılır; üç platformda birebir aynı sonucu verir.
Aynı WASMtek kaynakAndroidKotlin · ChicoryiOSSwift · WasmKitWebJS/TS · WebAssembly
Senaryo 1

Sıfırdan fonksiyon yazanlar için

Greenfield: yeni bir iş kuralını doğrudan panelde yaz, test et, tek tıkla canlıya al. Uygulamanı yeniden derleyip mağazaya göndermene gerek yok.

  1. 1

    Panelde fonksiyonu yaz

    Monaco tabanlı editörde, isimli parametreler ve tip bilgisiyle (string/int/float/ boolean) fonksiyonunu yazarsın. Taslaklar otomatik kaydedilir — sekme kapansa bile kaldığın yerden devam edersin.

    app.hikotest.com
    Hikotest çalışma alanı — fonksiyon editörü, test senaryoları ve simülasyon paneli
    Çalışma alanı: solda test senaryoları, ortada editör, sağda simülasyon sonuçları.
  2. 2

    Girdi → beklenen çıktı ile doğrula

    Her fonksiyon için test senaryoları (girdi ve beklenen çıktı) tanımlarsın. Kod her değiştiğinde bu senaryolara karşı otomatik çalıştırılır; sonuç matrisinde PASS/FAIL anında görünür.

  3. 3

    Tek tıkla canlıya deploy

    "Canlıya Deploy" ile fonksiyon WASM'a derlenip yayınlanır. Semver ile versiyonlanır ve audit log'a kaydedilir.

  4. 4

    SDK'yı uygulamana ekle — bir kez

    Bu adımı yalnızca bir defa yaparsın. Sonrasında her yeni fonksiyon/güncelleme OTA ile gelir; lokalinde tekrar bir şey yapmana gerek kalmaz.

    build.gradle.ktsKotlin
    // Android
    implementation(
      "com.github.halil9393:hikotest-sdk:1.0.0"
    )
    
    Hikotest.configure(
      repoOwner = "you",
      repoName  = "proje-repo",
    )
    val total = Hikotest.call(
      "calculateTax", 100, 18
    ) // 118
    YourApp.swiftSwift
    // iOS
    .package(url:
     "…/HikotestIOSSDK.git",
     branch: "main")
    
    Hikotest.shared.configure(
      HikotestConfig(
        repoOwner: "you",
        repoName: "proje-repo"))
    let t = try await Hikotest
     .shared.call("calculateTax",
       100, 18) // 118
    app.tsTypeScript
    // Web
    npm i @hikotest/sdk
    
    import { Hikotest }
      from '@hikotest/sdk';
    
    Hikotest.configure({
      repoOwner: 'you',
      repoName: 'proje-repo',
    });
    const total = await Hikotest
      .call('calculateTax', 100, 18);
      // 118

Avantajlar

  • Mantık değişikliği saniyeler içinde canlıda — mağaza kuyruğu yok.
  • Tek editörde yaz, üç platformda birebir aynı sonuç.
  • Test senaryolarından geçmeden hiçbir şey yayınlanamaz.
  • Hata olursa bir önceki sürüme anında rollback.

Dikkat edilecekler

  • Yalnızca saf iş mantığı taşınır — UI ve native API çağrıları uygulamada kalır.
  • Fonksiyonlar tipli bir sözleşmeyle yazılır; keyfi native kütüphane çağrılamaz.
  • İlk kurulumda SDK entegrasyonu (tek seferlik) gerekir.
Senaryo 2 — Asıl değer katmanı

Eski kodlarını temize çekenler için

Brownfield: yıllardır üç platformda ayrı ayrı yaşayan ve birbirinden sapmış kodu tek doğru kaynağa indirger. Kodun repondan çıkmaz — işaretlersin, kendi cihazında koşturursun, farkı görürsün.

JS (Web)Kotlin (Android)Swift (iOS)AI Teşhishangisi sapmış?Tek WASMkanonikSenaryo 2 — kod eşitleme (Faz 4, hedeflenen katman)

Şirketinin elinde zaten JS, Kotlin ve Swift kodu var ve hangisinin "doğru" davrandığı belirsiz. Bu kez kimseye kod yapıştırmıyorsun: ilgili fonksiyonu kendi reponda // @unit yorumuyla işaretlersin — kütüphane değil, düz bir yorum satırı; üretim binary'sine tek byte girmez.

unitkit CLI'ı kendi cihazında koşar: aynı altın test vektörlerini üç platformda çalıştırır ve bir fark raporuüretir — hangi platformun saptığını AI harcamadan, tek satır kod paylaşmadan görürsün. Doğru mantık, birim birim ve senin onayınla, tek kanonik WASM'a indirger; bundan sonra üç platform aynı kaynaktan beslenir.

  1. 1

    Fonksiyonu reponda işaretle

    Temizlemek istediğin fonksiyonun başına bir yorum satırı koyarsın: // @unit id=pricing.discount.v1. Aynı id üç platformu birleştiren anahtardır. Kütüphane kurulmaz, derlemeye girmez; geri alması bir sed kadar kolaydır.

  2. 2

    unitkit CLI'ı kendi cihazında çalıştır

    CLI scan ile işaretli birimleri bulur, test ile altın vektörleri her platformda koşar. Native Kotlin/Swift koşusu senin cihazında gerçek derleyiciyle yapılır; panele yalnızca birim kimliği ve geçti/kaldı sonuçları düşer — ham kaynak repodan çıkmaz.

  3. 3

    Fark raporunu oku

    Panel üç platformun sonucunu yan yana bir fark matrisinde gösterir: hangi birim hangi platformda sapıyor, kanıtıyla. Bu adım sıfır token harcar — diferansiyel test, AI değil. İlk somut değer budur.

    app.hikotest.com
    Fark matrisi — her birim için JS · WASM · Kotlin · Swift sonucu yan yana
    Fark matrisi: her birim için JS · WASM · Kotlin · Swift sonucu ve sapma noktası.
  4. 4

    Onayla → tek WASM'a indirge

    Sapmayı "bug" mu yoksa "bilinçli davranış" mı diye kararlarsın; AI maskelenmiş birim üzerinden kanonik mantığı önerir. Onayladığın birim tek WASM'a derlenip OTA ile üç platforma dağıtılır. Her birim bir yaşam döngüsünde ilerler (marked → diffed → reconciled → shared) — ilerleme "kod temizliği" gibi belirsiz değil, ölçülebilir.

Avantajlar

  • Fark raporunu tek satır kod paylaşmadan alırsın — CLI senin cihazında koşar.
  • @unit düz bir yorum: kütüphane yok, üretim binary'sine tek byte girmez.
  • Native Kotlin/Swift testi kendi cihazında gerçek derleyiciyle koşar; panel sonucu toplar.
  • Birim birim, geliştirici onayıyla kademeli geçiş — big-bang yok.
  • Yaşam döngüsüyle ölçülebilir ilerleme: kaç birim reconciled, kaç birim shared.

Dikkat edilecekler

  • unitkit CLI'ı kendi cihazına kurman gerekir (tek seferlik, npx).
  • WASM'a geçen birimin (shared) kaynağı o adımda paylaşılır — "kodunuz bizi hiç görmez" vaadi verilmez.
  • Panel içi çoklu-motor matrisinin görsel önizlemesi mock'tur; gerçek native koşu CI'da olur.
  • UI ve platforma özel kod kapsam dışıdır — yalnızca saf iş mantığı taşınır.
unitkit · Adım adım

Peki pratikte tam olarak ne yapıyorsun?

İki yer var: kendi cihazında (terminal) çalışan unitkit CLI, ve sonuçları görüp onayladığın Hikotest paneli. Aşağıda her adımın hangisinde yapıldığını rozetle ve panel konumuyla işaretledik.

Senin tarafın — kendi cihazın

unitkit CLI senin makinende (terminal) koşar. Kodu tarar, işaretli birimleri bulur, testleri çalıştırır. Ham kaynağın burada kalır — panele yalnız descriptor ve sonuç gider.

Hikotest paneli

CLI'ın gönderdiği veriyi görürsün: birim listesi, fark matrisi, AI önerileri. Kararlar (onay/red) ve WASM'a alma burada, insan gözüyle yapılır.

  1. 0

    CLI için token al (bir kez)

    Hikotest paneli

    CLI'ın panele veri gönderebilmesi için bir kimlik gerekir. Panelde Proje → Ayarlar → "Refactor CLI (unitkit)" kartından "Token üret"e basarsın (admin yetkisi ister). Token yalnız o an gösterilir; güvenli bir yerde saklarsın. Bu token yalnızca veri gönderebilir, panel verini okuyamaz.

    Token'ı terminalinin ortam değişkenine koyarsın — işletim sistemine göre:

    terminal · ortam değişkenleri (bu oturum için)Terminal
    # macOS / Linux (zsh, bash)
    export HIKOTEST_TOKEN=BURAYA_TOKEN
    export HIKOTEST_URL=https://panel-adresiniz     # tam adres: Proje → Ayarlar kartında
    
    # Windows — PowerShell
    $env:HIKOTEST_TOKEN = "BURAYA_TOKEN"
    $env:HIKOTEST_URL = "https://panel-adresiniz"
    
    # Windows — Komut İstemi (cmd)
    set HIKOTEST_TOKEN=BURAYA_TOKEN
    set HIKOTEST_URL=https://panel-adresiniz

    Kalıcı istiyorsan macOS/Linux'ta bu satırları ~/.zshrc'ye ekle; Windows'ta setx HIKOTEST_TOKEN "..." (yeni terminal gerektirir). Değerleri unitkit.config.json'a da yazabilirsin (token'ı repoya commit etme).

    Proje → Ayarlar → "Refactor CLI (unitkit)" kartı → "Token üret".
  2. 1

    Fonksiyonun başına ve sonuna bir yorum ekle

    Senin tarafın · kendi cihazın

    Temizlemek istediğin fonksiyonu kendi editöründe iki yorum satırıyla sararsın. id, üç platformda birebir aynı yazılır ve o birimi birleştiren anahtardır. Kütüphane kurulmaz, derlemeye girmez, üretim binary'sine tek byte girmez — geri alması bir sed kadar kolay.

    src/pricing/discount.tsTypeScript
    // @unit id=pricing.discount.v1 owner=payments
    export function applyCampaign(total: number, code: string): number {
      if (code === "VIP30") return total * 0.7;
      return total;
    }
    // @unit-end
    Bu adımda panelde bir şey yapmazsın — işaretleme tamamen senin repondadır.
  3. 2

    Taramayı çalıştır — birimler panele düşer

    Senin tarafın · kendi cihazın

    CLI bir npm paketidir — kopyalanacak klasör yok; motor node_modules'ta yaşar, senin dosyaların (unitkit.config.json, adaptörler, vektörler) projende kalır. Paketi kurup init ile iskeleti atarsın; sonra kendi cihazında (terminal) tararsın. --offline ile önce ne gönderileceğini görürsün; bayraksız çalıştırınca panele yalnız descriptor gider: birim sınırı, içerik özeti (content_hash) ve metrikler. Kaynak kod gitmez.

    terminal · unitkit kur + scan (kendi cihazında)Terminal
    npm i -D ./hikotest-unitkit-0.7.0.tgz   # panelden indirdiğin tarball
    npx unitkit init                        # config + adapters + vectors iskeleti
    
    npx unitkit scan --offline              # önce: ne gönderilecek, gör
    npx unitkit scan                        # panele descriptor gönderir (kaynak DEĞİL)

    Parser'lar (TypeScript + Kotlin/Swift WASM) paketin içinde gömülü — ayrıca bir şey kurmana gerek yok, yalnız Node ≥ 18. Tarball'ı buradan indir (tam adım adım kurulum + indirme butonu: Proje → Ayarlar → "Refactor CLI (unitkit)" kartında). Registry'ye yayınlanınca: npm i -D @hikotest/unitkit.

    Proje → Refactor — Birimler listesinde birim marked olarak belirir (dosya, satır aralığı, metrikler görünür).
  4. 3

    Altın vektörleri belirle ve testi koştur

    Hikotest paneli

    Bir birimin "doğru" davranışı, girdi → beklenen çıktı çiftleriyle (altın vektör) tanımlanır. Elle YAML yazmazsın: panelde "AI vektör önerileri" kartında AI ilk taslağı üretir, sen düzeltip onaylarsın — onay birimi specd'ye ilerletir.

    pricing.discount.v1 · altın vektörlerYAML
    vectors:
      - name: "VIP30 indirimi uygulanır"
        in:  { total: 1000, code: "VIP30" }
        out: 700
      - name: "geçersiz kod → indirim yok"
        in:  { total: 1000, code: "XXX" }
        out: 1000

    Onayladığın vektörler kanonik olur: her platform aynı girdi/beklenen ile koşar ve CLI bunları koşumdan önce panelden otomatik çeker — geliştiricinin YAML dosyası kopyalamasına gerek yok (görmek için npx unitkit pull). Bu ortaklık şart: her geliştirici kendi out'unu yazsaydı "web string döner / android int döner" farkı gizlenirdi.

    Sonra Senin tarafın · kendi cihazın testi kendi cihazında koştururursun. Android/iOS için gerçek kotlinc/swiftc senin cihazında derler; panele yalnız geçti/kaldı düşer.

    terminal · unitkit testTerminal
    npx unitkit test --id pricing.discount.v1
    #  JS   ✓ 2/2     WASM   ✓ 2/2
    #  Kotlin ✓ 2/2   Swift  ✗ 1/2   ← burada sapma var
    Proje → Refactor → "AI vektör önerileri" kartında onay; koşu sonuçları birim satırında geçti/kaldı olarak görünür.
  5. 4

    Fark raporunu oku — asıl değer burada

    Hikotest paneli

    Panel üç platformun sonucunu yan yana bir fark matrisinde gösterir: hangi birim hangi platformda sapıyor. Bu adım sıfır token harcar (diferansiyel test, AI değil) ve çoğu ekibi ikna eden ilk somut çıktıdır.

    Refactor → Fark matrisi (temsilî)
    BirimJSWASMKotlinSwift
    pricing.discount.v1✗ ≠
    tax.calc.v2
    Swift, pricing.discount.v1 için farklı sonuç veriyor → incelenecek sapma.
    Proje → Refactor → "Fark matrisi" (sağ üstteki bağlantı).
  6. 5

    AI kanonik mantığı önerir, sen onaylarsın

    Hikotest paneli

    Sapmayı "bug" mu yoksa "bilinçli platform davranışı" mı diye kararlarsın. AI, maskelenmiş birim üzerinden doğru kanonik mantığı önerir; öneri otomatik doğrulama kapılarından geçer (derleniyor mu · altın vektörler geçiyor mu · mutasyon skoru düşmedi mi). Panelde "AI kod dönüşümü önerileri" kartında incelersin; onay birimi refactored'ye ilerletir. İnsan onayı hiçbir koşulda atlanmaz.

    Proje → Refactor → "AI kod dönüşümü önerileri" kartı → İncele → Onayla.
  7. 6

    Tek WASM'a indirge ve OTA ile dağıt

    Hikotest paneli

    Onaylanan birim tek kanonik WASM'a derlenip OTA ile üç platforma birden dağıtılır — buradan sonrası Hikotest'in bildiğin yayın hattıdır (semver, audit log, tek tıkla rollback). Birim shared durumuna geçer: artık üç ayrı kopya yok, tek kaynak var.

    Yayın ve rollback: normal Sürümler / Releases akışıyla aynı.
Birim yaşam döngüsü — ilerleme ölçülebilir
markeddescribedspecddiffedreconciledrefactoredshared

Panel her birimin bu döngüde nerede olduğunu gösterir. "400 birim var, 120'si reconciled, 40'ı shared" gibi net ölçüm — "kod temizliği" gibi belirsiz bir hedef değil.

0 · Token (panel)

Ayarlar → Refactor CLI kartı → token üret, terminalde ortam değişkenine koy.

1 · İşaretle (repo)

Fonksiyonu // @unit … // @unit-end ile sar.

2 · Tara (CI)

unitkit scan → birimler panele düşer, kaynak gitmez.

3 · Vektör + test (panel/CI)

AI vektör önerir, onayla; unitkit test her platformda koşar.

4 · Fark matrisi (panel)

Hangi platform sapıyor — sıfır token, ilk somut değer.

5-6 · Onay → WASM (panel)

AI önerisini onayla, doğrulama kapıları, tek WASM + OTA (shared).

Mimari

Kaynak gerçek her zaman Supabase

Panel + Supabase + GitHub üçlüsü. Ekranlar asla GitHub'a bağımlı değil; GitHub yalnızca derleme motoru.

Next.js Panelweb yönetimSupabasesource of truthGitHubderleme (build) yedekSDKAndroid · iOS · Webher şey Supabase'den yeniden üretilebilir

Supabase — source of truth

Tüm kod geçmişi, versiyonlar ve işlem kayıtları burada. Supabase çökmediği sürece her şey yeniden üretilebilir.

Tek sabit SDK

Her müşteri aynı SDK'yı kurar (npm / Gradle / SPM). Projeye özel paket yok — fark yalnızca OTA içeriğinden gelir.

Vendor lock-in yok

Ayrılmak istersen tüm versiyonlar export edilir, config'te repo bilgisi değişir — tek satır, sıfır veri kaybı.

app.hikotest.com
Hikotest komuta merkezi — projeler, sürümler ve sağlık metrikleri
Komuta merkezi: tüm projeler, sürümleri ve durumları tek ekranda.
Güvenlik

Token'lar asla client'a düşmez

GitHub token'ları ve Supabase service key yalnızca server-side kullanılır — hiçbir zaman client'a veya NEXT_PUBLIC_ değişkenine konmaz.

Özel repolar için SDK, token gerektiren istekleri backend üzerinden yapar; sır asla istemci paketine girmez.

Her değişiklik audit log'a düşer, test senaryolarından geçmeden yayınlanamaz. Kritik güncellemelerde OTA Kilidi ile otomatik güncelleme durdurulabilir — beklenmeyen bir yayın prod'u anında etkileyemez.

Token yalnızca server-sideclient'a asla düşmez
Yayınlama

Release ve tek tıkla rollback

Her release semver ile versiyonlanır. Bir sorun fark edilirse bir önceki sürüme tek tıkla dönülür — yeni store submission gerekmez.

v1.0v1.1v1.2rollback

Kontrollü yayın

Her sürüm audit log'a kaydedilir; SDK arka planda periyodik olarak yeni sürüm olup olmadığını kontrol eder.

Anında geri alma

Geleneksel store güncellemesinden çok daha hızlı bir "geri al" imkânı; hibrit/offline modda son bilinen iyi sürümle çalışmaya devam edilir.

Özet

Neden Hikotest?

Dürüst tablo: platformun güçlü yanları ve bilinçli sınırları.

Avantajlar

  • Store onayı beklemeden saniyeler içinde canlı güncelleme.
  • Tek kaynak, üç platformda birebir aynı iş mantığı.
  • Test + audit + rollback ile güvenli yayın döngüsü.
  • Vendor lock-in yok — verini istediğin an dışa aktar.
  • Brownfield sapmaları AI ile teşhis edip tekilleştir.

Dikkat edilecekler

  • Yalnızca saf iş mantığı için; UI/native kod kapsam dışı.
  • Analytics sayıları ve panel içi çoklu-motor önizlemesi MVP'de mock (gerçek native koşu CI'da).
  • Fonksiyonlar tipli bir sözleşmeyle yazılmalı.
  • İlk SDK / unitkit CLI entegrasyonu tek seferlik kurulum ister.
SSS

Sıkça sorulanlar

Uygulamamın tamamı mı WASM'a dönüşüyor?

Hayır. Sadece Hikotest'e taşıdığın fonksiyonlar (iş mantığı) WASM'a derlenir. UI, navigasyon ve native entegrasyonlar uygulamanda native kod olarak kalır.

Şirketimizin zaten 3 platformda ayrı kodu var, silip baştan mı yazacağız?

Hayır ve kimseye kod yapıştırmazsın. İlgili fonksiyonu kendi reponda // @unit yorumuyla işaretlersin, unitkit CLI'ı kendi cihazında koşturursun; panele yalnızca fark raporu (hangi platform sapıyor) düşer, ham kaynak repondan çıkmaz. Sıfırdan yazım değil, mevcut mantığın tekilleştirilmesi söz konusu.

OTA ile her an her şeyi değiştirebiliyorsam bu riskli değil mi?

Bu yüzden release/rollback ve OTA Kilidi var. Her değişiklik audit log'a düşer, testten geçmeden yayınlanamaz ve sorun anında bir önceki sürüme dönülür.

Sizden ayrılırsak kodumuzu kaybeder miyiz?

Hayır. Tüm versiyonlar Supabase'de tutulur ve tek seferde export edilir. SDK config'inde yalnızca hedef repo değişir — vendor lock-in yok.

Platform şu an tamamen canlıda mı?

Çekirdek akış (yaz → derle → test → yayınla → rollback) uçtan uca çalışıyor. Refactor/unitkit tarafında gerçek Kotlin/Swift native koşusu ve fark raporu da canlı — koşu senin cihazında yapılır. Analytics gibi bazı panel bölümleri kasıtlı mock; WASM imza zorunluluğu ise yol haritasında.

Hazır mısın?

Store onayı beklemeden, tek bir kaynaktan, her platformda aynı mantığı çalıştır.