Günlük notu
İnşa Ettiğim Teknoloji Yığını
Her GörenLabs projesinin arkasındaki araçlara ve teknolojilere bir bakış. Neden onları seçtim ve nasıl birlikte çalışıyorlar.
İnşa ettiğim teknoloji yığını
İnsanlar bana hangi teknolojileri kullandığımı soruyor. Dürüst cevap, yığının arkasındaki mantığın kendisinden daha az önemli olduğu. Ama araçlar yine de işi şekillendiriyor, bu yüzden neye uzandığım ve neden burada.
Nuxt ve Vue
Her proje Nuxt ile başlıyor. Bana sunucu tarafı render, dosya tabanlı yönlendirme ve bir açılış sayfasından tam bir uygulamaya kadar ölçeklenen bir bileşen modeli veriyor. Altındaki Vue temiz ve öngörülebilir. Framework ile asla savaşmıyorum.
Nuxt ayrıca eskiden ayrı araçlar gerektiren kısımları da hallediyor: SEO meta, görsel optimizasyonu, içerik yönetimi, uluslararasılaştırma. Modül ekosistemi yeterince güçlü ki altyapıyı sıfırdan inşa etmem nadiren gerekiyor.
TypeScript
Her şey tipli. Yapılandırmadan keyif aldığım için değil, TypeScript'in gece saat üçte bulacağım hataları yakalaması yüzünden. Ayrıca kodu kendi kendini belgeleyen hale getiriyor. Aylar sonra bir projeyi tekrar ziyaret ettiğimde, tipler bana orijinal niyetin ne olduğunu söylüyor.
Tailwind CSS
Stil için Tailwind kullanıyorum. Tasarım sistemini işaretlemede görünür tutuyor ve tasarım niyeti ile uygulama arasındaki sapmayı ortadan kaldırıyor. Her boşluk değeri, renk ve yazı tipi boyutu paylaşılan bir yapılandırmada yaşadığında, tutarlılık hırs yerine otomatik hale geliyor.
Özel CSS, hassas animasyon kontrolü veya karmaşık düzen davranışına ihtiyaç duyduğumda hâlâ görünüyor. Ama temel her zaman Tailwind.
GSAP
Hareket için GSAP standart. ScrollTrigger kaydırma tabanlı açılışları yönetiyor. Timeline API'si sıralı animasyonlar üzerinde kare düzeyinde kontrol sağlıyor. Ekranda düzinelerce animasyonlu öğe olsa bile performans sağlam kalıyor.
Hareketi yapıyı netleştirmek için kullanıyorum, süslemek için değil. İyi zamanlanmış bir giriş, kullanıcıya nereye bakacağını söyler. Yumuşak bir geçiş mekânsal yönelimi korur. Amacı olmayan animasyon sadece dikkat dağıtıcıdır.
Convex
Bir proje backend'e ihtiyaç duyduğunda Convex'e uzanıyorum. Bana reaktif bir veritabanı, sunucu fonksiyonları, kimlik doğrulama ve dosya depolama tek bir platformda veriyor. Veri modeli TypeScript-native, bu yüzden tipler veritabanından bileşene kadar herhangi bir çeviri katmanı olmadan akıyor.
Convex'i farklı kılan varsayılan olarak gerçek zamanlı olması. Sorgular, altta yatan veriler değiştiğinde otomatik olarak güncellenir. Bu, state management sorunlarının tüm bir kategorisini ortadan kaldırıyor ve istemciyi basit tutuyor.
Bun
Bun benim için Node'un yerini aldı. Daha hızlı kurulumlar, daha hızlı scriptler, daha hızlı dev sunucu başlatmaları. Fark her projede, her gün hissediliyor. Kod tabanında değişiklik gerektirmeden aynı JavaScript ve TypeScript'i çalıştırıyor.
Dağıtım
Kendim yönettiğim projeler için kendi altyapımda Coolify üzerinden dağıtım yapıyorum. Bana temiz bir arayüz, otomatik SSL ve ortam üzerinde tam kontrol ile Docker tabanlı dağıtımlar veriyor. Main'e push et, Coolify derler ve dağıtır. Satıcı bağımlılığı yok, sürpriz faturalar yok.
Müşteri projeleri için dağıtım hedefi onların ihtiyaçlarına bağlı. Ama prensip aynı kalıyor: basit pipeline'lar, manuel adımlar yok, dağıtım kaygısı yok.
Neden bu kombinasyon
Bu araçlar ortak bir özelliği paylaşıyor: yoldan çekiliyorlar. Her biri belirli bir sorunu iyi çözüyor ve süreçte yeni sorunlar yaratmıyor. Bir yığın seçerken önemli olan tek kriter bu.
Sonuç, zamanımı araçlara değil ürüne harcadığım bir iş akışı. Bir müşteri nihai sonucu gördüğünde, arkasındaki karmaşıklığı değil, deneyimdeki ustalığı hissetmeli.