İş 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.
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.
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.
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
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
Çalışma alanı: solda test senaryoları, ortada editör, sağda simülasyon sonuçları. - 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
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
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) // 118app.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.
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.
Ş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
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
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
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 ve sapma noktası. - 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.
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.
- 0
CLI için token al (bir kez)
Hikotest paneliCLI'ı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". - 1
Fonksiyonun başına ve sonuna bir yorum ekle
Senin tarafın · kendi cihazınTemizlemek 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-endBu adımda panelde bir şey yapmazsın — işaretleme tamamen senin repondadır. - 2
Taramayı çalıştır — birimler panele düşer
Senin tarafın · kendi cihazınCLI 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)Terminalnpm 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). - 3
Altın vektörleri belirle ve testi koştur
Hikotest paneliBir 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örlerYAMLvectors: - name: "VIP30 indirimi uygulanır" in: { total: 1000, code: "VIP30" } out: 700 - name: "geçersiz kod → indirim yok" in: { total: 1000, code: "XXX" } out: 1000Onayladığı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 testTerminalnpx 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. - 4
Fark raporunu oku — asıl değer burada
Hikotest paneliPanel üç 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î)Birim JS WASM Kotlin Swift 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ı). - 5
AI kanonik mantığı önerir, sen onaylarsın
Hikotest paneliSapmayı "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. - 6
Tek WASM'a indirge ve OTA ile dağıt
Hikotest paneliOnaylanan 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ı.
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).
Kaynak gerçek her zaman Supabase
Panel + Supabase + GitHub üçlüsü. Ekranlar asla GitHub'a bağımlı değil; GitHub yalnızca derleme motoru.
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ı.

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.
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.
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.
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.
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.