Bu uygulamayı ikinci kez baştan yazdım.


<video src="/blog/zheno-screen-record.mp4" autoplay muted loop playsinline style="width:100%;border-radius:12px;margin-bottom:2rem;"
İlk versiyonu bir progressive web app idi. Next.js ve AI SDK ile multi-agent yapısı kurduğum bir sistemdi. Ekim ayından beri, yakından tanıdığım 15 aktif bisikletçi ve koşucu ile bu versiyonun beta testlerini de yaptım. Bu süre zarfında da oldukça öğrenim oldu ve deneyimi gün ve gün iyileştirdim.
Fakat bazı şeyleri düzeltmenin en iyi yolunun, rotayı en baştan doğru çizmek olduğuna karar verdim. Bu yüzden kontrolü tamamen elime aldım. Kendi kurduğum Hetzner VPS üzerinde yepyeni bir backend ve database mimarisi ayağa kaldırdım. İkinci versiyonda, eskisinin aksine tamamen Garmin ekosistemine odaklanmaya karar verdim. Hedef kitlem olan endurance sporcularının (koşu, bisiklet, yüzme) %90'ı Garmin kullanıyor. Uyku, antrenman ve dinlenme metriklerini doğrudan buradan alarak deneyimi bunun üzerine inşa etmek ilk aşamadaki hedefimdi.
Sadece Garmin API'ları ile de yetinmedim. Antrenman dosyalarını RAW data olarak indirip kendi decode ettiğim bir pipeline kurdum. Bu sayede antrenman bittikten sonra istediğim tüm detaylı veriyi AI'a besleyebiliyorum.
Claude Agent SDK: Bambaşka Bir Dünya
Veriyi yapay zekaya işleme noktasında da çok önemli bir değişikliğe gittim ve AI SDK yerine doğrudan Claude Agent SDK tercih ettim. Bunun temel sebebi şuydu: AI SDK her ne kadar iyi çalışsa da iş agentic tool calling noktasına geldiğinde istediğim verimi vermiyordu. Örneğin, "Son 1 aylık performansımı incele ve bilmem gereken en önemli şeyleri söyle" dediğimde, AI'ın hangi aracı nasıl çağıracağı ve ne tür bilgiler getireceği konusunda tıkanıklıklar olabiliyordu.
Claude Agent SDK ise bambaşka bir dünya; içerisindeki Read, Edit, Bash, Glob, Grep özellikleri sayesinde uygulamanızda yarattığınız AI agent resmen bir "Claude Code" gibi çalışabiliyor. Çok daha otonom ve akıllıca cevaplar üretebiliyor. Üstelik prompt caching ve adaptive thinking gibi özelliklerle gereksiz token harcamasının da önüne geçebiliyorsunuz. Tabii ki Claude en ucuz provider değil, fakat kendi SDK'sı ile geliştirildiğinde oldukça performanslı çalışıyor ve sanıldığı kadar pahalıya patlamıyor.
Swift: Cihazın Kontrolünü Tamamen Ele Almak
Frontend tarafında ise yine radikal bir tercih yapıp sadece iOS Native (Swift) ilerlemeye karar verdim. React Native yerine Swift tercih etmemin sebebi sadece Claude Code ile native kodlama merakım veya Apple Maps gibi bileşenleri kullanma isteğim değildi. Asıl amacım; cihazın donanım kontrolünü tamamen elime almak, maksimum verimliliğe ulaşmak ve uygulamanın her koşulda en yüksek performansla çalışacağından yüzde yüz emin olmaktı.
Peki Onat, sen ne anlatıyorsun?
Özetle şu: Geçen seneye kadar hayatım insan odaklı tasarım ve UX design ile sınırlıyken, Said ile tanışmam ve hayatıma Claude Code'un girmesiyle bambaşka bir yola girdim. Bence buradaki asıl konu "vibecoding" değil. Software engineering ve mimari temellerini öğrendikten, doğru dil ve stack kullanımlarını anladıktan sonra teknik olarak yapamayacağınız pek bir şey kalmıyor.
Evet, güvenlik katmanı kesinlikle düşünülmeli. Evet, uzun vadede performans değerlendirilmeli. Fakat ilk 1000 kullanıcıya ulaşacak ürünü artık rahatlıkla kendi kendinize inşa edebilirsiniz. Zaten 1000 kullanıcıya ulaştıktan sonra yatırım alıp mimari ve güvenlik gibi geliştirmeleri profesyonelce yapabilirsiniz.
Benim burada asıl kıymetli bulduğum şey, bu tarz kişisel projelerimle doğru multi-agent yapıların nasıl kurulacağı mimari bilgisini keşfetmek. Farklı AI SDK frameworkler deneyimlemek. Model farklılıklarını ve performanslarını gerçek veriler ile kullanım senaryolarında bizzat deneyimlemek. Memory katmanın nasıl etkili ve verimli inşa edileceğini deneme yanılmalarla keşfetmek.
Bu bilgiler hiç bir yerde yazmıyor, henüz kitapları ve öğreten kişileri bulunmuyor. Bunları ancak sizler deneme yanılmayla keşfedebilirsiniz. Veya gün be gün keşfedenlerden yararlanabilirsiniz.
Bu makale Mart 2026'da yazılmıştır. Yazarın kişisel görüşlerini yansıtmaktadır.

