Datastar - Etkileşimli web uygulamaları geliştirmek için hafif bir hipermedya çerçevesi
(data-star.dev)- Datastar, basit statik web sitelerinden gerçek zamanlı iş birliğine dayalı web uygulamalarına kadar her şeyi geliştirebileceğiniz hafif bir çerçevedir; başlamak için HTML'e yalnızca tek bir script etiketi eklemek yeterlidir
- HTML'i genişleterek backend merkezli etkileşimli kullanıcı arayüzleri oluşturmayı mümkün kılan hipermedya öncelikli (hypermedia-first) bir yaklaşımı benimser
- htmx gibi backend tarafı reaktivite sunarken, Alpine.js benzeri frontend reaktivitesini de destekler ve npm paketi ya da bağımlılık olmadan çalışır
- Frontend tarafında standart
data-*öznitelikleriyle reaktif davranışlar uygulanır; backend tarafında ise olaylarla DOM değişiklikleri ve durum güncellemeleri gerçekleştirilir - SSE(Server-Sent Events) tabanlı gerçek zamanlı güncellemeler ve çeşitli diller için SDK'lerle, backend güdümlü reaktif web uygulaması geliştirmeyi sadeleştirmeyi hedefler
Datastar'a genel bakış
- Datastar, HTML'i genişleten hipermedya tabanlı bir çerçevedir; backend'den doğrudan DOM'u manipüle ederek gerçek zamanlı etkileşimli web uygulamaları geliştirmeyi sağlar
- Tarayıcı tarafında yalnızca 10.7KB boyutunda bir script yüklemek tüm işlevleri etkinleştirir; build aracı ya da çerçeve kurulumu gerekmez
- Hypermedia Systems ilkelerini devralarak, sunucunun UI durumunu yönlendirdiği ve istemcinin bunu reaktif biçimde yansıttığı bir model benimser
- Veri güncelleme, durum değişikliği ve DOM patching işlemlerini backend olaylarıyla ele alarak frontend mantığını en aza indirir
Kurulum
- En basit yöntem, CDN üzerinden aşağıdaki script'i eklemektir
<script type="module" src="https://cdn.jsdelivr.net/gh/starfederation/[email protected]/bundles/datastar.js"></script>
- Alternatif olarak dosyayı doğrudan indirebilir ya da Datastar bundler ile kendi bundle'ınızı oluşturabilirsiniz
- npm kurulumu veya Node ortam yapılandırması hiç gerekmez
data-* öznitelikleri ve reaktivite
- Temel fikir, HTML'in
data-*öznitelikleri aracılığıyla davranışın deklaratif olarak tanımlanmasıdır- Örnek:
data-on-click="alert('Hello!')"
- Örnek:
data-onözniteliği, belirli bir olay gerçekleştiğinde çalıştırılacak Datastar ifadesini belirtir; burada normal JavaScript de kullanılabilir- Özel VSCode eklentisi ve IntelliJ eklentisi ile otomatik tamamlama ve sözdizimi desteği sunar
Backend güdümlü DOM patching
- Datastar, sunucunun frontend'i yönlendirdiği bir modelle çalışır
- Sunucu HTML parçacıkları gönderdiğinde Datastar bunları morphing stratejisiyle DOM'a birleştirir
- Morphing, yalnızca değişen bölümleri güncelleyerek durumu korur ve performansı iyileştirir
- Örnek:
Sunucu HTML parçacığı olarak yanıt verdiğinde Datastar<button data-on-click="@get('/endpoint')">Open the pod bay doors, HAL.</button> <div id="hal"></div>id="hal"öğesini otomatik olarak değiştirir
Server-Sent Events (SSE) tabanlı akış
-
Sunucu,
datastar-patch-elementsolayını göndererek DOM'u gerçek zamanlı olarak güncelleyebilir -
Aşağıdaki örnek, HAL'in repliğini gösterdikten 1 saniye sonra tekrar sıfırlanmasını gösterir
event: datastar-patch-elements data: elements <div id="hal">I’m sorry, Dave. I’m afraid I can’t do that.</div> event: datastar-patch-elements data: elements <div id="hal">Waiting for an order...</div> -
Bunu desteklemek için Datastar çeşitli diller için SDK'ler sunar:
- Clojure, C#, Go, Java, Kotlin, PHP, Python, Ruby, Rust, Node.js
- Her SDK,
PatchElementsveyaServerSentEventGeneratorsınıfları aracılığıyla DOM patching olayları yayınlar
Datastar Inspector ve araçlar
- Tarayıcı geliştirici araçlarına ek olarak Datastar Inspector ile SSE olaylarını görsel olarak inceleyebilirsiniz
- Resmî dokümantasyonun yanı sıra yapay zeka ile üretilmiş DeepWiki, LLM için kod örnekleri ve tek sayfalık dokümantasyon gibi zengin kaynaklar da sunar
Sonuç
- Datastar, HTML merkezli hipermedya uygulaması geliştirmeyi sadeleştiren modern bir yaklaşımdır
- Mevcut SPA çerçevelerinden daha hafiftir ve backend ile frontend arasında dengeli bir reaktif geliştirme deneyimi sunar
- Gerçek zamanlı akış, sunucu merkezli UI kontrolü ve bağımlılıksız dağıtım gerektiren projeler için uygundur
1 yorum
Hacker News yorumları
Datastar ekibi güçlü inançları ve net bir felsefesi olan, yeni gelenlere de cömertçe zaman ayıran harika insanlar. Pro sürümü etrafındaki tartışmalar arasında gözden kaçıyor ama bu kesinlikle bir gelir elde etme stratejisi değil; şirket kâr amacı gütmeyen olarak kayıtlı. Yalnızca az sayıda kişinin ihtiyaç duyduğu özellikleri Pro’ya ayırarak, bu özellikleri isteyen küçük grubun çoğunlukla destek talebi açmasıyla oluşan yükü verimli biçimde kontrol etmeye çalışıyorlar. Hatta bu yaklaşım yenilikçi ve adil bile sayılabilir: (a) dikkat edilmesi gereken "ayağa dolanan" özelliklere işaret ediyor, (b) en çok desteğe ihtiyaç duyan ya da Datastar’dan en fazla değeri alan kişilerin küçük bir ücret ödemesini sağlıyor, (c) tüm topluluğa daha fazla zaman ayrılabilmesine olumlu katkı yapıyor
Eğer
data-animate,data-on-resize,data-scroll-into-viewgibi özellikler "ayağa dolanan" türdense, o zaman düzgün tasarlanmamışlardır. Ayrıca bunların yalnızca küçük bir azınlığın ihtiyaç duyduğu özellikler olduğunu da düşünmüyorum. İstediklerini ücretli yapmalarına itirazım yok ama buna ille de bir bahane üretmeleri gerekmiyor diye düşünüyorumcopy-to-clipboardözelliğinin gerçekten bu kadar yüksek destek yükü doğurup doğurmadığını merak ediyorum. Datastar’ın seviyesi gerçekten bu kadar zayıfsa, en basit özelliklerin bile düzgün çalışması için yoğun destek gerekiyorsa buna katılmam zorDatastar’ın gerçek zamanlı/işbirlikçi/çok oyunculu kullanım için yeterli olmadığını düşünüyorsanız ya da Pro özelliklerinin kesinlikle gerekli olduğuna inanıyorsanız, 5 dolarlık bir VPS üzerinde çalışan ve Pro özellikleri olmadan HN ana sayfasında ayakta kalmış şu 3 demoya bakın; Datastar’ın ne kadar etkileyici bir mühendislik işi olduğunu görürsünüz
https://checkboxes.andersmurphy.com/
https://cells.andersmurphy.com/
https://example.andersmurphy.com/ (çok oyunculu Game of Life)
checkboxes/cells örneklerinde görünüm adaptif olarak render ediliyor, bu yüzden epey uzaklaştırma yapılabiliyor ve sanal kaydırmada back pressure da uygulanmış
HN ana sayfasında ayakta kalmış olabilir ama ilk ekranda kocaman harflerle "bring your own backend" yazıyor; yani Datastar sayesinde ayakta kalmış değil
Devam eden ilgili HN tartışma başlıkları hakkında not:
I switched from Htmx to Datastar (Ekim 2025, 223 yorum)
https://news.ycombinator.com/item?id=45537372, bunu nereye koymam gerektiğini düşünüyordum ama buraya birleştirildi
Eski başlık: Datastar: Web Framework for the Future? (Nisan 2025, 155 yorum)
dang’a teşekkürler; ilgili yazıları ayrı ayrı hatırlıyor mu yoksa bunun için özel bir araç mı kullanıyor merak ediyorum
Topluluğun neden bu kadar saldırgan olduğunu pek anlayamıyorum. Datastar büyük ölçüde açık kaynak, her dilde çalışıyor ve geliştirme için fon bulma çabası da ilginç. Kendi projesini kendi istediği şekilde ilerletmesi bence gayet doğal. Bir ara golang ile kurcalamayı da düşünüyorum; emekleriniz için teşekkürler. Yalnız tek bir geri bildirimim var: benim ülkemde 299 dolar gerçekten çok büyük para ve bazı Pro özellikleri gerçekten gerekli olabilir, bu yüzden fiyat çok ağır geliyor. Steam gibi ülkeye göre dinamik fiyatlandırma ya da bağış benzeri bir destek modeli düşünülse güzel olur. Animasyon gibi şeyler sveltekit’te ücretsiz geliyor; mesele bedava istemek değil, gerçekten karşılayamamak. Şirketler için daha yüksek, tek başına çalışan geliştiriciler için daha düşük fiyat olsa keşke. Şimdiye kadar çevrimiçi topluluklara ya da projelere para vermiş biri değilim ama Datastar için 5-10 dolar civarında destek vermek isterdim. Solo katman fiyatı bir Switch oyunu (
silksong) seviyesine inse harika olurdu. Gerçekten çok güzel bir proje olmasına rağmen topluluktan gelen tepkinin bu kadar eleştirel olması üzücüBuraya kadarki tartışmalarda bana makul görünen tek eleştiri bu. 299 dolar gerçekten birçok kişi için erişilemez bir tutar. Öte yandan geliştiriciler yüksek hayat pahalılığı olan ülkelerde yaşıyorsa ve daha yüksek değer sunuyorsa, bu onlar açısından küçük bir miktar da olabilir. Ülkeye göre fiyatlandırma istemek iyi bir fikir ama bunun nasıl uygulanacağı karmaşık ve elde edilecek gerçek fayda sınırlı olabilir. Zaten ücretsiz açık kaynak özellikler değerin ve işlevselliğin %95’inden fazlasını sunuyor; bu yüzden Pro lisansa ihtiyacı olmayan çoğu kişi bence ücretsiz sürümü rahatça kullanmalı, öğrenmeli ve fayda sağlamalı
Benim eleştirim şu noktalardan çıkıyor
Küçük şirketler de kendi desteklerini sağlamak zorunda; bu yüzden hayat pahalılığı yüksek ülkelerde 5 dolar, tek bir destek talebini bile karşılamaz
Birkaç aydır Datastar ile Go ve Templ tabanlı bir frontend geliştiriyorum.
@actionsözelliğinden ve yanıt doğrultusunda sayfanın güncellenme biçiminden çok memnunum. Ancaksignalsözelliği konusunda kararsızım. Tek bir alan ya da dropdown gibi şeylerde iyi çalışıyor ama benim backend’im Kubernetes tarzı bir API olduğu için JSON kaynaklarını signal içinde tutmaya çalıştığımda, Datastar’ın yapıyı alt signal’lara ayırarak parse etme yaklaşımı pek uymuyor. Özellikle Kubernetes’tekilabelyapılarında olduğu gibi anahtarların hostname öneki taşıdığı durumları hiç işleyemiyor ve signals karmakarışık oluyor. Veri bağlama basit anahtar yollarında iyi çalışıyor ama indeks ya da hostname anahtarı gerektiren yollarda çalışmıyor. Ayrıca HTML özniteliklerinin JS tarafında otomatik dönüştürülme kuralları (snake→camelvb.) ve modifier işleme mantığı da sık hata ürettiği için karmaşık geliyor. Yine de HTMX/Alpine işlevlerini tek bir yapıda birleştirip bunu hypermedia tarzında sunmasından memnunum. NodeJS ekosisteminden kaçınabilmek de hoşuma gidiyor. RC aşamasında wire format bir kez değişmişti; ben de Fiber kullandığım ve Go SDK yerine bunu doğrudan kendim uyguladığım için güncellemek zor olmuştu. Ama format değişikliğinin iyi yönde bir değişim olduğunu düşünüyorum. Ekip doğru yönde ilerliyor gibi görünüyor; umarım gelişmeye devam ederDatastar’ın fikirleri bana çok güçlü göründüğü için bir ara kullanmayı düşünmüştüm. Ama açık kaynak sürümünün Pro ile özellik rekabetine girmemesi için kasıtlı olarak sınırlanması, hızlı bir hard fork yolunu da açabilir diye endişeliyim. Zaten çok büyük bir ekosistemi de yok; dolayısıyla geçiş yapmak için yeterli neden olduğunu düşünüyorum
[edit: açık çekirdeğin bazı eklentilerini kapalı tutan model gayet makul olabilir; olmasa bile seçenek çok. Hem Datastar geliştiricilerinin hem de kullanıcılarının başarılı olmasını dilerim]
Eğer hard fork konusunda endişeniz varsa, pre-pro dönemindeki eklentileri fork edip bugünkü Datastar Pro sürümüne uyarlasanız herkese faydası olur. Zaten yaklaşık 50 satırlık küçük kod parçaları; oldukça kolay
"Sınırlanıyor" ifadesi fazla kaçıyor. Yalnızca Pro’da bulunan öznitelik ve event sayısı az ve bunlar temel özellikler değil. Hatta sunucudan biraz JS gönderseniz neredeyse hepsi ikame edilebilir. Ayrıntılı liste için: https://data-star.dev/reference/datastar_pro
Gerçekten fork yapılmasını tavsiye ederim; keşke biri yapsa
Sanırım React ekosistemine fazla alıştığım için, belli bir karmaşıklık seviyesinin üzerindeki işler bu yaklaşımla bana mantıksal olarak çok daha zor geliyor. Eğer anlatılanı yanlış anlamadıysam Datastar, backend’in HTML döndürdüğü bir backend-frontend modeli ve ben bunu geçmişte denedim; gerçekten tekrar yapmak isteyeceğim bir şey değil. Özellikle bağlantısı yavaş kullanıcılar için (hâlâ DSL, eski uydu bağlantıları, 2G vb. kullanan çok kişi var) bu yaklaşım, küçük miktarda JSON’u birkaç kez almak yerine büyük HTML parçalarını tekrar tekrar almak anlamına geldiğinden algılanan performansı ciddi biçimde düşürecektir
Benim deneyimimde 2G/3G’de react uygulamaları çoğu zaman zaten hiç açılmıyordu; buna karşılık HTML tek seferde gelince içerik genelde 1-2 saniye içinde görünüyordu. Mühendisler çoğu zaman yapay timeout’ları geri getiriyor; ilerleme algılamasını socket düzeyinde yapıyoruz ama uygulamanın kendisinde bu hissedilmiyor. Her şeyi ille de "cıvıl cıvıl" yapmaya çalışmasak keşke
"Backend HTML döndürüyor" modeli, 56k modem dönemindeki web sitelerinde de vardı; o zamanlar düzeni kurmak için onlarca katman
tableetiketi kullandığımızı hatırlıyorumFrontend çok geniş bir alan. Kişisel blog ya da mağaza gibi ağırlıklı olarak statik içerik taşıyan, hızlı yükleme isteyen ve az etkileşimli sitelerde htmx türü araçlar iyi iş görebilir; ama Figma ya da Discord düzeyinde uygulamalar yapmak istiyorsanız bu yaklaşım yetersiz kalır. İşin en uç noktasında DOM sadece bir kafestir; insan ancak canvas ile GPU hesaplamasının birleşiminden tatmin olur
Tamamen çevrimdışı çalışmanız gerekiyorsa elbette başka çare yok. Ama sitelerin büyük çoğunluğunda kalıcı duruma gerçekten ihtiyaç yok; sayfa önbelleği ya da event durumu bile çoğu kullanım için yeterli olabilir. Datastar JS SDK’yı service worker içinde çalıştırıp gerekli durumu tarayıcı depolamasıyla senkronize ederseniz backend işlevi bile görebilir. Bağlantı yavaş olsa bile SSE akışında güçlü sıkıştırma uygulanırsa, tekrarlanan bilgi çok olduğundan sıkıştırma oranı %90’ın üstüne çıkabilir. Yavaş internet çoğu zaman yavaş cihazlarla da birlikte gelir; bu nedenle React, CSS-in-JS gibi ağır çözümler yerine Datastar çok daha hafif kalır. İşlevsellik açısından da neredeyse bir kayıp olmadan yapı aşırı sadeleşir
Bu özel olarak yeni bir örüntü değil. DHTML’den XHR’a geçiş döneminde bu yoldan bir kez geçilmişti ve çeşitli trade-off’lar yüzünden neredeyse terk edilmişti. DOM patching gibi yeni teknikler de sonuçta aynı sorunları taşıyor: sıkı bağlılık, kırılganlık, büyük veri yükü, gecikme problemleri. Datastar da daha çok küçük şirketlerin geliştirme maliyetini azaltmasına yarayan bir çözüm gibi; teknolojinin yeni sınırlarını zorlayan bir şey değil. Kötü değil ama tarihin tekerrür etmesi gibi hissettiriyor
Datastar’ın yazarı olarak söyleyeyim: yeni hiçbir şey olmaması zaten kasıtlı. jQuery döneminde sayfaya sadece hafifçe dokunulan o güzel zamanlardan, SPA’lerin her şeyi frontend’e taşımaya çalıştığı ve backend’in durumu elinde tuttuğu temel gerçeğin unutulduğu döneme geçilmesi bence talihsizdi. Benim yapmak istediğim şey inovasyon değil, normale dönüş
Acaba Astro bunu zaten çözmüş değil mi diye düşünüyorum
Sayfanın altındaki video/film o kadar hoşuma gitti ki sıradaki projemde kesin kullanmak istedim. Özellikle "The planet uncomplicanus" kısmı çok etkileyiciydi
https://www.zjax.dev/ ile elde edilen sonucu da beğendim