3 điểm bởi GN⁺ 2025-03-16 | 2 bình luận | Chia sẻ qua WhatsApp
  • Nash là một ghi chú độc lập dựa trên HTML có thể mở và chỉnh sửa trong trình duyệt web mà không cần dịch vụ riêng
  • Có thể chỉnh sửa ghi chú đã lưu ngay cả khi ngoại tuyến, hướng tới cách xử lý như một tệp tài liệu thay cho Notion hay Word
  • Có thể dùng để tạo nội dung dạng tài liệu HTML như blog tĩnh, nội dung một trang, hoặc đính kèm ảnh pizza trong thư viện
  • Khi gửi qua messenger, có thể xem bằng bản xem trước, nên cũng có thể chia sẻ nội dung dài theo kiểu chia sẻ tệp
  • Nash được phát hành dưới dạng mã nguồn mở, và có thể tự do chỉnh sửa, sử dụng trang ghi chú trống

Ghi chú HTML chỉ với trình duyệt

  • Nash là một ghi chú độc lập theo định hướng note as HTML
  • Không cần phần mềm hay dịch vụ riêng, chỉ cần trình duyệt web vốn thường đã được cài đặt là có thể sử dụng
  • Ghi chú đã lưu hỗ trợ chỉnh sửa ngoại tuyến
  • Có thể mở ghi chú trống tại nash.html

Nội dung có thể tạo và cách chia sẻ

  • Có thể dùng để tạo blog tĩnh hoặc nội dung một trang
  • Cũng có thể viết nội dung theo kiểu đính kèm ảnh có trong thư viện
  • Khi gửi qua messenger, có thể xem bằng bản xem trước, nên hữu ích để chia sẻ nội dung dài
  • Bắt đầu từ trải nghiệm tạo POC cho các ý tưởng đơn giản bằng một tệp HTML duy nhất, đây là nỗ lực đầu tiên nhằm tạo ra một tệp tài liệu hoạt động mà không cần dịch vụ hay phần mềm riêng
  • Nash được phát hành dưới dạng mã nguồn mở nên có thể tự do chỉnh sửa và sử dụng

2 bình luận

 
xguru 2025-03-16

Nash, ghi chú chạy bằng một tệp HTML duy nhất

Bạn đã đăng nó lên Hacker News sau khi từng đăng ở Show GN, và nhận được rất nhiều phiếu bầu. Xin chúc mừng!

 
GN⁺ 2025-03-16
Ý kiến trên Hacker News
  • Một phần đáng kể các tác vụ nặng được xử lý bằng một thuộc tính HTML đơn giản nhưng mạnh mẽ, nhưng có vẻ bất ngờ là không nhiều lập trình viên biết đến nó
    Đây là tính năng đã có từ khá lâu rồi

    • Một dòng này gần như chiếm 90% phần triển khai ban đầu của Writely
      Writely là startup sau này trở thành Google Docs, và tôi nói điều này với tư cách một trong những nhà sáng lập
      90% còn lại là mã backend phải viết để đồng bộ nội dung chỉnh sửa cho đúng, vì mỗi trình duyệt lại có các lỗi triển khai contenteditable kỳ quặc khác nhau :-)
    • Thật sự rất ấn tượng. Khoảng năm 2016 tôi vẫn còn làm nhiều website tùy chỉnh cho doanh nghiệp vừa và nhỏ, và nhận ra hầu hết đều có thể làm bằng những thứ như WP
      Tuy nhiên (1) việc styling WP quá phiền và tôi không muốn bảo trì, (2) tôi không muốn phụ thuộc vào chức năng plugin và các bản nâng cấp WP, và (3) tôi muốn những người có quyền truy cập khác nhau có thể chỉnh sửa các phần khác nhau trên cùng một trang, điều mà trong hầu hết CMS về cơ bản là không thể
      Vì vậy tôi gần như xây CMS từ đầu chỉ dựa trên contenteditable và TinyMCE, rồi gắn thẻ tương ứng vào các vùng có thể chỉnh sửa. Tất nhiên trước khi lưu, backend sẽ kiểm tra ai được phép chỉnh sửa cái gì
      Khi khách hàng hoặc nhân viên đăng nhập, họ có thể chỉnh sửa ngay các vùng trang mà họ có quyền; CMS hiển thị viền nét đứt quanh phần có thể chỉnh sửa. Font và màu được lưu trong cấu hình TinyMCE nên không cần lục lọi hay đụng vào HTML. Nếu muốn thì vẫn có thể tự chỉnh trực tiếp
      Với khách hàng, chuyện này trông khá như phép thuật. Vì họ không cần vào một trang chỉnh sửa riêng để xem sau khi thay đổi sẽ ra sao; họ chỉnh sửa tại chỗ ngay trên trang, lưu lại là được triển khai ngay
      Phần lớn các website đó đến nay sau 5–10 năm vẫn đang chạy, và gần như không cần tôi bảo trì
    • Vài tuần trước tôi đã làm một demo live cho khái niệm này. Với một tính năng ẩn của HTML thì nó thật sự đơn giản mà mạnh mẽ
      https://news.ycombinator.com/item?id=43179649
    • Cái này hay. Trước đây tôi từng làm một trình chỉnh sửa PDF bằng cách chuyển tài liệu sang HTML rồi thêm contenteditable="true" vào div cấp cao nhất
    • Đọc lên giống như “Ồ, ở đây có một thứ cực kỳ tuyệt vời, nó tên là bánh xe và đã tồn tại khá lâu rồi”
      Tôi nghĩ 20 năm trước mình cũng từng làm việc với thứ này
      ContentEditable lần đầu được giới thiệu trong IE 5.5 vào năm 2000, và đến năm 2007 thì đã dùng được trên tất cả trình duyệt chính
  • Tôi rất thích, và xem mã nguồn thấy đang viết bằng JavaScript thuần nên càng thích hơn
    Ngày nay việc có thể tạo các web app tương tác khá nhiều mà không cần thư viện hay framework vẫn bị đánh giá thấp
    Ý tưởng làm web app cục bộ đơn giản thành một trang HTML duy nhất cũng thật sự hay. Trước đây tôi đưa con đi bảo tàng khoa học và thử một trình tạo hoạt hình stop-motion đơn giản; sau đó tôi làm một web app tương tự, sao chép thành một file HTML duy nhất vào laptop của con để có thể dùng không cần Internet
    Có điều tôi lười viết JavaScript thuần trực tiếp nên đã làm bằng React và bundler, còn thành phẩm được gói thành một file HTML duy nhất. Có lẽ một ngày nào đó tôi sẽ đăng lên Show HN

    • Trước đây từng có câu “không cần jQuery để làm việc đó”, giờ chúng ta cần “không cần React hay Vue, Svelte gì đó để làm việc đó”
      Với JavaScript thuần thông thường và tay nghề ổn, gần như mọi thứ đều có thể làm gọn gàng hơn và dễ bảo trì hơn
      Sau nhiều thập kỷ bảo trì thứ người khác làm, tôi thấy thiết kế đơn giản đến mức ngớ ngẩn do người thông minh tạo ra thắng các tổ hợp khác
    • Tôi thích điểm này ở Quarto. Có thể tạo file HTML độc lập và chia sẻ với mọi người
  • Làm tốt lắm
    Cũng đáng cân nhắc thay đổi hành vi sao cho khi mở trang bằng trình duyệt từ đĩa cục bộ thì tự động vào chế độ chỉnh sửa, còn khi được đăng lên website của ai đó và truy cập từ web công khai thì trở thành chế độ xem chỉ đọc thông thường. Chỉ cần kiểm tra địa chỉ là http/https hay không
    Tất nhiên vẫn nên có cách vượt qua như tham số query string hoặc magic URL fragment để có thể xem ở chế độ chỉnh sửa
    Ngoài ra cũng nên cho phép đặt ngoại lệ cho một số domain hoặc tiền tố URL. Nếu mặc định là keepworking.github.io hoặc <https://keepworking.github.io/nash/> để chế độ chỉnh sửa cũng bật trên site đó, thì không cần làm thêm gì cho demo
    Sẽ còn tốt hơn nếu người dùng có thể chỉnh sửa ngoại lệ này. Ví dụ người khác cũng có thể có cùng hành vi mà không cần mẹo số 1

    • Tôi thật sự thích ý tưởng về một website có thể chỉnh sửa nội dung và lưu cục bộ
      Cá nhân tôi nghĩ nó rất tuyệt, nên mong vẫn giữ nguyên cách hiện tại
  • Dùng https://rpdillon.net/redbean-tiddlywiki-saver.html có thể biến nó thành một ứng dụng di động tự túc có thể lưu “thật sự”

    • Trước đây tôi từng làm thứ tương tự, có thể xem tại https://original.littr.me
    • Sẽ tốt nếu làm cho nó gợi ý lưu file
      Như vậy sẽ tiến gần hơn nhiều tới chức năng có thể có bookmark cá nhân bất cứ khi nào muốn
  • Hay. Trước đó đã có một cuộc thảo luận nhắc tới ý tưởng này và TiddlyWiki
    https://news.ycombinator.com/item?id=43179649

    • Một trong những thứ tôi thích nhất trong lĩnh vực này là Feather Wiki: https://feather.wiki/
  • Tôi mong trình duyệt hỗ trợ web app cục bộ tốt hơn
    Nếu file cục bộ có thể dễ dàng truy cập bộ nhớ lưu trữ lâu dài, sẽ mở ra rất nhiều cơ hội cho các ứng dụng GUI nhanh và dễ làm. Về cơ bản là hướng ngược lại với Electron

    • Làm sao một file có thể truy cập vào thứ gì đó? File chỉ là dữ liệu nên không thể làm gì cả
  • Tuyệt. Có lẽ vì đã quá quen với việc viết phần JavaScript của website bên ngoài HTML thực sự, nên lần đầu nhìn thấy tôi đã nghĩ “wow, thật lạ là có thể làm việc này chỉ bằng HTML”
    Nhưng khi xem mã nguồn thì thấy JavaScript nằm trong một thẻ script bình thường, và tôi lại nhớ ra rằng cũng có thể làm như vậy

    • HTML đang bị đánh giá thấp
      Phần lớn màn hình chúng ta thấy hằng ngày, thậm chí cả trình soạn thảo mã, đều là trang HTML
    • Nếu muốn khả năng tách rời hoặc quản lý phiên bản thì đây không nhất thiết là cách phải làm. Nhưng rõ ràng là có thể làm được
      Điều đáng ngạc nhiên hơn là mọi người dùng framework rồi đưa vào HTML những thứ thậm chí không phải JavaScript, dùng cấu trúc mà JavaScript bên ngoài sẽ gắn vào sau hoặc phải hydrate. Cảm giác như gom những điểm dở của cả hai phía
      Tôi thì gần với phía ngược lại: JavaScript là trung tâm, và ngoài index.html ra thì không có file nào có phần mở rộng .html. Tôi cũng không nhúng HTML vào JavaScript. Các template từng phần đều là .htm, và được hydrate trước khi thêm vào DOM
  • Sẽ tốt hơn nếu có cảnh báo khi cố đóng trang sau khi chỉnh sửa mà chưa lưu
    Có thể cân nhắc thêm trình xử lý onbeforeunload

    • Trang web này hiện cũng có cảnh báo khi đóng, nhưng nhìn chung đây là một đề xuất hay
  • Tôi thích những công cụ đơn giản như thế này. Gần đây tôi đã làm một “trang chủ”/dashboard tùy chỉnh đơn giản: https://github.com/rcarmo/onepage-by-spec

    • Tôi vừa cập nhật để cũng có thể “lưu”
  • Rất hay. Thật bực khi ngày càng có quá nhiều phần mềm giấu sau gói thuê bao những tính năng vốn có thể dễ dàng chạy cục bộ và trước đây vẫn làm được, rồi đặt ra các giới hạn nhân tạo
    Tôi đang làm một trình soạn thảo Markdown miễn phí chỉ chạy trong trình duyệt, có thể chỉnh sửa file cục bộ thông qua File System Access API mới. API này chỉ khả dụng trên các trình duyệt dựa trên Chromium
    https://zareith.github.io/chillmd/