16 पॉइंट द्वारा GN⁺ 2025-10-12 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Datastar एक हल्का framework है जिससे साधारण static website से लेकर real-time collaborative webapp तक बनाए जा सकते हैं, और शुरुआत करने के लिए HTML में सिर्फ एक script tag जोड़ना होता है
  • यह HTML को विस्तार देने वाला hypermedia-first तरीका अपनाता है, ताकि backend-केंद्रित interactive UI बनाया जा सके
  • htmx की तरह backend responsiveness देता है, वहीं Alpine.js की तरह frontend responsiveness भी सपोर्ट करता है, और npm package या dependency के बिना काम करता है
  • frontend में standard data-* attributes से reactive behavior लागू किया जाता है, और backend में events के जरिए DOM modification और state change किए जाते हैं
  • SSE(Server-Sent Events) आधारित real-time updates और कई भाषाओं के SDK के साथ, इसका लक्ष्य backend-driven reactive webapp development को सरल बनाना है

Datastar का अवलोकन

  • Datastar एक HTML को विस्तार देने वाला hypermedia-आधारित framework है, जिसकी संरचना backend से सीधे DOM को नियंत्रित करके real-time interactive webapp लागू करने की अनुमति देती है
  • browser पक्ष में सिर्फ 10.7KB की script लोड करते ही सभी फीचर सक्रिय हो जाते हैं, और build tool या framework installation की जरूरत नहीं होती
  • यह Hypermedia Systems के सिद्धांतों को आगे बढ़ाता है, जिसमें server UI की state को संचालित करता है और client उसे reactively दर्शाता है
  • data update, state change, और DOM patching को backend events के माध्यम से संभालकर frontend logic को न्यूनतम रखता है

इंस्टॉलेशन तरीका

  • सबसे आसान तरीका CDN के जरिए नीचे की तरह script जोड़ना है
  • या आप सीधे फाइल डाउनलोड कर सकते हैं, या Datastar bundler का उपयोग करके अपना bundle बना सकते हैं
  • npm installation या Node environment setup की बिल्कुल जरूरत नहीं है

data-* attributes और responsiveness

  • इसका मूल विचार HTML के data-* attributes के जरिए declaratively behavior को परिभाषित करना है
    • उदाहरण: data-on-click="alert('Hello!')"
  • data-on attribute यह बताता है कि किसी खास event पर कौन-सा Datastar expression चलाया जाए, और यहां सामान्य JavaScript भी इस्तेमाल की जा सकती है
  • समर्पित VSCode extension और IntelliJ plugin के जरिए autocomplete और syntax support मिलता है

backend-driven DOM patching

  • Datastar server द्वारा frontend को संचालित करने के तरीके से काम करता है
    • server HTML fragment भेजता है, और Datastar उसे morphing strategy से DOM में merge कर देता है
    • morphing सिर्फ बदले हुए हिस्सों को update करता है, जिससे state बनी रहती है और performance बेहतर होती है
  • उदाहरण:
    <button data-on-click="@get('/endpoint')">Open the pod bay doors, HAL.</button>  
    <div id="hal"></div>  
    
    अगर server HTML fragment के रूप में response देता है, तो Datastar अपने-आप id="hal" element को replace कर देता है

Server-Sent Events (SSE) आधारित streaming

  • server datastar-patch-elements event भेजकर real time में DOM को update कर सकता है

  • नीचे का उदाहरण HAL का संवाद दिखाने के बाद 1 सेकंड में उसे फिर से reset करने का है

    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>  
    
  • इसे सपोर्ट करने के लिए Datastar कई भाषाओं के SDK देता है:

    • Clojure, C#, Go, Java, Kotlin, PHP, Python, Ruby, Rust, Node.js
    • हर SDK PatchElements या ServerSentEventGenerator class के जरिए DOM patching events भेजता है

Datastar Inspector और टूल्स

  • browser developer tools के अलावा Datastar Inspector का उपयोग करके SSE events को दृश्य रूप में देखा जा सकता है
  • आधिकारिक documentation के साथ AI-generated DeepWiki, LLM के लिए code samples, single-page documentation जैसी समृद्ध सामग्री भी उपलब्ध है

निष्कर्ष

  • Datastar HTML-केंद्रित hypermedia application development को सरल बनाने वाला एक आधुनिक दृष्टिकोण है
  • यह मौजूदा SPA frameworks की तुलना में हल्का है, और backend और frontend के बीच संतुलित reactive development experience देता है
  • जिन projects में real-time streaming, server-केंद्रित UI control, और dependency-free deployment की जरूरत हो, उनके लिए यह उपयुक्त है

1 टिप्पणियां

 
GN⁺ 2025-10-12
Hacker News टिप्पणियाँ
  • Datastar चलाने वाले लोग स्पष्ट विश्वास और दर्शन वाले शानदार लोग हैं, और नए लोगों के लिए भी उदारता से समय निकालते हैं। Pro version को लेकर विवाद में यह बात भुला दी गई है, लेकिन यह किसी भी तरह की monetization strategy नहीं है, और कंपनी non-profit के रूप में registered है। केवल वे features Pro में अलग किए गए हैं जिनकी ज़रूरत बहुत कम लोगों को होती है; इन features को चाहने वाला छोटा समूह ही अक्सर पूछताछ करता है, जिससे support burden बढ़ जाता है, और यह उसे कुशलतापूर्वक नियंत्रित करने का तरीका है। बल्कि यह एक innovative और fair approach है जो (a) संकेत देता है कि किन features से सावधान रहना चाहिए क्योंकि वे "पैर पकड़ने" वाले बन सकते हैं, (b) उन users से थोड़ा शुल्क लेता है जिन्हें सबसे अधिक support चाहिए या जो Datastar से बहुत अधिक value पा रहे हैं, और (c) पूरी community के लिए अधिक समय देने की सुविधा देता है, जो सकारात्मक है

    • अगर data-animate, data-on-resize, data-scroll-into-view जैसे features ही "पैर पकड़ने" वाले हैं, तो फिर design ठीक से नहीं हुआ है। मुझे भी नहीं लगता कि ऐसे features की ज़रूरत केवल कुछ ही लोगों को होती है। जो वे बेचना चाहते हैं, उसे paid रखना ठीक है, लेकिन उसके लिए बहाना बनाना ज़रूरी नहीं लगता

    • यह जानने की जिज्ञासा है कि copy-to-clipboard feature क्या सच में इतना support burden पैदा करता है। अगर Datastar का स्तर सच में इतना खराब है कि एक साधारण feature को सही से चलाने के लिए भी बहुत support चाहिए, तो उससे सहमत होना मुश्किल है

  • अगर आपको लगता है कि Datastar real-time/collaboration/multiplayer के लिए पर्याप्त नहीं है, या Pro features अनिवार्य हैं, तो 5 डॉलर के VPS पर चलने वाले और Pro features के बिना भी HN फ्रंट पेज पर टिके रहे इन 3 demos को देख लें, तब समझ आएगा कि Datastar वाकई शानदार engineering है

    • https://checkboxes.andersmurphy.com/

    • https://cells.andersmurphy.com/

    • https://example.andersmurphy.com/ (multiplayer Game of Life)
      checkboxes/cells examples में view rendering adaptive है, इसलिए काफी zoom out किया जा सकता है, और virtual scrolling पर back pressure भी लागू है

    • भले ही यह HN फ्रंट पेज पर टिक गया हो, लेकिन पहली screen पर बड़े अक्षरों में "bring your own backend" लिखा है, इसलिए यह Datastar की वजह से नहीं टिका

  • चल रही संबंधित HN discussion threads की जानकारी:

  • समझ नहीं आता कि community इतनी hostile क्यों है। Datastar ज़्यादातर open source है, किसी भी language में काम करता है, और development funding जुटाने की इसकी कोशिश भी इसे एक दिलचस्प project बनाती है। मुझे लगता है कि अपने project को अपने तरीके से आगे बढ़ाना स्वाभाविक है। मैं भी golang में थोड़ा hacking करने की सोच रहा हूँ, और मेहनत के लिए धन्यवाद। बस एक feedback है: मेरे देश के हिसाब से 299 डॉलर बहुत बड़ी रकम है, और कुछ Pro features वास्तव में ज़रूरी हो सकते हैं, इसलिए pricing बहुत भारी लगती है। Steam की तरह country-based dynamic pricing या donation-style support पर भी विचार करना चाहिए। animation जैसी चीज़ें sveltekit में free मिलती हैं; बात यह नहीं कि मैं मुफ्त में सब कुछ चाहता हूँ, बल्कि सच में afford नहीं कर पा रहा। companies के लिए ज़्यादा pricing और solo developers के लिए कम pricing होनी चाहिए। मैंने अब तक online communities या projects को पैसे नहीं दिए, लेकिन Datastar को 5–10 डॉलर के स्तर पर ज़रूर support करना चाहूँगा। अच्छा होगा अगर solo tier की कीमत switch game (silksong) जैसी हो सके। इतना बढ़िया project होते हुए भी community की प्रतिक्रिया असामान्य रूप से आलोचनात्मक लगती है, यह अफसोस की बात है

    • अब तक की चर्चा में यह शायद एकमात्र वाजिब आलोचना लगती है। 299 डॉलर सच में बहुत लोगों की पहुँच से बाहर है। लेकिन developers अगर महँगे देशों में रहते हैं और ऊँची value दे रहे हैं, तो उनके लिए यह शायद छोटी रकम हो सकती है। country-based pricing system लाने की इच्छा अच्छी है, लेकिन उसे लागू करना कठिन है और वास्तविक लाभ भी सीमित हो सकता है। चूँकि मुफ्त open source features पहले से ही 95% से अधिक value और functionality देते हैं, इसलिए जिन अधिकांश लोगों को Pro license की ज़रूरत नहीं है, वे बस मुफ्त में खुलकर इसका उपयोग करें, सीखें या उससे लाभ लें

    • मेरी आलोचना की शुरुआत इन बातों से होती है

      • homepage पर Pro का कोई ज़िक्र नहीं है, documentation खंगालते समय पता चलता है। यह थोड़ा bait जैसा लगता है
      • Pro में सिर्फ support या examples नहीं, बल्कि असली features bundled हैं
      • Pro features पर निर्भर होने पर Datastar के प्रति निर्भरता बढ़ती है और maintenance authority vendor से बंध जाती है
      • Pro के बिना site चलती ही नहीं, इसलिए vendor lock-in बड़ा मुद्दा बन जाता है
      • Pro में क्या खरीदा जा रहा है, यह दिखाने वाला कोई hands-on demo नहीं है; Alpine.js या React Flow Pro की तरह browser में आज़माने का विकल्प नहीं है
      • source code मिलने पर भी improvements share नहीं किए जा सकते
      • मुद्दा pricing का नहीं, structure और value का है; किसी के लिए सस्ता, किसी के लिए महँगा हो सकता है
      • संदर्भ के लिए अच्छे Pro model के उदाहरण: Alpine.js Pro, React Flow Pro
    • छोटी companies को भी अपना support खुद ही संभालना पड़ता है, इसलिए महँगे देशों में 5 डॉलर में एक support ticket भी नहीं संभलता

  • मैं कई महीनों से Datastar के साथ Go, Templ आधारित frontend बना रहा हूँ। @actions feature और response के अनुसार page update होने का तरीका मुझे बहुत पसंद है। लेकिन signals feature को लेकर मैं व्यक्तिगत रूप से सोच में हूँ। single field या dropdown जैसी चीज़ों के लिए यह ठीक है, लेकिन मेरा backend Kubernetes-style API है, और जब मैं JSON resource को signal में store करना चाहता हूँ, तो Datastar उसे sub-signals में parse करता है, जिससे वह मेरे उपयोग के लिए ठीक नहीं बैठता। खासकर Kubernetes labels जैसे structures, जहाँ key में hostname prefix होता है, उन्हें यह बिल्कुल संभाल नहीं पाता और signals गड़बड़ा जाते हैं। data binding simple key paths पर तो ठीक काम करती है, लेकिन index या hostname key वाले paths पर नहीं। इसके अलावा HTML attributes का JS में अपने-आप conversion होना (snake→camel आदि) और modifier handling भी error-prone और complex है। फिर भी मुझे यह पसंद है कि यह HTMX/Alpine की functionality को एक साथ जोड़कर hypermedia तरीके से implement करता है। NodeJS ecosystem से बच निकलना भी अच्छा लगता है। RC में एक बार wire format बदला था; मैं Fiber इस्तेमाल करके Go SDK के बिना direct implementation कर रहा था, इसलिए update करना मुश्किल हुआ। लेकिन मुझे लगता है कि format change अच्छा बदलाव था। developers सही दिशा में जा रहे हैं, इसलिए आशा है कि यह आगे भी बढ़ता रहेगा

  • Datastar का idea बहुत शानदार लगा था, इसलिए इसे अपनाने पर मैंने भी विचार किया था। लेकिन यह चिंता है कि open source version को Pro से feature competition न करने देने के लिए सीमित करना, hard fork की तरफ तेज़ रास्ता बन सकता है। इसका ecosystem भी इतना बड़ा नहीं है, इसलिए switch करने की वजहें काफी हो सकती हैं
    [edit: open-core model में कुछ plugins को बंद रखना पूरी तरह तर्कसंगत हो सकता है, और भले ऐसा न भी हो, विकल्प बहुत हैं। Datastar के developers और users दोनों सफल हों, यही कामना है]

    • अगर hard fork की चिंता है, तो pre-pro दौर के plugins को fork करके मौजूदा Datastar pro version के मुताबिक बना दें, इससे सबका फायदा होगा। ये करीब 50 lines के छोटे code हैं, इसलिए बहुत आसान है

    • "सीमित करना" कहना कुछ ज़्यादा है; केवल थोड़े से attributes/events ही Pro में हैं, और वे core features भी नहीं हैं। बल्कि server से थोड़ा-सा JS भेजकर लगभग सब replace किया जा सकता है। ठोस list यहाँ देखें: https://data-star.dev/reference/datastar_pro

    • मैं सच में fork की सलाह देता हूँ, काश कोई यह कर दे

  • शायद मैं React ecosystem का बहुत आदी हो चुका हूँ, लेकिन एक सीमा से ऊपर की complexity वाले काम इस तरीके से logically कहीं ज़्यादा मुश्किल लगते हैं। अगर मैं गलत नहीं समझ रहा, तो Datastar एक backend-frontend pattern है जिसमें backend HTML लौटाता है, और पहले के अनुभव के आधार पर कहूँ तो मैं सच में उस दुनिया में वापस नहीं जाना चाहता। खासकर slow connection वाले users के लिए (आज भी dsl, पुराना satellite, 2G आदि बहुत हैं), छोटी-छोटी JSON payloads कई बार पाने के बजाय बार-बार बड़ा HTML पाना perceptible performance को काफी गिरा देगा

    • मेरे अनुभव में 2G/3G पर react app तो अक्सर शुरू ही नहीं होता था, जबकि HTML एक बार में मिलने पर ज़्यादातर मामलों में 1–2 सेकंड में content दिख जाता है। engineers अक्सर मनमाने timeouts दोबारा बना देते हैं; progress का पता socket में चल रहा होता है लेकिन app में उसका एहसास नहीं होता। काश लोग ज़बरदस्ती सब कुछ "तेज़-तेज़" दिखाने की कोशिश न करें

    • "backend HTML लौटाता है" वाला pattern 56k modem वाले ज़माने की websites जैसा है, और तब layouts के लिए table tags की दर्जनों परतें लगाने की याद आती है

    • frontend बहुत व्यापक क्षेत्र है। व्यक्तिगत blog या shop जैसी जगहों पर जहाँ static content ज़्यादा है, तेज़ loading चाहिए और interaction कम है, वहाँ htmx जैसे tools अच्छे हैं। लेकिन अगर Figma या Discord स्तर का app बनाना है, तो यह तरीका पर्याप्त नहीं होगा। चरम स्तर पर काम करने वालों के लिए DOM सिर्फ एक कैद है, और उन्हें canvas तथा GPU compute के संयोजन से ही संतोष मिलता है

    • अगर पूरी तरह offline होना ज़रूरी है, तो स्पष्ट है कि यह तरीका नहीं चलेगा। लेकिन अधिकांश sites को persistent state की वैसी ज़रूरत नहीं होती, इसलिए page caching या event state भर से भी काम चल सकता है। service worker में datastar js sdk चलाकर और केवल आवश्यक state को browser storage से sync करके backend जैसी भूमिका भी निभाई जा सकती है। slow connection पर भी अगर SSE stream में compression आक्रामक रूप से इस्तेमाल करें, तो duplicate information बहुत भेजे जाने पर भी compression ratio 90% से ऊपर जा सकता है। धीमा internet अक्सर धीमे devices के साथ आता है, इसलिए react, css-in-js जैसी भारी चीज़ों की तुलना में Datastar कहीं हल्का है। functionality में भी लगभग कोई खास नुकसान नहीं, और चीज़ें बहुत सरल हो जाती हैं

  • यह कोई खास नया pattern नहीं है। DHTML से XHR की ओर जाने के दौर में हम एक बार इस रास्ते से गुज़र चुके हैं, और तरह-तरह के trade-offs के कारण यह लगभग छोड़ दिया गया था। DOM patching जैसी नई तकनीकें भी आखिर वही समस्याएँ लेकर आती हैं—tight coupling, instability, bulk, latency issues। Datastar भी ज़्यादा एक छोटे business के लिए development cost कम करने वाला solution लगता है, न कि technology की कोई नई सीमा तोड़ने वाला। बुरा नहीं है, लेकिन अंततः इतिहास खुद को दोहराता हुआ लगता है

    • Datastar के लेखक के रूप में कहूँ तो, इसमें कुछ भी नया न होना ही असल इरादा है। jQuery के उन अच्छे दिनों के बाद, जब वह page पर बस हल्का असर डालता था, SPA ने सब कुछ frontend में ठूँसना शुरू कर दिया और backend के state का मालिक होने का मूल विचार पीछे छूट गया—इसका अफसोस था। मेरा लक्ष्य innovation नहीं, normalization है

    • क्या Astro ने पहले से यह समस्या हल नहीं कर दी है?

  • पेज के नीचे का video (फिल्म) इतना अच्छा है कि उसे अगले project में ज़रूर इस्तेमाल करने का मन होता है। खासकर 'The planet uncomplicanus' वाला हिस्सा बहुत प्रभावशाली है

  • https://www.zjax.dev/ ने जो किया है, वह भी पसंद आया