Yudum.NET Sohbete Katıl
ya da
Google ile giriş
Misafir olarak gir

zeytin.net: Sıfır JavaScript ile Bir Veri Sitesi Nasıl Kurulur?

zeytin.net, zeytin ve zeytinyağı üzerine açık veriyle çalışan bir kaynak. 336 sayfa, tamamı Türkçe ve İngilizce; sayfalarda sıfır JavaScript — tek JS dosyası radyo sesi için ve yalnız radyo sayfasında yükleniyor. Grafikler sunucuda SVG olarak çiziliyor.

zeytin.net: Sıfır JavaScript ile Bir Veri Sitesi Nasıl Kurulur?
Teknoloji 🗓 26 Ağustos 2026 👁 13 okunma 💬 𝕏

Bir yıldır ikinci bir proje yürütüyorum: zeytin.net. Yudum'un dışında, tamamen ayrı bir site — ama aynı kafayla yapıldı. Ne yapmaya çalıştığını, nereye geldiğini ve nereye gitmek istediğini yazayım.

Neden böyle bir site?

Zeytin ve zeytinyağı, Türkiye'nin en çok üretip en az yazdığı konulardan biri. İnternette aradığınızda karşınıza çıkanların çoğu birbirinin kopyası: aynı beş cümle, aynı kaynaksız rakam, aynı "günde 5-7 tane yiyin" tavsiyesi.

Eksik olan şey bilgi değil — kaynağı belli, ölçülmüş bilgi. Akademik yayınlarda, resmî teknik talimatlarda, borsa tescillerinde bu veri var; ama kimse oturup onu okunur hâle getirmemiş.

zeytin.net'in tek iddiası bu: söylediğinin nereden geldiğini gösteren bir kaynak olmak.

Kural: sıfır JavaScript

Site kurulurken tek bir teknik karar aldım ve ondan hiç sapmadım: sayfalarda JavaScript çalışmayacak.

Bunun karşılığı somut:

  • Sayfa açılır açılmaz okunur. Yüklenme beklemesi, içerik kayması, "bir şeyler yükleniyor" hissi yok.
  • Ziyaretçi izlenmez. Çalışan betik yoksa parmak izi çıkaran, davranış ölçen bir katman da yoktur.
  • Eski telefonda, yavaş bağlantıda, betik engelleyiciyle — hepsinde aynı çalışır.
  • Bakımı kolaydır. Kırılacak bir istemci katmanı yok.

Bu kuralı korumak bazı şeyleri zorlaştırdı ve her seferinde JavaScript'e sarılmak yerine sunucuda çözmeyi seçtim:

  • Grafikler sunucuda SVG olarak çiziliyor. Fiyat serilerinin grafikleri Chart.js gibi bir kütüphaneyle değil, Go tarafında hesaplanıp SVG olarak basılıyor. Sonuç: grafik sayfayla birlikte gelir, sonradan belirmez.
  • Arama JS'siz. Form gönderimi, sunucu arar, sonuç sayfası döner. Yazarken öneri gösterimi tarayıcının kendi <datalist> özelliğiyle.
  • Çerez onayı bile JS'siz. Onay bir form gönderimidir; sunucu çerezi yazar ve geldiğiniz sayfaya döndürür.
  • Sorgular adrese çevrildi. ?q=zeytin yerine /araclar/ara/zeytin — paylaşılabilir, dizine girebilir adresler.

Tek istisna: radyo

Sitede çalışan tek JavaScript dosyası radyo.js ve işlevi tek: ses çalmak.

Bir yayın akışını durdurup başlatmak, ses seviyesini değiştirmek ve çalan parçayı tazelemek tarayıcıda kod çalıştırmadan mümkün değil. Bu yüzden istisna yaptım — ama sınırladım: bu dosya yalnız radyo sayfasında yükleniyor, o da defer ile. Sitenin geri kalan sayfalarında tek satır JavaScript çalışmıyor.

Kontrol etmek isteyen sayfa kaynağına bakabilir: normal bir sayfada göreceğiniz tek <script> etiketi arama motorları için yazılmış JSON-LD şemasıdır — veri, davranış değil.

Bugün ne var?

Rakamlar bugünkü hâliyle:

  • 336 adres yayında, tamamı Türkçe ve İngilizce. Yarım çeviri yok: bir sayfanın İngilizcesi yoksa yayına da girmiyor.
  • 27 çeşit sayfası — Türkiye'nin 17 çeşidinin tamamı, artı dünyada öne çıkan 10 çeşit. Her birinde ölçülmüş yağ oranı, kilodaki tane sayısı, et oranı ve yetiştiği yöreler.
  • Bitki koruma takvimi — resmî entegre mücadele talimatına dayanan, bölge ve ay seçilerek çalışan bir araç. Zararlı adı, müdahale eşiği ve kültürel önlemler.
  • Fiyat verisi — 2019'dan bugüne 3.667 borsa tescil kaydı, Avrupa üretici fiyatları, dünya emtia kotasyonları ve market raf fiyatları.
  • Sözlük — 40 terim, her biri ilgili yazılara bağlı.
  • Randıman hesaplayıcı, zeytin takvimi, tarif arama ve 40'ın üzerinde tarif.

Veriyi kendimiz çıkardık

En çok emek isteyen kısım bu oldu. Bazı veriler hazır durmuyor; elle çıkarmak gerekiyor.

Örnek: Marmara. Türkiye'nin en meşhur sofralık zeytini Gemlik ve bölgede üretilen zeytinin %80'inden fazlası siyah sofralık olarak işleniyor. Buna rağmen Marmara'daki hiçbir borsa ulusal fiyat portalına zeytin tescili bildirmiyor — bölge, ülkenin resmî fiyat tablosunda görünmüyor.

Gemlik Ticaret Borsası'nın aylık bültenlerini tek tek indirip ayrıştırdık: 40 bülten, 9 ürün, 323 kayıt — 2019'dan 2022'ye Marmara fiyat tarihçesi. O yayın 2022'de durmuş; yani bu kayıt başka hiçbir yerde bir arada durmuyor.

Aynı yaklaşım her yerde geçerli: ölçmediğimiz bir şeyi ölçmüş gibi göstermiyoruz. Kaynakta boş olan hücre sitede de boş kalıyor, "—" ile. Perakende fiyat serimiz uzun süre yoktu ve bunu her ilgili yazıda açıkça yazdık; ancak Ticaret Bakanlığı'nın market fiyatı servisini bağladıktan sonra o sayfayı açtık.

Neler planda?

  • Perakende fiyat tarihçesi. Şu an raf fiyatının anlık hâli var; zaman içindeki seyri biriktiriyoruz.
  • Daha fazla çeşit ve bitki koruma konusu. Türkiye'de 100 tescilli çeşit var; 17'sini yazdık.
  • Akademik kaynak havuzunun tamamının işlenmesi. Elimizde işlenmeyi bekleyen onlarca yayın duruyor.
  • Marmara boşluğunun kapanması. Bölgeden düzenli fiyat verisi yayımlayan bir kaynak çıkarsa ilk gün bağlarız.

Bağımsızlık

Sitede sponsor, kurumsal ortak ya da ücretli içerik yok. Gelir yalnız otomatik reklam ağından geliyor ve yakın zamanda okuyucuların doğrudan desteğine de açtım.

Bunun sınırlarını da yazılı hâle getirdim: ödeyen ne yazacağımızı belirleyemez, ürün sıralaması yapmayız, sahte puan üretmeyiz, fiyat ve analiz sayfalarında sponsor görünmez, kimse yayımlanmamış bir analizi göremez. Bağımsızlık iddia edilerek değil, sınırları yazılarak korunur.

Neden anlatıyorum?

İki sebeple. Birincisi, "JavaScript olmadan modern site olmaz" fikri yaygın ve yanlış — 336 sayfalık, veri çeken, grafik çizen, arama yapan bir site sıfır JS ile ayakta duruyor.

İkincisi, Yudum'la aynı hikâye: burada da bir ihtiyaç gördüm ve hazır bir şey kullanmak yerine kendim yazdım. 1998'den beri yaptığım tek şey bu.

Bakmak isteyen: zeytin.net

Haberi beğendin mi? 5 (1 oy)
Paylaş
Teknoloji Masası

Bu içerik, Yudum.NET Teknoloji Masası editör ekibi tarafından derlenip yayına hazırlanmıştır. Güncel gelişmeler için haber akışını takip edebilirsiniz.

İlgili haberler

✨ Keşfetmeye devam et