- Hyperclay mendukung pembuatan webapp dengan pendekatan di mana seluruh UI, logika, dan data terintegrasi ke dalam satu file HTML
- Perubahan dapat dilakukan langsung pada file itu sendiri dengan pengeditan instan dan berbagi secara real-time, serta pengguna bisa mengendalikan sendiri tampilan, perilaku, hingga cara pengeditan aplikasinya
- Menyediakan struktur jalankan dan simpan seketika tanpa proses build/deploy terpisah, database, atau backend yang rumit
- Hanya dengan satu file HTML, aplikasi dapat dijalankan di mana saja seperti browser, server, maupun offline, dan semua perubahan dikelola dengan versioning serta pemulihan
- Dirancang untuk mengurangi kompleksitas pengembangan web modern dan memudahkan siapa pun membuat aplikasi interaktif yang hidup secara real-time
Pengenalan: Hyperclay, webapp hidup yang dibuat hanya dengan satu file HTML
- Hyperclay menghadirkan pengalaman bagi programmer untuk membentuk webapp layaknya memahat produk dengan satu file HTML portabel, tanpa pengelolaan infrastruktur yang rumit
- Menargetkan struktur yang sepenuhnya tuntas hanya dengan satu file, dengan menghilangkan elemen yang sebelumnya dianggap wajib dalam pengembangan web seperti file konfigurasi, build, framework, dan pipeline deployment
Konsep inti dan keunggulan
- Aplikasi tersusun dari satu file HTML
- Melalui UI visual, file itu sendiri bisa diedit secara real-time, dan hasil edit tersebut langsung disimpan permanen sebagai state aplikasi
- UI, logika, dan data semuanya termuat secara dinamis dalam satu file
- Pengguna dapat langsung mengubah aplikasi seperti dokumen, lalu segera membagikan atau mengunduh perubahan untuk dipakai secara offline
- Seperti analogi "Google Docs for interactive code", proses berbagi, mengedit, dan mengatur kepemilikan bersifat fleksibel
Ringkasan fitur utama
- Manipulasi langsung: Bisa diedit langsung saat aplikasi sedang berjalan. Perubahan diterapkan seketika tanpa kompilasi atau refresh
- What you see is what you build: Saat UI diubah atau source code diedit langsung, aplikasi segera berubah tanpa lapisan perantara
- Portabilitas sejati: Aplikasi dapat diekspor sebagai file HTML dan dijalankan sama persis di mana saja (server maupun offline). Setiap penyimpanan disertai versioning sehingga bisa dipulihkan
- Semua ini hadir tanpa teknologi khusus, hanya dengan satu file HTML standar
Struktur teknis
- Hyperclay terdiri dari server NodeJS dan library JS sisi klien
- Saat halaman HTML memodifikasi DOM-nya sendiri,
document.body.outerHTMLyang telah berubah dikirim ke server, lalu file HTML itu sendiri diperbarui - Perubahan dalam aplikasi seperti atribut checked pada checkbox disimpan permanen ke dalam kode HTML, sehingga state yang sama bisa direproduksi saat dibuka kembali
- Mendukung versioning serta pengelolaan izin baca/tulis
Contoh nyata
- Blog yang dapat diedit langsung, checklist jam kerja, dan berbagai aplikasi lain dapat ditulis serta disimpan dalam satu file HTML
- Menggunakan atribut
contenteditableatau bentuk seperti `` untuk langsung mencatat state aplikasi ke dalam dokumen
Latar belakang dan kesadaran masalah
- Setelah membuat puluhan situs web setiap tahun, muncul kebutuhan agar coding webapp terasa sealami menulis
- Situs web statis tradisional memiliki perubahan yang bersifat sementara (aksi pengguna tidak disimpan)
- Untuk menghadirkan persistensi data di web, biasanya dibutuhkan pekerjaan berlebihan seperti membangun database, API, template, dan sistem akun
- Ini tidak efisien untuk kebutuhan seperti prototipe, alat sederhana, log pengembangan pribadi, atau blogging yang ingin dibuat cepat lalu diedit dan dibagikan secara real-time
Cara Hyperclay menyelesaikannya
- UI, state, dan perilaku digabungkan dalam satu file HTML
- Seperti membuka aplikasi desktop, pengguna bisa membukanya dengan mudah lalu langsung mengeditnya, dan hasilnya bisa langsung diterapkan secara online
- Mengusulkan konsep objek digital yang persisten (shared, cloneable, persistent)
- Dapat diterapkan pada berbagai alat seperti website builder, alat dokumen/diagram/presentasi, dashboard, blog, pembuatan survei/kuis, dan visualisasi data
Ringkasan konsep keseluruhan
- Sebagian besar webapp pada dasarnya sudah menggunakan HTML
- Dengan menghilangkan tahapan perantara, file HTML dapat berfungsi sebagai seluruh database/API/UI, sehingga stack menjadi sangat sederhana hanya dalam beberapa baris
- Developer dapat mengurangi kompleksitas dan membuat aplikasi yang unggul dalam usability serta maintenance bahkan dengan kode minimal
Contoh penggunaan Hyperclay
- Blog, checklist, atau aplikasi apa pun dapat ditulis, didistribusikan, dibagikan, dan diedit hanya dengan satu file HTML
- Bisa langsung digunakan dalam bentuk seperti `My blog!
`, dan `` akan mencatat tiap state secara permanen ke dalam dokumen
Kesimpulan
- Hyperclay menawarkan cara baru untuk membuat webapp interaktif yang ringan dan sangat portabel, sehingga siapa pun dapat membuat, membagikan, menyimpan, dan memulihkannya secara real-time tanpa kerepotan pengembangan web
- Ini adalah platform webapp generasi berikutnya yang mudah digunakan bukan hanya oleh developer dan desainer, tetapi oleh siapa pun
7 komentar
Menarik juga.
Ini tampak mirip dengan editor web yang dulu pernah sangat banyak beredar, tetapi menarik karena bisa berjalan hanya dengan satu file HTML. Secara pribadi, saya merasa ini juga semacam proof-of-concept, tetapi sejujurnya saya juga penasaran apa yang bisa terjadi jika ini dimanfaatkan dengan baik.
Cara kerjanya ini bukannya sama persis dengan editor yang pernah diunggah sebelumnya di https://id.news.hada.io/topic?id=19611? Di sini saya juga menambahkan backend sederhana dengan
nodejsdi server untuk self-hosting agar bisa menyimpan post yang ditulis lewat editor, lalu menambahkan dua fungsi diindex.html: memuat daftar dan menampilkannya, jadi saya memakainya sebagai papan blog sederhana, dan setelah melihat-lihat rasanya nuansanya sama.Menarik!
Saya penasaran seperti apa keamanannya.
Ide yang menarik.
tiddlyWIkijuga seru.Menarik sekali..
Komentar Hacker News
.htmlyang telah berubah melalui server NodeJS dan library JS frontendMisalnya, ketika checkbox diklik, atribut
checkedditambahkan, laludocument.body.outerHTMLdalam keadaan itu disimpan secara global dengan Hyperclay sehingga kunjungan berikutnya menampilkan kondisi yang samaJuga mendukung versioning otomatis serta pengelolaan izin baca/tulis
Menurut saya ini paling berguna ketika peran developer dan editor konten adalah orang yang sama; jika beberapa editor memakainya bersamaan, perubahan mereka bisa saling menimpa
Sebagai catatan, saya sedang membuat cara untuk mendorong "migrasi skema berbasis DOM" ke semua aplikasi yang di-fork developer
Dalam praktiknya, saat membuat webapp sederhana memang ada titik di mana server akhirnya dibutuhkan, tetapi pendekatan tanpa server dan keterikatan ke server terasa agak kontradiktif
Meski begitu, kelebihannya adalah akses lintas perangkat yang lebih baik, dan pengeditan online tampaknya akan lebih mudah
Dalam kasus saya, saya mengedit dari ponsel lewat editor teks lalu menyinkronkannya ke laptop dengan aplikasi sinkronisasi
file://Setiap kali membuat miniapp HTML/Vue sederhana, selalu muncul banyak masalah sehingga saya harus terus mencari jalan memutar
Misalnya, file HTML lokal tidak bisa mengimpor modul JS lokal, atau tidak bisa membuka file lokal lain seperti audio
Saya paham pembatasan diperlukan untuk mencegah akses sembarangan, tetapi akan bagus jika ada cara untuk mengizinkan akses lewat penentuan ekstensi atau direktori tertentu
Menyalakan web server setiap kali terasa terlalu merepotkan dan berlebihan; idealnya cukup masukkan URL lalu aplikasi langsung jalan
file:///Bahkan aplikasi offline total tanpa build maupun dependensi pun, karena batasan ini, harus mengganti tombol dengan area teks, yang cukup merepotkan
Untuk menjalankan server lokal, memakai VS Code devcontainer berguna karena server bisa naik otomatis, dan dengan tambahan perintah, HTTPS juga bisa dipakai secara lokal
Dari sisi keamanan memang lemah, tetapi versi modern berbasis Electron yang setidaknya bisa mengakses folder atau
sqlite dbtampaknya masih cukup bergunaBuilder aplikasi wasm seperti Orca, yang hanya menyediakan canvas tanpa browser maupun DOM, juga bisa jadi alternatif
Mungkin bukan solusi sempurna, tetapi cukup berguna karena browser bisa dipakai sebagai server lokal terbatas dengan cara yang sederhana dan intuitif
Meski begitu, audio, JavaScript, dan sebagainya masih cukup banyak yang tetap berfungsi, dan menjalankan web server juga tidak terlalu sulit karena bisa langsung dijalankan dengan python/node
Menambahkan perintah
webserver_heredi terminal atau membiarkannya selalu aktif sudah menyelesaikan masalahJustru karena risiko HTML lokal makin besar, saya jadi menginginkan batas yang lebih ketat
Saat ini satu-satunya alternatif hanyalah
localStorageserta ekspor/impor manualSaya mendapat ide dari Hyperclay dan tertarik dengan konsep aplikasi Electron yang diinstal sekali lalu bisa memuat banyak miniapp, seperti Electron Fiddle
Apakah ini cuma soal
localStorage, atau apakah file ditimpa langsung lewat FileSystemAPI, dan sebagainya; penjelasan tentang cara kerjanya terasa kurang rinciSaya juga penasaran apakah saat pengguna menyimpan, perubahan diterapkan otomatis tanpa dialog "simpan sebagai"
/savemasing-masing untuk menyimpan dan menimpa HTML-nya (dengan backup dan versioning)/save, bisa melakukan backup, dan bisa di-host di server sendiri dengan kustomisasi langsung (cukup implementasikan auth)Saat sistem makin berlapis, rasanya kompleksitas terus bertambah dan siklusnya malah menambah beban alih-alih memberi perbaikan nyata
Pengalaman yang saya inginkan adalah penjelasan inti, cerita lanjutan yang mengalir, dan diagram hanya untuk bagian yang memang perlu
Jadi rasanya bukan berbasis JSON yang hanya menyimpan perubahan, melainkan menyimpan snapshot penuh HTML setiap kali
Perubahan pada form, atribut, tag, dan lain-lain langsung diterapkan ke source HTML
Browser web awal (aplikasi Tim Berners-Lee untuk NeXT) juga menyertakan fungsi editor
Alasan pengeditan HTML awal kemudian menghilang dari web adalah
Membuat toolkit tersendiri untuk setiap halaman seperti Hyperclay memang keren, tetapi menurut saya yang benar-benar diinginkan adalah tool standar di level browser (user agent) yang bisa dipakai di mana saja
Itu ide yang bagus, dan menurut saya juga berfungsi sangat baik sebagai testbed
Sayang sudah tidak ada, tetapi jelas sangat sesuai dengan visi awal
Di workstation kampus, berbagi jaringan seperti NFS dipakai sehingga file secara efektif tersimpan secara publik dan bisa diakses lewat alamat mesin yang sama
Di workstation SGI, cukup dengan konfigurasi networking maka semuanya langsung berjalan sempurna
Selain itu, fokus web saat itu adalah menyusun informasi, dan isi lebih penting daripada tampilan
Seiring waktu, fokus bergeser ke model WYSIWYG dan penyalahgunaan tabel/div demi tampilan, sehingga semangat awal memudar
Merancang sesuatu yang sederhana dan bisa dipahami semua orang itu sangat sulit, tetapi sekarang web telah menjadi struktur yang cukup rumit dan hanya dipahami sekelompok kecil ahli
Saya menyayangkan bahwa HTML masih sebenarnya mudah dipakai, tetapi dalam pengembangan modern telah berubah menjadi keahlian rumit yang sangat spesialis
Rasanya hanya sedikit orang yang benar-benar memahami konteks yang semula dituju TBL
Browser zaman sekarang semuanya bisa mengubah HTML/JS/CSS secara live lewat developer tools, jadi saya jadi berpikir bukankah semuanya editor?
Saya jadi penasaran apakah orang-orang memang tidak memakai devtools, atau mereka hanya memakai React atau TS alih-alih vanilla JS/HTML
Keluarga Chrome, Firefox, dan Safari semuanya menyediakan kemampuan setingkat IDE bawaan browser, jadi menulis kode langsung pun memungkinkan
Akan lebih baik kalau ada tambahan kebijakan ala Shopify dan panduan legal
Jika melihat profil HN saya, Anda akan paham kenapa saya menganggap ini keren tetapi tetap merasa aspek legalnya diperlukan
Baris pertama berbentuk
<!DOCTYPE html><html><head><script>const rawData =, dan baris kedua memuat seluruh stateSaat tombol simpan ditekan, saya mengambil
document.documentElement.outerHTML, lalu mengganti baris kedua dengan state terbaru dan mengunduhnyaIni bekerja tanpa server
Kode terkait
data:URL berikut, Anda bisa membuka editor mirip notepad dalam satu tab, dan selama tab itu tidak ditutup, state akan tetap tersimpanSetelah mengubah teks, bisa disimpan sebagai versi lokal baru
Di Android + Brave browser ini berjalan baik, tetapi di iOS + Safari tidak didukung
Hyperclay tampaknya lebih berfokus pada multi-user/multi-tenancy dan persistensi berbasis DB
TiddlyWiki juga layak dijadikan referensi
Wiki HTA
Hanya saja, di lingkungan IE lama, debugging-nya benar-benar neraka
Tampilannya seperti halaman web biasa, tetapi khusus IE dan bahkan punya izin menjalankan proses lokal
Pengelolaan persistensinya yang jadi masalah, dan kemiripannya sangat terbatas
Outlook on the web
Setelah melihat situsnya, secara keseluruhan saya suka, tetapi saya penasaran di titik mana batasan praktisnya mulai terlihat
Dari sisi keamanan: jika saya bisa mengubah halaman saya, apakah orang lain juga bisa? Bagaimana izin dikelola?
Saat jumlah kode dan logika bertambah, kapan pengelolaannya mulai sulit? Apa yang terjadi ketika jumlah data meningkat?
Misalnya jika saya membuat aplikasi manajemen bir, apakah pengguna lain bisa menyalin hanya aplikasinya lalu memakainya terpisah tanpa data saya?
Pengguna bebas mengubah situs miliknya sendiri
Jika pengguna melanggar kepercayaan itu, akses ke akun berbayar dapat dicabut, dan jika menimbulkan kerugian bagi orang lain maka ada tanggung jawab yang menyertainya
Jika fitur "signups" diaktifkan, pengguna lain juga bisa dengan mudah mem-fork aplikasi itu, dan asal-usulnya bisa dilacak
Fitur untuk mendorong update ke aplikasi fork juga sedang dikerjakan
index.php, jadi pada akhirnya tergantung bagaimana Anda merapikan kode dan sejauh mana Anda bisa menoleransi bagian yang tidak perluKe depannya ada rencana menambahkan fitur kolaborasi, tetapi saat ini paling cocok untuk pengguna tunggal
Proyek Webstrates juga bereksperimen dengan gagasan serupa
Mereka membuat software kolaboratif untuk kelompok kecil dengan memakai DOM sebagai lapisan persistensi, sementara perbedaan Hyperclay adalah mekanisme ini diterapkan langsung pada halaman web tradisional
Belakangan mereka juga mencoba pendekatan local-first seperti MyWebstrates
Saya penasaran apakah Hyperclay juga bisa mendukung editing offline dengan memanfaatkan Webworker
Saya baru mengenalnya saat memikirkan Hyperclay tahun lalu
Saya benar-benar ingin membuat versi local-first dari Hyperclay, dan saya yakin editing offline adalah pilar utama software personal
Kalau berkenan, apakah kita bisa bertukar pikiran lewat video call?