26 điểm bởi GN⁺ 2025-08-19 | 7 bình luận | Chia sẻ qua WhatsApp
  • Hyperclay hỗ trợ tạo web app theo cách toàn bộ UI, logic và dữ liệu được tích hợp vào một tệp HTML duy nhất
  • Có thể chỉnh sửa tức thì và chia sẻ theo thời gian thực ngay trên chính tệp đó, đồng thời tự kiểm soát giao diện, hành vi và cả cách chỉnh sửa của ứng dụng
  • Cung cấp cấu trúc chạy ngay và lưu ngay mà không cần quy trình build/deploy riêng, cơ sở dữ liệu hay backend phức tạp
  • Chỉ với một tệp HTML, có thể chạy app ở bất kỳ đâu như trình duyệt, máy chủ, ngoại tuyến, và mọi thay đổi đều được quản lý phiên bản cũng như khôi phục
  • Được thiết kế để giảm độ phức tạp của phát triển web hiện đại và giúp bất kỳ ai cũng có thể dễ dàng tạo các ứng dụng tương tác sống động theo thời gian thực

Giới thiệu: Hyperclay, web app sống động tạo từ một tệp HTML duy nhất

  • Hyperclay mang lại trải nghiệm để lập trình viên tạo web app như đang nặn nên một sản phẩm bằng một tệp HTML có thể di động, không cần quản lý hạ tầng phức tạp
  • Nó hướng tới cấu trúc hoàn chỉnh chỉ với một tệp, loại bỏ những thứ vốn được xem là bắt buộc trong phát triển web truyền thống như tệp cấu hình, build, framework, pipeline triển khai

Khái niệm cốt lõi và ưu điểm

  • Ứng dụng được cấu thành từ một tệp HTML duy nhất
  • Có thể chỉnh sửa trực tiếp chính tệp đó theo thời gian thực thông qua UI trực quan, và nội dung chỉnh sửa sẽ được lưu vĩnh viễn thành trạng thái của ứng dụng
  • UI, logic và dữ liệu đều được chứa động trong cùng một tệp
  • Người dùng có thể chỉnh sửa app ngay lập tức như một tài liệu, rồi chia sẻ/tải xuống thay đổi ngay để dùng ngoại tuyến
  • Tương tự cách ví von là "Google Docs for interactive code", việc chia sẻ, chỉnh sửa và kiểm soát quyền sở hữu đều rất linh hoạt

Tóm tắt tính năng chính

  • Thao tác trực tiếp: Có thể chỉnh sửa ngay khi app đang chạy. Thay đổi được phản ánh tức thì mà không cần biên dịch hay tải lại
  • What you see is what you build: Chỉnh UI hoặc sửa trực tiếp mã nguồn là app thay đổi ngay, không có lớp trung gian
  • Tính di động thực sự: Có thể xuất app thành tệp HTML để chạy giống hệt ở bất kỳ đâu (máy chủ hoặc ngoại tuyến). Mỗi lần lưu đều được áp dụng quản lý phiên bản để có thể khôi phục
  • Tất cả những điều này được thực hiện không cần công nghệ đặc biệt nào, chỉ với đúng một tệp HTML chuẩn

Cấu trúc kỹ thuật

  • Hyperclay gồm máy chủ NodeJSthư viện JS phía client
  • Khi trang HTML tự sửa DOM của nó, phần document.body.outerHTML đã thay đổi sẽ được gửi lên máy chủ, và chính tệp HTML đó sẽ được cập nhật
  • Các thay đổi trong app như thuộc tính checked của checkbox được lưu vĩnh viễn vào mã HTML, nhờ đó có thể tái hiện cùng trạng thái ở lần truy cập sau
  • Hỗ trợ quản lý phiên bảnquản lý quyền đọc/ghi

Ví dụ thực tế

  • Có thể viết và lưu mọi loại app như blog có thể chỉnh sửa trực tiếp, checklist chấm công... chỉ trong một tệp HTML
  • Ghi trạng thái của app trực tiếp vào tài liệu bằng thuộc tính contenteditable hoặc dạng ``

Bối cảnh và vấn đề đặt ra

  • Trong quá trình tạo hàng chục website mỗi năm, đã xuất hiện nhu cầu rằng việc code web app giá như tự nhiên như viết lách
  • Website tĩnh truyền thống có thay đổi mang tính tạm thời (hành vi người dùng không được lưu)
  • Để triển khai tính bền vững dữ liệu trên web, thường phải làm quá nhiều việc như xây cơ sở dữ liệu, API, template, hệ thống tài khoản...
  • Điều đó kém hiệu quả với các nhu cầu muốn tạo nhanh, sửa theo thời gian thực và chia sẻ ngay như prototype, công cụ đơn giản, nhật ký phát triển cá nhân hay blog

Cách Hyperclay giải quyết

  • UI, trạng thái và hành vi được tích hợp trong một tệp HTML
  • Có thể mở ra dễ dàng và sửa ngay như mở một ứng dụng desktop, rồi phản ánh kết quả trực tiếp lên mạng
  • Đưa ra khái niệm đối tượng số bền vững (shared, cloneable, persistent)
  • Có thể áp dụng cho nhiều công cụ như website builder, công cụ tài liệu/sơ đồ/thuyết trình, dashboard, blog, tạo khảo sát/quiz, trực quan hóa dữ liệu...

Tóm tắt toàn bộ khái niệm

  • Phần lớn web app vốn đã sử dụng HTML
  • Nếu lược bỏ các bước trung gian, tệp HTML có thể đóng vai trò toàn bộ database/API/UI, giúp stack được đơn giản hóa chỉ còn vài dòng
  • Lập trình viên có thể giảm độ phức tạp và tạo ra ứng dụng dễ dùng, dễ bảo trì chỉ với lượng mã tối thiểu

Ví dụ sử dụng Hyperclay

  • Dù là blog, checklist hay bất kỳ app nào, đều có thể được viết/phát hành/chia sẻ/chỉnh sửa chỉ bằng một tệp HTML duy nhất
  • Có thể dùng ngay ở dạng `내 블로그!

`, và dùng `` để ghi vĩnh viễn từng trạng thái vào tài liệu

Kết luận

  • Hyperclay đưa ra một cách làm mới để bất kỳ ai cũng có thể tạo web app tương tác nhẹ, linh hoạt và có tính di động cao, đồng thời chia sẻ/lưu/khôi phục theo thời gian thực mà không vướng sự phiền toái của phát triển web truyền thống
  • Đây là nền tảng web app thế hệ mới mà không chỉ lập trình viên hay designer, mà bất kỳ ai cũng có thể dễ dàng sử dụng

7 bình luận

 
bobross0 2025-09-03

Thú vị đấy.

 
aobamisaki 2025-08-21

Cái này có nguyên lý hoạt động tương tự với những trình biên tập web từng rất phổ biến trước đây, nhưng việc nó có thể chạy chỉ với một file HTML duy nhất thì khá thú vị. Cá nhân tôi cũng thấy cái này có phần giống một dạng Proof-of-Concept, nhưng thành thật mà nói, nếu biết tận dụng tốt thì tôi cũng khá tò mò không biết nó có thể đi đến đâu.

 
ifmkl 2025-08-20

Cách hoạt động này chẳng phải giống hệt với cách hoạt động của editor từng được đăng trước đây trên https://vi.news.hada.io/topic?id=19611 sao? Ở đây tôi cũng gắn thêm một backend đơn giản bằng nodejs trên server để tự host, cho phép lưu các bài viết được tạo bằng editor, rồi thêm 2 chức năng là tải danh sách trong index.html và hiển thị ra, nên tôi đang dùng nó như một bảng tin blog đơn giản; xem qua thì cảm giác đúng là y hệt.

 
reagea0 2025-08-19

Thú vị đấy! Tôi cũng tò mò không biết bảo mật sẽ ra sao.

 
m00nlygreat 2025-08-19

Ý tưởng thú vị đấy. TiddlyWiki trước đây cũng khá vui.

 
developerjhp 2025-08-19

Thú vị đấy..

 
GN⁺ 2025-08-19
Ý kiến trên Hacker News
  • Hyperclay cho phép các trang HTML cập nhật DOM và giữ trang luôn ở trạng thái mới nhất bằng máy chủ NodeJS và thư viện JS frontend, đồng thời thay thế mã nguồn .html đã thay đổi
    Ví dụ, khi nhấp vào một checkbox thì thuộc tính checked sẽ được thêm vào, rồi document.body.outerHTML ở trạng thái đó được lưu toàn cục bằng Hyperclay để lần truy cập sau vẫn phản ánh nguyên trạng
    Nó cũng hỗ trợ quản lý phiên bản tự động và quản lý quyền đọc/ghi
    Tôi nghĩ nó hữu ích nhất khi vai trò nhà phát triển và biên tập nội dung là một, vì nếu nhiều biên tập viên dùng cùng lúc thì có thể ghi đè thay đổi của nhau
  • Nếu máy chủ NodeJS là bắt buộc thì tôi thấy hơi khó hiểu vì như vậy có vẻ không còn là một file HTML hoàn toàn self-contained nữa
  • Tôi đã thêm nguyên nội dung này vào trang chủ
    Nhân tiện, tôi đang triển khai cách để có thể đẩy "migration schema dựa trên DOM" tới mọi ứng dụng mà nhà phát triển đã fork
  • Tôi nghe nói TiddlyWiki là nguồn cảm hứng, nhưng tôi thắc mắc chẳng phải cốt lõi của TiddlyWiki là cấu trúc không cần máy chủ sao
    Thực tế khi làm webapp đơn giản thì đúng là sẽ đến lúc cần máy chủ, nhưng việc vừa theo cách tiếp cận không máy chủ vừa gắn với máy chủ vẫn hơi có cảm giác mâu thuẫn
    Dù vậy, ưu điểm là khả năng truy cập đa thiết bị tốt hơn và có vẻ việc chỉnh sửa trực tuyến sẽ dễ hơn
    Trường hợp của tôi là chỉnh sửa trên điện thoại bằng trình soạn thảo văn bản rồi đồng bộ sang laptop bằng ứng dụng sync
  • Tôi mong các tiêu chuẩn web hỗ trợ tốt hơn cho các trang file cục bộ chạy bằng giao thức file://
    Mỗi lần làm một mini-app HTML/Vue đơn giản là tôi lại gặp đủ kiểu vấn đề và luôn phải tìm cách lách
    Ví dụ, file HTML cục bộ không import được module JS cục bộ hoặc không mở được file cục bộ khác như audio
    Tôi hiểu là cần hạn chế để ngăn truy cập bừa bãi, nhưng sẽ hay hơn nếu có cách cho phép bằng cách chỉ định phần mở rộng hoặc thư mục cụ thể
    Việc phải dựng web server mỗi lần thật quá phiền và có cảm giác quá mức, lý tưởng nhất là chỉ cần nhập URL là ứng dụng chạy ngay
    • Một hạn chế lớn với webapp kiểu generator là chỉ các trang được tải qua HTTPS mới dùng được Clipboard API, nên trên file:/// thì chức năng sao chép không hoạt động
      Ngay cả ứng dụng hoàn toàn offline, không build, không dependency cũng phải thay nút bằng vùng văn bản chỉ vì giới hạn này nên khá bất tiện
      Nếu chạy máy chủ cục bộ thì có thể tận dụng VS Code devcontainer để server tự khởi động, và thêm lệnh để có HTTPS ngay trên máy local
    • Windows ngày xưa có kiểu HTA, tức file HTML với phần mở rộng khác, không có menu trình duyệt và có quyền truy cập hệ thống file
      Về bảo mật thì khá yếu, nhưng thời nay một phiên bản hiện đại kiểu Electron, có thể truy cập thư mục hay sqlite db, có lẽ cũng dùng được
      Một lựa chọn khác là trình dựng ứng dụng wasm như Orca, chỉ cung cấp canvas mà không có browser hay DOM
    • Tôi hiểu rủi ro của file HTML cục bộ, nhưng sẽ rất hay nếu trình duyệt có chế độ "chỉ offline" để tách biệt hệ thống file cục bộ với các trang bên ngoài mà vẫn cho phép truy cập
      Có thể không phải giải pháp hoàn hảo, nhưng đủ hữu ích vì nó cho phép dùng trình duyệt như một local server bị giới hạn theo cách đơn giản và trực quan
    • Tôi từng có phần nào không hài lòng với việc HTML bị khóa dần vào nền tảng local
      Dù vậy, audio, JavaScript và vài thứ khác vẫn chạy được ở mức nào đó, còn việc dựng web server thì cũng không quá khó vì có thể chạy ngay bằng python/node
      Chỉ cần thêm lệnh webserver_here vào terminal hoặc để nó chạy thường trực là xong
      Thậm chí chính vì rủi ro của HTML local ngày càng lớn nên tôi lại muốn ranh giới nghiêm ngặt hơn
    • Gần đây tôi cũng có suy nghĩ tương tự ở đây, đây
      Hiện tại chỉ còn localStorage và xuất/nhập thủ công là phương án thay thế
      Tôi lấy cảm hứng từ Hyperclay và thấy hứng thú với ý tưởng một ứng dụng Electron chỉ cần cài một lần rồi nạp nhiều mini-app, giống Electron Fiddle
  • Tôi tò mò về cách triển khai kỹ thuật của Hyperclay
    Không rõ nó chỉ đang nói đến localStorage, hay là ghi đè file trực tiếp bằng FileSystemAPI, v.v., vì phần giải thích về cơ chế hoạt động chi tiết còn thiếu
    Tôi cũng muốn biết khi người dùng lưu thì thay đổi có được áp dụng tự động mà không hiện hộp thoại "Lưu thành" hay không
    • Hyperclay có hai cách
      1. Hosting: nhiều ứng dụng HTML gọi endpoint /save của riêng mình để lưu và ghi đè HTML, đồng thời có sao lưu và quản lý phiên bản
      2. Local: tải Hyperclay Local mã nguồn mở (liên kết) về tự chạy, cũng gọi endpoint /save để có sao lưu, và có thể tự chỉnh máy chủ để tự host (chỉ cần tự triển khai auth)
    • Ừm, nếu đi thêm một bước nữa thì chẳng phải thứ này về bản chất sẽ giống PHP có thêm cú pháp phía máy chủ hay WordPress sao?
      Tôi có cảm giác đây là một vòng lặp mà hệ thống ngày càng chồng chất và phức tạp hơn, làm tăng gánh nặng hơn là mang lại cải thiện thực chất
    • Cách dàn dựng thông điệp "bỏ qua tiếng ồn của phát triển web hiện đại và tạo ra trải nghiệm tôi muốn" lẫn giữa đoạn văn ngắn và ảnh meme khiến tôi thấy hơi kỳ
      Trải nghiệm tôi muốn là phần giải thích cốt lõi, câu chuyện hậu trường có mạch, và sơ đồ chỉ ở những chỗ thực sự cần
    • Có DB trên máy chủ và nó lưu HTML
      Tức là không phải kiểu JSON chỉ lưu riêng phần thay đổi, mà giống như lưu toàn bộ HTML ở từng thời điểm
    • Theo tôi hiểu thì chính file HTML được cập nhật
      Những thay đổi ở form, thuộc tính, tag, v.v. được phản ánh trực tiếp vào mã nguồn HTML
  • Nó tạo cảm giác đang quay lại gần hơn với tầm nhìn ban đầu của WWW
    Trình duyệt web thời kỳ đầu tiên của Tim Berners-Lee dành cho NeXT vốn cũng tích hợp chức năng biên tập
    Lý do việc chỉnh sửa HTML ban đầu biến mất khỏi web là
    1. không có phương thức HTTP PUT nên không thể lưu HTML đã sửa lên web mà chỉ lưu cục bộ được
    2. các trình duyệt như Mosaic được phát hành mà bỏ chức năng biên tập vì độ phức tạp và các lý do khác, nên hướng phổ cập đại chúng đã rẽ sang hướng khác
    • Một web có thể đọc/chú thích/ghi là hình thái web mà tôi mong muốn từ rất lâu
      Tự xây bộ công cụ riêng cho từng trang như Hyperclay cũng hay, nhưng điều thực sự đáng mong muốn là có các công cụ chuẩn ở cấp trình duyệt (user agent), dùng được ở mọi nơi
    • W3C đã duy trì một trình biên tập web tên Amaya trong hơn 10 năm
      Tôi nghĩ đó là một ý tưởng hay và cũng làm rất tốt vai trò testbed
      Thật tiếc là nó biến mất, nhưng rõ ràng rất phù hợp với tầm nhìn ban đầu
    • Trong bối cảnh ban đầu của TBL (Tim Berners-Lee), lưu cục bộ cũng chính là lưu lên web
      Trên workstation ở trường đại học, người ta dùng chia sẻ mạng như NFS để file thực tế được lưu công khai và có thể truy cập bằng cùng địa chỉ máy
      Trên workstation SGI, chỉ cần cấu hình networking là mọi thứ hoạt động hoàn hảo ngay lập tức
      Ngoài ra, trọng tâm của web là cấu trúc hóa thông tin, và nội dung quan trọng hơn hình thức
      Theo thời gian, mọi thứ dần ám ảnh với bề ngoài qua mô hình WYSIWYG và lạm dụng table/div, khiến tinh thần ban đầu bị phai nhạt
      Thiết kế một hệ thống đơn giản mà ai cũng hiểu thực sự rất khó, còn hiện tại nó đã thành một cấu trúc khá phức tạp mà chỉ một nhóm nhỏ chuyên gia mới hiểu
      Thật tiếc khi HTML vẫn có thể dễ dùng nhưng trong phát triển hiện đại lại trở thành kỹ thuật chuyên môn phức tạp
      Có vẻ chỉ còn số ít người thật sự hiểu bối cảnh mà TBL ban đầu hướng tới
    • Về ý "trình duyệt web cũng là editor"
      Dạo này các trình duyệt đều cho phép sửa HTML/JS/CSS trực tiếp qua developer tools, nên tôi lại nghĩ chẳng phải tất cả đều là editor sao
      Tôi tự hỏi mọi người có phải không dùng devtools, hay là chỉ dùng React hoặc TS thay vì vanilla JS/HTML
      Chrome, Firefox và dòng Safari đều cung cấp tính năng gần như IDE tích hợp sẵn trong trình duyệt, nên viết code trực tiếp cũng được
  • Xem Hyperclay thì có vẻ nó là cấu trúc dùng DOM (virtual DOM)
    Sẽ còn tốt hơn nếu bổ sung thêm phần chính sách và thông báo pháp lý kiểu Shopify
    Nếu xem hồ sơ HN của tôi thì sẽ hiểu vì sao tôi thấy thứ này hay nhưng vẫn nghĩ cần phần pháp lý
  • Tôi từng thử cách tương tự với file save của game
    Dòng đầu tiên có dạng <!DOCTYPE html><html><head><script>const rawData =, dòng thứ hai chứa toàn bộ trạng thái
    Khi nhấn nút lưu, tôi lấy document.documentElement.outerHTML, thay dòng thứ hai bằng trạng thái mới nhất rồi tải xuống
    Nó hoạt động mà không cần máy chủ
    Đoạn mã liên quan
    • Trên Chrome, có thể tạo bookmark bằng data: URL bên dưới để mở một trình soạn thảo kiểu notepad trong một tab, và chừng nào chưa đóng tab thì state vẫn được giữ nguyên
      data:text/html,<html><head><title>Notepad</title><style>html,body{margin:0;padding:0;}textarea{padding:10px;font-family:Courier;font-size:16px;height:100%;width:100%;border:none;outline:none;}</style></head><body><textarea style="height:100%;width:100%;font-size:16px;padding:10px;"></textarea><script>document.getElementsByTagName('textarea')[0].focus()</script></body></html>  
      
    • Tôi cũng từng làm tương tự, tạo một game chạy bằng một file HTML duy nhất
      Sau khi sửa văn bản thì có thể lưu thành một phiên bản local mới
      Nó chạy tốt trên Android + Brave, nhưng không được hỗ trợ trên iOS + Safari
  • TiddlyWiki cũng là một công cụ trong lĩnh vực này với lịch sử hơn 20 năm
    Có vẻ Hyperclay tập trung nhiều hơn vào multi-user/multi-tenancy và tính bền vững dựa trên DB
    TiddlyWiki cũng đáng để tham khảo
  • Đây giống một dự án như thể ai đó vừa khám phá lại kho lưu trữ HTA của Windows 98
    Wiki về HTA
    • HTA giống như Electron nguyên bản
      Chỉ là trong môi trường IE ngày xưa, việc debug thật sự là địa ngục
    • HTA là một công nghệ vừa hay vừa kinh khủng, nhưng đi trước thời đại
      Nó trông như một trang web bình thường, nhưng chỉ dành cho IE và còn có quyền chạy tiến trình cục bộ
      Quản lý tính bền vững là vấn đề lớn, và mức độ tương đồng thực ra rất hạn chế
    • Trước đó thì có vẻ Outlook Web Access cũng từng đóng vai trò tương tự
      Outlook on the web
    • Tôi cũng nghĩ y hệt nên định vào bình luận như vậy
  • Tôi thấy đây là một ý tưởng độc đáo và muốn thử vào lúc nào đó
    Xem qua trang web thì tổng thể tôi khá thích, nhưng về mặt thực tế tôi muốn biết giới hạn sẽ lộ ra ở đâu
    Về bảo mật: nếu tôi có thể thay đổi trang thì người khác cũng làm được không? Quyền được quản lý thế nào?
    Khi lượng mã và logic tăng lên thì từ lúc nào việc quản lý sẽ trở nên khó khăn? Khi dữ liệu tăng thì sẽ ra sao?
    Ví dụ, nếu tôi làm một ứng dụng quản lý bia, người khác có thể sao chép riêng ứng dụng đó để dùng mà không mang theo dữ liệu của tôi không?
    • Bảo mật: mô hình tin cậy giống gần như mọi trình dựng website như SquareSpace
      Người dùng có thể tự do thay đổi trang của chính mình
      Nếu người dùng vi phạm niềm tin đó thì họ sẽ mất quyền truy cập tài khoản trả phí, và nếu gây thiệt hại cho người khác thì phải chịu trách nhiệm
    • Quyền chỉnh sửa: bất kỳ ai tạo ứng dụng đều có thể chỉnh sửa
      Nếu bật tính năng signups thì người dùng khác cũng có thể dễ dàng fork ứng dụng, và có thể truy ngược về bản gốc
      Tính năng đẩy cập nhật sang ứng dụng fork cũng đang được triển khai
    • Độ khó bảo trì: Pieter Levels của NomadList cũng vận hành một ứng dụng doanh thu $60k/tháng chỉ với một file index.php, nên cuối cùng vẫn là cách bạn sắp xếp mã và bạn chịu đựng những phần không cần thiết ra sao
    • Người khác có thể fork ứng dụng rồi vận hành theo cách chỉ lưu dữ liệu của riêng họ
      Về sau tôi dự định thêm tính năng cộng tác, nhưng hiện tại nó phù hợp nhất với người dùng đơn lẻ
  • Ý tưởng này có vẻ mới mẻ
    Dự án Webstrates cũng đang thử nghiệm điều tương tự
    Họ dùng DOM như một lớp bền vững để xây dựng phần mềm cộng tác cho các nhóm nhỏ, còn Hyperclay khác ở chỗ nó áp dụng trực tiếp cơ chế này vào các trang web truyền thống
    Gần đây họ còn thử cách tiếp cận local-first như MyWebstrates
    Tôi tò mò liệu Hyperclay có thể hỗ trợ chỉnh sửa offline bằng Webworker không
    • Clemens đây, một người cực kỳ ấn tượng với Webstrates
      Tôi chỉ mới biết đến nó khi nghĩ ra Hyperclay vào năm ngoái
      Tôi thực sự muốn làm một phiên bản local-first của Hyperclay, và nghĩ rằng chỉnh sửa offline là trụ cột của phần mềm cá nhân
      Không biết chúng ta có thể trao đổi ý tưởng qua video call không