एकल फ़ाइल, portable, auto-update होने वाला शुद्ध HTML webapp
(hyperclay.com)- Hyperclay ऐसे webapp बनाने का समर्थन करता है जिनमें पूरा UI, logic और data एक ही HTML फ़ाइल में एकीकृत होता है
- फ़ाइल के भीतर ही बदलाव होते ही तुरंत संशोधन और real-time sharing संभव है, और app का रूप, व्यवहार और edit करने का तरीका भी सीधे नियंत्रित किया जा सकता है
- अलग build·deploy प्रक्रिया, database या जटिल backend के बिना तुरंत run·save होने वाली संरचना देता है
- सिर्फ एक HTML फ़ाइल से browser, server, offline आदि कहीं भी app चलाया जा सकता है, और सभी बदलाव version control व recovery के साथ सुरक्षित रहते हैं
- आधुनिक web development की जटिलता को घटाकर, किसी के लिए भी real-time में जीवंत interactive app आसानी से बनाना संभव बनाने के लिए इसे डिज़ाइन किया गया है
परिचय: एक HTML फ़ाइल से बनने वाला जीवंत webapp, Hyperclay
- Hyperclay प्रोग्रामरों को जटिल infrastructure management के बिना, एक portable HTML फ़ाइल के साथ मानो कोई उत्पाद गढ़ रहे हों, वैसा webapp बनाने का अनुभव देता है
- यह पारंपरिक web development के अनिवार्य हिस्से रहे config files, build, framework, deploy pipeline आदि को हटाकर, सिर्फ एक फ़ाइल में पूरा होने वाली संरचना का लक्ष्य रखता है
मुख्य कॉन्सेप्ट और फ़ायदे
- app एक ही HTML फ़ाइल से बना होता है
- visual UI के ज़रिए फ़ाइल को real-time में edit किया जा सकता है, और ये edits तुरंत app की state के रूप में स्थायी रूप से save हो जाती हैं
- UI, logic और data सब कुछ एक ही फ़ाइल में dynamic रूप से शामिल रहता है
- उपयोगकर्ता दस्तावेज़ की तरह app को तुरंत बदल सकते हैं, और बदलावों को तुरंत share·download करके offline इस्तेमाल भी कर सकते हैं
- "Google Docs for interactive code" जैसी उपमा की तरह, sharing, editing और ownership control काफ़ी स्वतंत्र है
प्रमुख फीचर्स का सार
- Direct manipulation: app चलते समय ही उसे edit किया जा सकता है। compile या refresh के बिना बदलाव तुरंत लागू हो जाते हैं
- What you see is what you build: UI बदलें या source code सीधे edit करें, app तुरंत बदल जाता है और बीच में कोई मध्यवर्ती layer नहीं है
- सच्ची portability: app को HTML फ़ाइल के रूप में export करके कहीं भी (server·offline) उसी तरह चलाया जा सकता है। हर save पर version control लागू होता है, इसलिए recovery संभव है
- यह सब किसी विशेष तकनीक के बिना, केवल एक standard HTML फ़ाइल से संभव होता है
तकनीकी संरचना
- Hyperclay NodeJS server और client-side JS library से बना है
- जब HTML page खुद DOM को modify करता है, तो बदला हुआ
document.body.outerHTMLserver को भेजा जाता है, और वही HTML फ़ाइल अपडेट हो जाती है - checkbox के checked attribute जैसे app के अंदर हुए बदलाव स्थायी रूप से HTML code में save हो जाते हैं, जिससे अगली बार खोलने पर वही state फिर से मिलती है
- Version control और read/write permission management का समर्थन है
वास्तविक उदाहरण
- सीधे edit होने वाला blog, work-hour checklist आदि जैसे हर तरह के app को एक HTML फ़ाइल में लिखा और save किया जा सकता है
contenteditableattribute या `` जैसे रूपों से app की state को सीधे document में लिखा जा सकता है
पृष्ठभूमि और समस्या-बोध
- हर साल दर्जनों websites बनाते हुए, यह ज़रूरत महसूस हुई कि webapp coding भी लेखन जितनी स्वाभाविक होनी चाहिए
- पारंपरिक static websites में बदलाव अस्थायी होते हैं (user actions save नहीं होते)
- web पर data persistence लागू करने के लिए database, API, templates, account system आदि जैसे बहुत अधिक काम की ज़रूरत पड़ती है
- prototype, simple tools, personal dev logs, blogging जैसी चीज़ों के लिए जल्दी बनाना, real-time में edit करना और तुरंत share करना पारंपरिक तरीके से अक्षम है
Hyperclay का समाधान
- एक HTML फ़ाइल में UI·state·behavior एकीकृत होते हैं
- जैसे desktop app खोलते हैं, वैसे ही आसानी से खोलकर तुरंत edit किया जा सकता है, और परिणाम को तुरंत online reflect किया जा सकता है
- यह persistent (shared, cloneable, persistent) digital object की अवधारणा पेश करता है
- इसे website builder, document·diagram·presentation tools, dashboard, blog, survey·quiz creation, data visualization आदि कई तरह के tools पर लागू किया जा सकता है
पूरे विचार का सार
- ज़्यादातर webapp पहले से ही HTML का उपयोग करते हैं
- अगर बीच के चरण हटा दिए जाएँ, तो HTML फ़ाइल ही पूरे database/API/UI की भूमिका निभा सकती है, जिससे stack कुछ पंक्तियों तक सरल हो जाता है
- developer जटिलता घटाकर न्यूनतम code से भी उपयोगी और maintainable app बना सकते हैं
Hyperclay के उपयोग के उदाहरण
- blog, checklist या किसी भी app को सिर्फ एक HTML में लिखना, deploy करना, share करना और edit करना संभव है
- `내 블로그!
` जैसे रूप में तुरंत उपयोग किया जा सकता है, और `` से हर state document में स्थायी रूप से दर्ज होती है
निष्कर्ष
- Hyperclay web development की झंझट के बिना, किसी को भी हल्के, portable और interactive webapp बनाने, उन्हें real-time में share, save और recover करने का नया तरीका देता है
- यह सिर्फ developers और designers के लिए नहीं, बल्कि किसी के लिए भी आसानी से इस्तेमाल की जा सकने वाली next-generation webapp platform है
7 टिप्पणियां
दिलचस्प है
यह पहले के बहुत सारे web editors की कार्यप्रणाली से मिलता-जुलता लगता है, लेकिन सिर्फ़ एक ही HTML फ़ाइल से काम हो जाना दिलचस्प है। व्यक्तिगत रूप से मुझे यह भी एक तरह का Proof-of-Concept लगता है, लेकिन ईमानदारी से कहूँ तो अगर इसका सही इस्तेमाल किया जाए तो यह कहाँ तक जा सकता है, यह जानने की उत्सुकता भी है।
इसका काम करने का तरीका तो बस https://hi.news.hada.io/topic?id=19611 पर पहले आए एडिटर के काम करने के तरीके जैसा ही है, है न? मैंने भी self-hosting के लिए सर्वर पर nodejs से एक simple backend जोड़कर एडिटर में लिखे गए post सेव होने दिए हैं, और
index.htmlमें सूची लाकर दिखाने वाली दो features जोड़कर इसे एक simple blog bulletin board की तरह इस्तेमाल कर रहा हूँ, देख कर तो वही एहसास हो रहा है।दिलचस्प है!
सोच रहा हूँ कि इसकी security कैसी होगी।
दिलचस्प आइडिया है। tiddlyWIki भी मज़ेदार था।
दिलचस्प है..
Hacker News टिप्पणियाँ
.htmlsource को replace करके page को लगातार up-to-date रख सकता हैउदाहरण के लिए checkbox पर click करने से
checkedattribute जुड़ जाता है, और इस state वालेdocument.body.outerHTMLको Hyperclay से global रूप में save किया जाता है ताकि अगली visit पर वही जैसा का तैसा दिखेयह automatic versioning और read/write permission management भी support करता है
मुझे लगता है यह सबसे उपयोगी तब है जब developer और content editor की भूमिका एक ही व्यक्ति निभा रहा हो, क्योंकि कई editor एक साथ इस्तेमाल करें तो वे एक-दूसरे के बदलाव overwrite कर सकते हैं
वैसे developer अभी ऐसा तरीका implement कर रहा है जिससे वह अपने द्वारा fork किए गए सभी apps में "DOM-based schema migration" push कर सके
असल में simple webapp बनाते-बनाते एक बिंदु पर server की ज़रूरत पड़ ही जाती है, लेकिन serverless approach और server-coupled design थोड़ा विरोधाभासी लगता है
फिर भी इसका एक फायदा cross-device accessibility बेहतर होना है, और online editing भी आसान लगती है
मेरे मामले में मैं text editor में फोन पर edit करता हूँ और sync app से उसे laptop पर sync कर लेता हूँ
file://protocol पर चलने वाले local file pages को बेहतर support देतेजब भी simple HTML/Vue mini-app बनाता था, कई समस्याएँ आती थीं और हमेशा workaround ढूँढना पड़ता था
उदाहरण के लिए local HTML file local JS module import नहीं कर सकती, या दूसरी local files (audio वगैरह) नहीं खोल सकती
मैं समझता हूँ कि अनियंत्रित access रोकने के लिए restrictions ज़रूरी हैं, लेकिन अच्छा होता अगर किसी specific extension या directory को explicitly allow करने का तरीका होता
हर बार web server उठाना बहुत झंझट और overkill लगता है; ideal तो यही है कि सिर्फ URL डालो और app तुरंत चल जाए
file:///पर copy feature काम नहीं करताbuild/dependency-free पूरी offline apps में भी इस सीमा की वजह से button की जगह text area देना पड़ता है, जो काफ़ी असुविधाजनक है
local server चलाने के लिए VS Code devcontainer इस्तेमाल करें तो server अपने-आप उठ जाता है, और कुछ commands जोड़कर local पर भी HTTPS संभव है
security के लिहाज़ से वह कमजोर था, लेकिन आज के समय में Electron-based कोई modern रूप, जो folder या sqlite db तक access दे, उपयोगी हो सकता है
Orca जैसे wasm app builders, जो browser/DOM के बिना सिर्फ canvas देते हैं, वे भी एक विकल्प हैं
यह perfect solution तो नहीं होगा, लेकिन browser को सीमित local server की तरह simple और intuitive तरीके से इस्तेमाल करना संभव होगा, जो काफ़ी उपयोगी लगता है
फिर भी audio, JavaScript वगैरह कुछ हद तक काम करते हैं, और web server उठाना भी python/node से तुरंत हो जाता है, इसलिए यह बहुत मुश्किल नहीं है
terminal में
webserver_herecommand जोड़ दें या उसे हमेशा चालू रखें, तो काम चल जाता हैबल्कि local HTML के risk बढ़ने से और सख्त boundaries की ज़रूरत महसूस होने लगी है
अभी के लिए सिर्फ localStorage और manual export/import ही विकल्प हैं
Hyperclay से मुझे एक idea मिला, और अब Electron Fiddle की तरह ऐसा Electron app सोच रहा हूँ जो एक बार install हो और कई mini-apps load कर सके
क्या यह बस localStorage की बात है, या FileSystemAPI से file को सीधे overwrite करता है—ऐसे details ठीक से समझाए नहीं गए थे
यह भी जानना था कि save करते समय user को "Save As" dialog के बिना बदलाव अपने-आप apply हो जाते हैं या नहीं
/saveendpoint call करके HTML को save और overwrite करते हैं, साथ में backup/version control भी मिलता है/saveendpoint call करके backup संभव है, और server को customize करके खुद host भी किया जा सकता है (बस auth implement करना होगा)system जैसे-जैसे layered होता जाता है, complexity बढ़ती है, और लगता है कि व्यावहारिक सुधार से ज़्यादा बोझ बढ़ाने वाला चक्र बन जाता है
मैं जिस अनुभव की उम्मीद करता हूँ, वह है core explanation, एक flow वाली backstory, और सिर्फ ज़रूरी diagrams
यानी यह JSON-based नहीं है जहाँ सिर्फ diff store किया जाए; बल्कि हर point-in-time पर पूरा HTML save करने जैसा है
form, attributes, tags वगैरह के बदलाव सीधे HTML source में reflect होते हैं
शुरुआती web browser (NeXT के लिए Tim Berners-Lee app) में editor functionality भी शामिल थी
शुरुआती HTML editing web से गायब होने के कारण थे
Hyperclay की तरह हर page के लिए अलग toolkit बनाना भी अच्छा है, लेकिन सच में बेहतर तब होगा जब browser (user agent) level पर standard tools मिलें जिन्हें हर जगह इस्तेमाल किया जा सके
वह एक अच्छा idea था, और मुझे लगता है उसने testbed की भूमिका भी अच्छी तरह निभाई
उसके खत्म हो जाने का अफ़सोस है, लेकिन वह शुरुआती vision से साफ़ तौर पर मेल खाता था
university workstations में NFS जैसी network sharing के जरिए files व्यवहारिक रूप से public storage में रहती थीं और उसी machine address से access भी हो जाती थीं
SGI workstations पर networking setup कर दें तो यह लगभग तुरंत पूरी तरह काम करता था
साथ ही web का focus information को structure करना था; appearance से ज़्यादा content मायने रखता था
समय के साथ WYSIWYG model, table/div के overuse जैसी चीज़ों ने appearance पर ज़्यादा ज़ोर दे दिया और मूल भावना धुंधली हो गई
ऐसा simple design बनाना जिसे हर कोई समझ सके, वास्तव में बहुत कठिन है; अभी web काफ़ी complex structure बन चुका है जिसे कुछ विशेषज्ञों का छोटा समूह ही समझता है
अफ़सोस इस बात का है कि HTML आज भी आसानी से लिखा जा सकता है, लेकिन modern development में वह एक complex specialist skill बन गया है
लगता है TBL के मूल context को सच में समझने वाले अब बहुत कम बचे हैं
आजकल browsers में developer tools के जरिए HTML/JS/CSS live edit किए जा सकते हैं, इसलिए मन में आता है कि फिर सब browsers editor ही तो हैं
समझ नहीं आता लोग devtools इस्तेमाल नहीं करते, या फिर vanilla JS/HTML की जगह सिर्फ React या TS ही इस्तेमाल करते हैं
Chrome, Firefox, Safari—सबमें browser-built-in IDE स्तर की capabilities हैं, जिनसे सीधे coding भी की जा सकती है
अगर इसमें Shopify-style policies और legal notices भी कुछ जुड़ें, तो और अच्छा होगा
मेरे HN profile को देखें तो समझ आएगा कि मुझे यह cool क्यों लगता है, लेकिन साथ ही legal पक्ष की ज़रूरत क्यों महसूस होती है
पहली line
<!DOCTYPE html><html><head><script>const rawData =जैसी होती थी, और दूसरी line में पूरा state रखा जाता थाsave button दबाने पर
document.documentElement.outerHTMLलिया जाता था और latest state से दूसरी line बदलकर download कराया जाता थायह server के बिना भी काम करता है
संबंधित code
data:URL bookmark बनाकर एक tab में notepad-style editor खुला रखा जा सकता है, और tab बंद न करें तो state बनी रहती हैtext edit करने के बाद उसे नए local version के रूप में save किया जा सकता है
Android + Brave browser में यह अच्छी तरह चलता है, लेकिन iOS + Safari में support नहीं है
Hyperclay की संरचना multi-user/multi-tenancy और DB-based persistence पर ज़्यादा केंद्रित लगती है
TiddlyWiki भी देखने लायक है
HTA wiki
बस पुराने IE environment में debugging किसी दुःस्वप्न से कम नहीं थी
वह बस एक web page जैसी दिखती थी, लेकिन IE-only थी और local process चलाने की permission तक रखती थी
persistence management उसकी समस्या थी, और समानताएँ भी बहुत सीमित हैं
Outlook on the web
site भी देखी, कुल मिलाकर पसंद आई, लेकिन व्यावहारिक limitations कहाँ सामने आती हैं, यह जानना चाहता हूँ
security के लिहाज़ से: अगर मैं page बदल सकता हूँ, तो क्या दूसरे लोग भी बदल सकते हैं? permissions कैसे manage होती हैं?
code और logic बढ़ने पर maintenance मुश्किल किस बिंदु से होने लगती है? data बढ़ने पर क्या होता है?
उदाहरण के लिए अगर मैं beer management app बनाऊँ, तो क्या दूसरे user मेरे data के बिना सिर्फ app की copy लेकर अलग से इस्तेमाल कर सकते हैं?
user अपने site को अपनी मर्ज़ी से बदल सकता है
अगर user trust तोड़े, तो paid account access खो सकता है, और दूसरों को नुकसान होने पर ज़िम्मेदारी भी उसी की होगी
अगर "signups" feature enable हो, तो दूसरे user भी app को आसानी से fork कर सकते हैं, और उसे original तक trace किया जा सकता है
fork किए गए apps में updates push करने की सुविधा पर अभी काम चल रहा है
index.phpसे महीने के $60k वाले app चलाते हैं, इसलिए अंततः बात इस पर निर्भर है कि code को कितना साफ़ रखा जाता है और अनावश्यक चीज़ों को कितना tolerate किया जाता हैआगे collaboration features जोड़ने की योजना है, लेकिन अभी यह single-user के लिए सबसे उपयुक्त है
Webstrates project में भी कुछ ऐसा ही experiment हो रहा है
वहाँ DOM को persistence layer की तरह इस्तेमाल करके छोटे समूहों के लिए collaborative software बनाया जा रहा है, जबकि Hyperclay में यही mechanism सीधे पारंपरिक web pages पर लागू होता है
हाल में MyWebstrates जैसे local-first approaches पर भी काम हो रहा है
सोच रहा हूँ कि क्या Hyperclay भी Webworker का उपयोग करके offline editing support दे सकता है
पिछले साल Hyperclay का विचार करते समय उसने इसके बारे में पहली बार जाना था
वह Hyperclay का local-first version सच में बनाना चाहता है, और मानता है कि offline editing personal software का एक मुख्य स्तंभ है
वह पूछ रहा है कि क्या इस पर विचार-विमर्श के लिए video call की जा सकती है