Uzmanlık
JavaScript ve TypeScript geliştiricisi — web'i ve mobili aynı API'den besliyorum
Aynı özelliği Laravel API, web arayüzü ve React Native uygulaması olarak üç katmanda birden teslim ettiğimde, işin zor kısmının kod değil sözleşme olduğunu gördüm.
- Başlangıç
- 2008 Başlangıç
- yıl
- 18 yıl
- yazı
- 39 yazı
- proje
- 6 proje
JavaScript & TypeScript ekosisteminde ben
Bu ekosistemdeki kimliğim tek cümleyle şu: ürünün arka ucunu yazan ve o ürünün web ile mobil yüzeyini aynı sözleşmeye oturtan kişi. Tasarım sistemi kurmuyorum; API ile konuşan arayüzü kuruyorum. JavaScript ve TypeScript bu sayfada bir tercih değil, ürünün kullanıcıya değdiği katmanın dili.
Arayüz mimarisinin sistem tarafına değen kısımlarını — sunucu tarafında render kararları, önbellek stratejisi — sade.dev tarafında yazıyorum.
Bu ekosistemde ne teslim ediyorum
Ortak noktaları hepsinin aynı sözleşmeye bağlanması; tasarım sistemi kurmuyorum, API ile konuşan arayüzü kuruyorum.
-
Üç katman, tek sözleşme
Aynı özellik REST API, web arayüzü ve mobil uygulama olarak birden çıkıyor. Ayrımı katı tutuyorum: web ile mobil birbiriyle hiç konuşmuyor, yalnızca ortak API üzerinden haberleşiyor.
-
Mobil istemci
React Native ve Expo ile aynı ürünün iOS ve Android karşılığı. Mağazaya gönderme süreci de bu işin parçası.
-
Tip katmanı
TypeScript API'den arayüze tek sözleşme taşıyor. Sözleşmeyi iki uçta ayrı ayrı yazmak, sözleşmenin olmaması demek.
-
Derleme ve stil hattı
Geliştirme sunucusunu saniyelere indiren derleme hattı ve utility-first stil katmanı. Araç zinciri değişiyor, bu iki katmanın işi aynı kalıyor.
Zor kısım kod değil, sözleşme
Arayüz tarafında karşılaştığım hataların çoğu arayüz hatası gibi görünüp sözleşme hatası çıkıyor. Bir alanın adı, bir tarihin biçimi ya da bir hata kodunun anlamı katmanlar arasında ayrıştığında sonuç, hepsi ayrı görünen ama aynı kökten gelen bir hata kümesi oluyor. Bu yüzden işe arayüzün nasıl görüneceğinden değil, arka ucun ne söz verdiğinden başlıyorum.
Tek bir kütüphaneye bağlı değilim
Üçü de aynı sorunun farklı cevabı; hangisinin açılacağına ürünün ihtiyacı karar veriyor.
-
Vue tarafı
Uzun süre burada çalıştım: bileşen tabanlı arayüz mimarisi, yönlendirme ve durum yönetimi. Kaybolmuş bir yatırım değil — iki yaklaşımı karşılaştırabildiğim yer orası.
-
React tarafı
Ağırlık merkezinin buraya kayması mobil ihtiyaçla oldu; aynı zihinsel modelin web ve mobilde birlikte durması işleri kolaylaştırdı.
-
Sunucu tarafı framework'ten çıkan arayüz
Modern bir arayüzü sunucu tarafı framework'ün içinden çıkaran ve tarayıcıya inen kodu azaltan yaklaşımlar.
Bir aracı neye göre değiştiriyorum
Bu ekosistemde en uzun süredir izlediğim şey araçların değişmesi — jQuery ile AJAX'tan Gulp'a, Webpack'e, Vite'a. Karar her seferinde aynı sıradan geçti.
- 01 Ödenen bedel her zaman yapılandırma
- Her geçişte ödediğim şey aynıydı: yapılandırma. Aracın kendisi değil, onu çalışır hâle getiren ayar yükü pahalı olan.
- 02 Geri dönüş bedelden büyük olmalı
- Yeni bir aracı, ödediğim yapılandırma bedelinden fazlasını geri veriyorsa alıyorum. Vermiyorsa eski araç yerinde kalıyor.
- 03 "Daha modern" bir gerekçe değil
- Aracın yaşı bir ölçü değil. Ölçü, o aracın bu üründe hangi somut işi ucuzlattığı.
- 04 Build süresi de bir kalem
- Aynı ölçüyü derleyici tarafında da uyguluyorum: build süresi bir maliyet kalemi, bir ayrıntı değil.
Mobil tarafta kendi kurallarını dayatanlar
Web'deki React deneyiminin transfer olacağı beklentim kısmen doğru çıktı: bileşen düşüncesi aynı, geri kalanı değil.
-
Gezinme mimarisi
Ekran mimarisiyle birlikte kurulan gezinme; web'deki router alışkanlığı buraya olduğu gibi taşınmıyor.
-
Liste render performansı
Uzun listelerde render performansı, mobil tarafta ayrı ayrı üzerinde çalıştığım başlıklardan biri.
-
OTA ile sürüm yönetimi
Güncellemenin mağaza turuna girmeden dağıtılabilmesi, sürüm yönetimini kendi başına bir konu hâline getiriyor.
-
Mağaza teslimi
Gönderim sürecinin kendisi de bu işin parçası — ve uygulamanın kodundan bağımsız bir zanaat.
Neyi yapmıyorum
Erişilebilirlik denetimi, tasarım sistemi kurma ve ileri düzey animasyon işleri benim uzmanlık alanım değil; bunu söylemem gerektiğinde söylüyorum. Arayüz mimarisinin sistem tarafına değen kısımlarını — SSR kararları, önbellek stratejisi — yazdığım yer ise sade.dev.
Bu alandaki son yazılar
TypeScript'in yeni derleyicisi ve build hızının önemi
TypeScript derleyicisinin Go'ya port edilmesi ve hızlı geri bildirim döngüsünün bir geliştirici için neden bu kadar değerli olduğu.
Tek mimari kuralı, üç dil: archlint artık Go + TypeScript + Python
Polyglot bir repoda 'domain altyapıyı import etmesin' kuralı her dilde aynı; değişen, import'un nasıl çözüldüğü. archlint'e TypeScript ve Python ekledim — tek architecture.json üç dilin sınırlarını CI'da zorluyor.
Bir özelliği fikirden üç platforma: uçtan uca akışım
Bir özelliği API, web ve mobilde aynı anda teslim ettiğimde izlediğim olgunlaşmış, tekrarlanabilir süreci anlatıyorum.
Bu alanda geliştirdiklerim
Garajdaş: model-özelinde topluluk, forumun dağınıklığı olmadan
Her araç marka-modelinin kendi kulübü olduğu, ICE ile EV'yi aynı çatıda tutan Reddit-benzeri topluluk platformu; API, web ve mobil paralel yürüyor.
Şu an ne yapıyor
Her araç marka-modelinin kendi kulübü olduğu topluluk platformu; kimlik, içerik, bildirim ve moderasyon akışları tek şemalı API üzerinde yürüyor, web ve mobil istemciler aynı şemayı paylaşıyor. Aracının modeline özel bir topluluk arayan kullanıcı bugün katılabilir.
Swipenor: skoru istemci hesaplarsa sunucu neye güvenir?
Kaydırmalı doğru/yanlış bilgi yarışması; asıl mesele oyun değil, istemcinin ürettiği skoru imzayla doğrulanabilir kılmak.
Şu an ne yapıyor
Kaydırmalı doğru/yanlış bilgi yarışması bir mobil uygulama olarak çekirdek döngüsüyle uçtan uca çalışıyor; skoru istemci üretse de server_nonce ve HMAC imzasıyla sunucu tarafında doğrulanıyor. swipenor.com uygulamanın tanıtım sayfasıdır, oyunun kendisi değil.
Devrazzi: geliştirici haberini model katmanlarına eletmek
Yazılım ve AI haberini yerel Ollama ile eleyip üst katmanlarda büyük modellere devreden, TR/EN sentezini uçtan uca üretip yayınlayan içerik hattı.
Şu an ne yapıyor
Yazılım ve AI haberini yerel Ollama ile eleyip üst katmanlarda büyük modellere devrediyor, TR/EN sentezi kendi üretip yayınlıyor; web ve App Store sürümü canlı. Günlük geliştirici haberini tek akıştan takip etmek isteyen okuyabilir.
Bu alanda üretime çıkan işler
Parantaj
Devam ediyorOwner
Kişisel ve kurumsal finansal yönetim platformu. Gelir-gider takibi, bütçe planlama, detaylı raporlama ve çoklu hesap yönetimi sunar.
Looplio
Devam ediyorOwner
Looplio — tekrar eden işleri, bakımları ve kontrolleri yeniden kullanılabilir şablonlar ve otomatik oluşturulan checklist'ler hâline getiren periyodik otomasyon platformu (Web + iOS + Android).
sakinkal
Devam ediyorFounder & Editor
sakinkal, Türkiye'de kriz hazırlığını korkudan ve abartıdan arındıran; rasyonel, kanıta dayalı ve çevrimdışı erişilebilir bir hazırlık kaynağıdır. Karmaşık bilgiyi herkesin uygulayabileceği net adımlara, kontrol listelerine ve rehberlere indirger. 'Panik yok, hazırlık var.' — kâr amacı gütmeyen, reklamsız, misyon odaklı bir yayın.
Birlikte kullandığım teknolojiler
-
TypeScript
API'den arayüze tek sözleşme taşıyan tip katmanı.
-
React
Bileşen tarafı.
-
React Native
Aynı ürünün iOS ve Android karşılığı.
-
Expo
Derleme, mağaza teslimi ve OTA güncelleme.
-
Vite
Geliştirme sunucusunu saniyelere indiren derleme hattı.
-
Tailwind CSS
Utility-first stil katmanı.
-
Node.js
Araç zincirinin çalıştığı yer.
Sık sorulanlar
7 soru
-
JavaScript'i kaç yıldır yazıyorsun?
2008'den bu yana, 18 yıldır — PHP ile aynı yıl. İkisi aynı işin iki yüzüydü: sunucuda PHP, tarayıcıda önce jQuery, sonra Vue ve React.
-
Frontend geliştirici misin?
Tam olarak değil. Ben ürünün arka ucunu yazan ve o ürünün web ile mobil yüzeyini de aynı sözleşmeye oturtan taraftayım. Tasarım sistemini sıfırdan kuran kişi değilim; API'yle konuşan arayüzü kuran kişiyim.
-
Vue mu React mi?
İkisini de yazdım. Vue tarafında bileşen mimarisi, router ve durum yönetimi (Vuex, sonra Pinia) üzerine; React tarafında hooks, concurrent render ve React 19 ile gelen form actions üzerine yazdım. Bugün mobil işler React Native'i zorunlu kıldığı için ağırlık React tarafında.
-
Mobil uygulama da yapıyor musun?
Evet, React Native ve Expo ile. Kayıtlı projelerden ikisinin mobil istemcisi böyle yazıldı; biri App Store ve Google Play'de yayında. OTA güncelleme, gezinme mimarisi ve liste render performansı üzerine ayrı yazılarım var.
-
TypeScript kullanıyor musun?
Evet, ve gerekçesi tek bir yerde toplanıyor: API'den arayüze uçtan uca tip güvenliği. Sözleşmeyi iki uçta ayrı ayrı yazmak, sözleşmenin olmaması demek.
-
Bu alanda kaç yazın var?
Bu sitede JavaScript ekosistemi etiketli 39 yazı ve 6 proje kayıtlı; en eskisi jQuery ile AJAX, en yenisi TypeScript'in yeni derleyicisi.
-
Araç zinciri sürekli değişmiyor mu?
Değişiyor ve ben de o zinciri Gulp'tan Webpack'e, Webpack'ten Vite'a taşıdım. Ama her geçişte ödediğim şey aynıydı: yapılandırma. Bir aracın yerine yenisini koymak, ancak ödediğiniz yapılandırma bedelinden fazlasını geri veriyorsa doğru karar.
Birlikte çalışalım
Bu ekosistemde bir işiniz varsa, ne yaptığınızı anlatın; nasıl kurulacağını konuşalım.