Kullandığım Teknolojiler
Bu sayfa, blogun arkasında çalışan her parçanın kısa bir sözlüğü. Her teknoloji için aynı beş soruyu cevaplıyorum: Nedir? Bizde ne yapıyor? Genelde ne için kullanılır? Hangi projelere uygun? Neden seçtim?
Yeni bir araç ekledikçe bu sayfa da büyüyecek.
Önce büyük resim
Bir ziyaretçi siteye girdiğinde olan şey kabaca şu:
- Cloudflare,
idrishanlabs.comadresini en yakın veri merkezine yönlendirir. - Orada Astro’nun önceden hazırladığı sayfa hazır bekliyor; ziyaretçiye hemen verilir.
- Sayfanın altındaki yorum bölümü, tarayıcıdan Hono ile yazılmış API’me istek atar.
- API, Drizzle aracılığıyla Neon’daki PostgreSQL veritabanından yorumları alır ve geri verir.
Yazı yayınladığımda ise: yazıyı Markdown ile yazarım, küçük bir programla veritabanına aktarırım, Git ile GitHub’a gönderirim, Cloudflare siteyi yeniden hazırlar.
Kod ve çalışma düzeni
Git ve GitHub
Nedir? Git, bir projedeki her değişikliğin fotoğrafını çekip saklayan bir sistem. GitHub ise bu fotoğrafların internette durduğu yer.
Bizde ne yapıyor? Blogun ve API’nin bütün geçmişini tutuyor. Bir şey bozulursa eski bir hale tek komutla dönebiliyorum. GitHub’a her gönderimde Cloudflare siteyi otomatik yeniden hazırlıyor.
Genelde ne için kullanılır? Neredeyse her yazılım projesinde. Ekiplerin aynı kod üzerinde birbirini ezmeden çalışmasını sağlıyor.
Hangi projelere uygun? Tek satırlık betikten milyonlarca satırlık sisteme kadar, kodu olan her şeye.
Neden seçtim? Seçim değil, sektör standardı. Ayrıca “dal” (branch) özelliği sayesinde yarım işi ana koddan ayrı tutabiliyorum; yorum bölümünü bu şekilde bitmeden canlıya karışmasın diye ayrı bekletmiştim.
Claude Code
Nedir? Terminalde çalışan, kod yazan ve projeyi okuyabilen bir yapay zekâ asistanı.
Bizde ne yapıyor? Kodu o yazıyor. Ben ne istediğimi anlatıyorum, planını okuyup onaylıyorum, sonuçları denetliyorum.
Genelde ne için kullanılır? Yazılımcıların tekrarlayan işleri hızlandırması, büyük kod tabanlarında gezinmesi ve hataları ayıklaması için.
Hangi projelere uygun? Kodu olan her projeye; özellikle tek kişinin büyük iş çıkarması gereken durumlara.
Neden seçtim? Bu blogun amacı kod yazmayı değil, sistem tasarlamayı ve denetlemeyi öğrenmek. Claude Code kodu yazarken ben “neden böyle?” sorusuna odaklanabiliyorum.
Node.js ve npm
Nedir? Node.js, JavaScript’i tarayıcı dışında, bilgisayarda çalıştıran bir ortam. npm ise başkalarının yazdığı hazır kod paketlerini indirip kuran bir araç.
Bizde ne yapıyor? Siteyi derlemek, yazıları veritabanına aktaran programı çalıştırmak ve paketleri (Astro, Drizzle, GSAP gibi) kurmak.
Genelde ne için kullanılır? Web sunucuları, komut satırı araçları ve neredeyse bütün modern web projelerinin geliştirme ortamı.
Hangi projelere uygun? JavaScript/TypeScript ile yazılan her şeye.
Neden seçtim? Kullandığım araçların hepsi bunun üzerinde çalışıyor; ayrı bir seçim değil, zemin.
Site (ziyaretçinin gördüğü kısım)
Astro
Nedir? Yazıları ve sayfaları önceden hazırlayıp düz HTML dosyalarına çeviren bir site üretici.
Bizde ne yapıyor? Her yayında, yazıları API’den çekip bütün sayfaları bir kerede hazırlıyor. Ziyaretçi geldiğinde hiçbir şey hesaplanmıyor; hazır sayfa direkt veriliyor.
Genelde ne için kullanılır? Bloglar, dokümantasyon siteleri, tanıtım sayfaları; yani içeriği ağırlıklı, sık değişmeyen siteler.
Hangi projelere uygun? Hızın önemli olduğu, içeriğin çok sık değişmediği projeler. Her saniye değişen bir borsa ekranı için uygun değil; bir blog için ideal.
Neden seçtim? Hazır sayfalar çok hızlı açılır ve neredeyse hiç sunucu maliyeti yoktur. Ayrıca ihtiyaç olduğunda sayfanın sadece bir parçasını canlı yapabiliyorum (yorum bölümü gibi).
Markdown
Nedir? Düz metne birkaç işaret ekleyerek biçimlendirme yapmanı sağlayan sade bir yazım dili. ## Başlık yazınca başlık, **kalın** yazınca kalın olur.
Bizde ne yapıyor? Bütün yazılarımı bununla yazıyorum.
Genelde ne için kullanılır? Dokümantasyon, notlar, bloglar, GitHub’daki açıklama dosyaları.
Hangi projelere uygun? Metnin ağır bastığı her yere.
Neden seçtim? Yazarken biçimle uğraşmıyorum, sadece yazıyorum. Tek dikkat: satır başında “5. “ gibi bir ifade numaralı liste sanılıyor; bunu zor yoldan öğrendim.
GSAP ve ScrollTrigger
Nedir? Web sayfalarında animasyon yapmayı sağlayan bir araç. ScrollTrigger eklentisi, animasyonları sayfanın kaydırılmasına bağlıyor.
Bizde ne yapıyor? Kaydırdıkça çizilen bakır devre hattı, yazıların alttan süzülerek gelmesi ve açılıştaki “devreye güç verme” animasyonu.
Genelde ne için kullanılır? Ödüllü tanıtım siteleri, ürün lansmanları, etkileşimli hikâye anlatımı.
Hangi projelere uygun? Görsel deneyimin önemli olduğu projeler. Ağır kullanılırsa okumayı zorlaştırır; ölçülü olmak gerekiyor.
Neden seçtim? Aynı efektleri elle yazmak mümkün ama çok daha zor ve daha az akıcı. Hareket istemeyen ziyaretçiler için tamamen kapanıyor.
Lenis
Nedir? Sayfa kaydırmasını yumuşatan çok küçük bir araç.
Bizde ne yapıyor? Fare tekerleğini çevirince sayfanın sıçramak yerine yumuşak bir ivmeyle kaymasını sağlıyor.
Genelde ne için kullanılır? Animasyonlu sitelerde akıcı kaydırma hissi için.
Hangi projelere uygun? Görselliğin öne çıktığı sitelere.
Neden seçtim? Çok küçük, etkisi büyük. “Kaliteli site” hissinin önemli bir kısmı bundan geliyor.
Arka uç (görünmeyen kısım)
Cloudflare Workers ve Wrangler
Nedir? Workers, kodunu dünya çapında yüzlerce veri merkezinde aynı anda çalıştıran bir hizmet. Wrangler ise bu koda komut satırından ayar verip yayınlamayı sağlayan araç.
Bizde ne yapıyor? İki şey: hem blogun hazır sayfalarını dünyaya dağıtıyor, hem de API’mi çalıştırıyor. İkisi aynı platformda ama birbirinden bağımsız.
Genelde ne için kullanılır? Hızlı API’ler, web siteleri, yönlendirme kuralları, ziyaretçiye en yakın noktada çalışması gereken her türlü küçük program.
Hangi projelere uygun? Dünyanın her yerinden hızlı erişilmesi gereken, kısa süreli işler yapan programlar. Saatlerce süren ağır hesaplamalar için uygun değil.
Neden seçtim? Ücretsiz katmanı kişisel bir proje için fazlasıyla yeterli. Kod “uyanmayı beklemeden” anında çalışıyor. Ayrıca alan adımı da zaten Cloudflare yönetiyor.
Hono
Nedir? API yazmayı kolaylaştıran hafif bir araç (framework).
Bizde ne yapıyor? API’ye gelen her isteği karşılayıp doğru işleve yönlendiriyor. Fırın benzetmesiyle: açık mutfağın kapısında duran ve siparişi okuyup doğru tarife yönlendiren kişi. Tarayıcılara verilen izinleri (CORS) de o yönetiyor.
Genelde ne için kullanılır? Hafif ve hızlı API’ler, özellikle Cloudflare Workers gibi ortamlarda.
Hangi projelere uygun? Küçük ve orta ölçekli API’ler. Çok büyük kurumsal sistemlerde daha kapsamlı araçlar tercih edilebiliyor.
Neden seçtim? Workers’ta doğal olarak çalışıyor, çok küçük ve öğrenmesi kolay.
Veri
PostgreSQL
Nedir? Dünyanın en çok kullanılan veritabanı sistemlerinden biri. Veriyi birbiriyle ilişkili tablolarda tutuyor.
Bizde ne yapıyor? Yazıları ve yorumları saklıyor. Her yorumun bir yazıya ait olduğunu kendisi denetliyor: olmayan bir yazıya yorum eklenemiyor.
Genelde ne için kullanılır? Bankacılıktan e-ticarete, verinin tutarlı olması gereken neredeyse her ciddi uygulamada.
Hangi projelere uygun? Verilerin birbiriyle ilişkili olduğu projeler (bir kullanıcının siparişleri, bir yazının yorumları gibi).
Neden seçtim? Standart, güvenilir ve ileride kullanacağım yapay zekâ özelliklerini (pgvector) aynı veritabanının içinde destekliyor.
Neon
Nedir? PostgreSQL’i “kullandığın kadar öde” mantığıyla sunan bir hizmet. Kullanılmadığında kendini uyutuyor.
Bizde ne yapıyor? Veritabanımın yaşadığı yer.
Genelde ne için kullanılır? Sunucusuz uygulamalar, prototipler, trafiği dalgalı projeler.
Hangi projelere uygun? Sürekli açık bir veritabanı sunucusu işletmek istemeyen projeler. Veritabanının “dal” kopyasını çıkarabildiği için deneme ile gerçek veriyi ayırmak da kolay.
Neden seçtim? Ücretsiz katmanı yeterli, kurulum gerektirmiyor ve Cloudflare Workers ile iyi anlaşıyor.
Drizzle ORM
Nedir? Kodumla veritabanının dili (SQL) arasında çeviri yapan bir araç.
Bizde ne yapıyor? API “yayınlanmış yazıları getir” dediğinde bunu SQL’e çeviriyor. Tabloların yapısını da kodda tanımlamamı ve veritabanına göndermemi sağlıyor (drizzle-kit).
Genelde ne için kullanılır? Veritabanıyla konuşan her TypeScript projesinde.
Hangi projelere uygun? Veritabanı yapısının kodda düzenli tutulmasının önemli olduğu projeler.
Neden seçtim? Hafif, Workers’ta çalışıyor ve yaptığı şey gizli değil: ürettiği SQL’e bakıp ne olduğunu anlayabiliyorum.
Altyapı
Cloudflare (DNS) ve Namecheap
Nedir? Namecheap, idrishanlabs.com alan adını satın aldığım yer. Cloudflare ise o adın hangi sunucuyu göstereceğini yöneten “telefon rehberi” (DNS).
Bizde ne yapıyor? Adresi siteye bağlıyor, güvenli bağlantı (kilit işareti) sağlıyor.
Genelde ne için kullanılır? Her internet sitesinde, adresle sunucuyu buluşturmak için.
Neden seçtim? Site zaten Cloudflare’de olduğu için rehberi de orada tutmak en sade çözümdü.
Henüz kullanmadıklarım (sırada olanlar)
- Sentry ve PostHog: Sitede bir şey bozulduğunda haber veren ve ziyaretçilerin siteyi nasıl kullandığını gösteren araçlar. Aşama 3: sistemi gözlemlemek.
- OpenTelemetry: Bir isteğin sistem içindeki her adımını kaydeden “kara kutu”. Aşama 3.
- CI/CD: Her kod değişikliğini otomatik test edip kontrol eden üretim bandı. Aşama 4.
- pgvector ve LangChain: Yazılarımda anlam bazlı arama ve “blogla sohbet et” özelliği için. Aşama 5: siteye yapay zekâ eklemek.
Hedefim ne?
Ben bir elektrik-elektronik mühendisiyim ve kod yazmayı öğrenmiyorum. Öğrendiğim şey, bir sistemin nasıl tasarlandığı: hangi parça neden orada, parçalar birbiriyle nasıl konuşuyor, bir şey bozulduğunda nereye bakılır.
Bu sayfadaki her araç o hedefin bir parçası. Dokuz ayın sonunda istediğim, bu listedeki her satırı sadece tanımlayabilen değil, “neden bunu seçtim ve neyi feda ettim” sorusuna cevap verebilen biri olmak; ve bu cevapların hepsi bu blogun içinde, çalışan bir sistem olarak duruyor olsun.