İnşa Ettiğim Teknoloji Yığını
Her GörenLabs projesinin arkasındaki araçlara ve teknolojilere bir bakış — neden onları seçtiğim ve nasıl birlikte çalıştıkları.
Kaan Gören
Kurucu & Mühendis
İnsanlar bana hangi teknolojileri kullandığımı soruyor. Dürüst cevap şu: yığının kendisi, arkasındaki gerekçe kadar önemli değil. Yine de araçlar işi şekillendiriyor, o yüzden neye uzandığımı ve nedenini anlatayım.
Nuxt ve Vue
Her proje Nuxt ile başlar. Bana sunucu tarafında render, dosya tabanlı yönlendirme ve bir açılış sayfasından tam kapsamlı bir uygulamaya kadar ölçeklenen bir bileşen modeli sunuyor. Altındaki Vue temiz ve öngörülebilir — framework'le hiç boğuşmuyorum.
Nuxt, eskiden ayrı araçlar gerektiren işleri de üstleniyor: SEO meta verileri, görsel optimizasyonu, içerik yönetimi, çoklu dil desteği. Modül ekosistemi o kadar güçlü ki altyapıyı sıfırdan kurmam neredeyse hiç gerekmiyor.
TypeScript
Her şeyi tipliyorum. Sebep konfigürasyondan keyif almam değil; TypeScript, gecenin üçünde fark edeceğim hataları daha baştan yakalıyor. Ayrıca kodu kendini belgeler hâle getiriyor: aylar sonra bir projeye döndüğümde, tipler bana ilk niyetin ne olduğunu anlatıyor.
Tailwind CSS
Stil için Tailwind kullanıyorum. Tasarım sistemini markup içinde görünür tutuyor ve tasarım niyetiyle uygulama arasında sapma oluşmasını engelliyor. Her boşluk değeri, renk ve yazı boyutu ortak bir yapılandırmada yaşadığında, tutarlılık ummaya değil, kendiliğinden gerçekleşen bir şeye dönüşüyor.
Hassas animasyon kontrolü ya da karmaşık bir yerleşim gerektiğinde özel CSS hâlâ devreye giriyor. Ama temel her zaman Tailwind.
GSAP
Hareket konusunda standardım GSAP. ScrollTrigger, kaydırmaya bağlı görünme efektlerini yönetiyor; timeline API'si ise sıralı animasyonlarda kare düzeyinde kontrol sağlıyor. Ekranda onlarca animasyonlu öğe olsa bile performans düşmüyor.
Hareketi süslemek için değil, yapıyı netleştirmek için kullanıyorum. Zamanlaması doğru bir giriş animasyonu kullanıcıya nereye bakması gerektiğini gösterir. Yumuşak bir geçiş, mekânsal yönelimi korur. Amaçsız animasyon dikkat dağıtmaktan başka bir işe yaramaz.
Convex
Bir proje backend gerektirdiğinde Convex'e yöneliyorum. Bana tek bir platformda reaktif bir veritabanı, sunucu fonksiyonları, kimlik doğrulama ve dosya depolama sunuyor. Veri modeli TypeScript-native olduğu için tipler veritabanından bileşene kadar herhangi bir çeviri katmanına takılmadan akıyor.
Convex'i farklı kılan şey, varsayılan olarak gerçek zamanlı çalışması: altta yatan veri değiştiğinde sorgular kendini otomatik günceller. Bu da state management sorunlarının koca bir kategorisini ortadan kaldırıp istemci tarafını sade tutuyor.
Bun
Bun, benim için Node'un yerini aldı: daha hızlı kurulum, daha hızlı script çalıştırma, daha hızlı dev sunucu başlangıcı. Fark her projede, her gün hissediliyor — üstelik kod tabanında hiçbir değişiklik yapmadan aynı JavaScript ve TypeScript'i çalıştırıyor.
Dağıtım
Kendi yürüttüğüm projelerde, kendi altyapımda Coolify üzerinden dağıtım yapıyorum. Bana Docker tabanlı dağıtımları sade bir arayüzle, otomatik SSL ile ve ortam üzerinde tam kontrolle sunuyor. Main'e push atıyorum, Coolify derleyip yayınlıyor. Ne tedarikçiye bağımlılık var, ne sürpriz fatura.
Müşteri projelerinde dağıtım hedefi onların ihtiyacına göre değişiyor. Ama ilke aynı kalıyor: sade pipeline'lar, elle yapılan adım yok, dağıtım kaygısı yok.
Bu kombinasyonun nedeni
Bu araçların ortak bir özelliği var: yolun üstünde durmuyorlar. Her biri belirli bir sorunu iyi çözüyor, bu sırada yeni sorunlar yaratmıyor. Bir yığın seçerken önem taşıyan tek ölçüt bu.
Sonuçta zamanımı araçlarla değil, ürünle geçirdiğim bir iş akışı ortaya çıkıyor. Bir müşteri nihai sonucu gördüğünde, arkasındaki karmaşıklığı değil, deneyimdeki ustalığı hissetmeli.