3 điểm bởi GN⁺ 2024-06-13 | 1 bình luận | Chia sẻ qua WhatsApp
  • Unforget là một ứng dụng ghi chú tối giản cho phép viết ghi chú cục bộ trước rồi tiếp tục sử dụng qua đồng bộ hóa được mã hóa, nhấn mạnh cả quyền riêng tư lẫn khả năng dùng trên nhiều thiết bị
  • Vì là Progressive Web App, ứng dụng có thể dùng trên trình duyệt, máy tính để bàn và thiết bị di động, đồng thời hoạt động không cần Electron.js
  • Cung cấp viết Markdown, xuất một lần nhấp ở định dạng JSON, API công khai, cùng các tùy chọn tự host và đám mây
  • Có thể dùng sao lưu và đồng bộ đám mây được mã hóa hoàn toàn bằng cách đăng ký miễn phí, và không cần email hay số điện thoại
  • Hỗ trợ nhập từ Google Keep, Apple Notes, Standard Notes, nhưng khả năng và cách cài đặt khác nhau tùy trình duyệt

Ghi chú ưu tiên ngoại tuyến và quyền kiểm soát dữ liệu

  • Unforget là ứng dụng ghi chú tối giản ưu tiên ngoại tuyến, cung cấp đồng bộ hóa mã hóa đầu cuối
  • Hình thức ứng dụng và môi trường sử dụng

    • Là Progressive Web App, có thể dùng trên trình duyệt, máy tính để bàn và thiết bị di động
    • Hoạt động không cần Electron.js và hỗ trợ cài đặt tùy chọn chỉ với một lần nhấp
    • Nhấn mạnh thiết kế ưu tiên quyền riêng tư và được cung cấp dưới dạng mã nguồn mở theo giấy phép MIT
  • Viết, chuyển dữ liệu và xuất dữ liệu

    • Hỗ trợ viết Markdown
    • Có thể nhập từ Google Keep, Apple Notes, Standard Notes
    • Có thể xuất một lần nhấp dữ liệu ghi chú ở định dạng JSON
  • Đồng bộ hóa và mở rộng

    • Thông qua đăng ký miễn phí, có thể sao lưu ghi chú lên đám mây ở trạng thái được mã hóa hoàn toàn và đồng bộ trên nhiều thiết bị
    • Khi đăng ký không cần email hay số điện thoại
    • Cung cấp cả tùy chọn tự host và đám mây
    • API công khai cho phép tạo client riêng

Cách cài đặt theo từng trình duyệt

  • Unforget có thể dùng trực tiếp trong trình duyệt, và cách cài đặt khác nhau tùy môi trường
  • Hỗ trợ cài đặt

    • Chrome: dùng biểu tượng cài đặt trên thanh URL
    • Edge: dùng biểu tượng cài đặt trên thanh URL
    • Android Browser: menu → Add to Home Screen
    • Safari Desktop: Share → Add to Dock
    • Safari iOS: Share → Add to Home Screen
    • Firefox Android: dùng biểu tượng cài đặt trên thanh URL
  • Hạn chế cài đặt

    • Không thể cài đặt trên Firefox Desktop

1 bình luận

 
GN⁺ 2024-06-13
Ý kiến trên Hacker News
  • Tôi tò mò về trải nghiệm của những người từng làm PWA ưu tiên ngoại tuyến
    Ý tưởng dùng web chỉ như phương tiện phân phối và dùng trình duyệt làm môi trường chạy rất hấp dẫn, nhưng tôi lo về những rắc rối nhỏ của bộ nhớ cục bộ
    Vì dữ liệu không hiện ra như một tệp kiểu ~/.app/app.dat, nên có cảm giác “không thấy thì sẽ quên”, và tôi cũng vướng bận khả năng nó đột ngột biến mất do cập nhật trình duyệt, cũng như độ phức tạp khi xử lý quản lý phiên bản schema trong mô hình cơ bản của web
    Tính di động của dữ liệu khi chuyển sang máy tính mới cũng là vấn đề; việc chỉ cần tài khoản GitHub là có thể triển khai mà không cần máy chủ thì hấp dẫn, nhưng phần dữ liệu vẫn có vẻ chưa ổn định
    Bỏ qua chuyện không có thứ như SQLite, cách gói SQLite thành một khối WebAssembly thì tôi thật sự không thích

    • Web stack rõ ràng có nhiều rắc rối nhỏ, nhưng IndexedDB đã hoạt động khá ổn định
      Tuy vậy vẫn có những giới hạn phiền phức, chẳng hạn khi tạo chỉ mục cho store bằng nhiều khóa thì không thể chỉ định từng khóa theo thứ tự tăng/giảm
      Nếu PWA đã được thêm vào màn hình chính và cài đặt, trình duyệt không được xóa IndexedDB vì những lý do như cập nhật, và thực tế có vẻ các trình duyệt cũng tuân thủ điều đó
      Trải nghiệm phát triển PWA nhìn chung khá lẫn lộn và phụ thuộc rất nhiều vào loại ứng dụng. Với một ứng dụng ghi chú có thể sao lưu và đồng bộ đám mây được mã hóa, PWA có thể là lựa chọn tốt nhất; nhưng nếu cần tích hợp sâu hơn với nền tảng, như truy cập hệ thống tệp, thì tôi sẽ tránh PWA
      Một vấn đề khác là iOS Safari, thiếu nhiều tính năng PWA như đồng bộ nền hay thông báo đẩy ngoại tuyến, và có vẻ khả năng được hỗ trợ trong tương lai cũng thấp
      Tôi tò mò liệu bạn có đang cân nhắc PWA cho một ứng dụng cụ thể nào không
    • Người làm ứng dụng trên trình duyệt phải hết sức cẩn thận với việc khi thiếu dung lượng đĩa, nhiều trình duyệt có thể vứt bỏ một phần bộ nhớ lưu trữ của website
      Bình thường hành vi đó đã khó chịu, nhưng nếu không có bản sao lưu phía máy chủ thì nó vượt xa mức chỉ là phiền toái
      Tôi không chắc lưu ý này có áp dụng cho localStorage không, nhưng theo trải nghiệm của tôi thì nó đã áp dụng với IndexedDB, và có vẻ cả với ứng dụng Electron nữa
    • Tôi cho rằng bộ nhớ ngoại tuyến an toàn nhất là dùng hệ thống tệp của trình duyệt (https://developer.mozilla.org/en-US/docs/Web/API/File_System...) để đặt dữ liệu ngoài tầm kiểm soát của trình duyệt
      Nó hoạt động khá tốt, nhưng nhược điểm là mỗi lần dùng ứng dụng, người dùng phải chọn lại tệp hoặc thư mục, và không có cách nào buộc file picker bắt đầu ở một thư mục cụ thể ngoài các “thư mục quen thuộc”
    • Trên các trình duyệt dựa trên Chromium, giờ đã có thể đặt dữ liệu dưới dạng tệp kiểu ~/.app/app.dat
      Tham khảo: https://developer.chrome.com/docs/capabilities/web-apis/file...
    • Ứng dụng này có vẻ dùng better-sqlite3[0] và lưu cơ sở dữ liệu vào một tệp tên private/unforget.db[1]
      Tôi chưa có kinh nghiệm với SQLite nên không biết tệp đó có dễ bay hơi như localStorage không
      [0] https://www.npmjs.com/package/better-sqlite3
      [1] https://github.com/computing-den/unforget/blob/master/src/se...
  • Trông hay đấy. Nếu góp ý một điều thì tôi nghĩ nên thể hiện rõ hơn luồng viết ghi chú
    Hiện vẫn chưa rõ đó là cách tổ chức các tài liệu Markdown có tiêu đề theo thư mục/cấu trúc phân cấp, hay các “thẻ” không có tiêu đề hoặc tiêu đề là tùy chọn được sắp xếp bằng tag, hay là một tài liệu Markdown dài cứ tiếp tục nối thêm
    Mỗi kiểu đều giống một workflow của các hệ thống ghi chú phổ biến, nên tôi muốn hiểu bạn đã thiết kế và tối ưu cho luồng nào
    Gợi ý rằng bạn bắt đầu là người dùng Google Keep có ích, nhưng tôi từng dùng các tệp văn bản Homebrew, Simplenote, Obsidian, v.v. và cũng có chút khái niệm về Evernote hay OneNote, nên sẽ tốt hơn nếu có thêm vài chỉ dẫn về cách sử dụng

    • Đúng là tôi chưa nghĩ đủ đến việc người dùng có thể chuyển sang từ các hệ thống khác với những khái niệm khác nhau. Tôi sẽ giải thích workflow tốt hơn trong ghi chú demo
      Trả lời nhanh thì thường tôi giữ các ghi chú rất nhỏ, chỉ vài dòng hoặc vài checkbox việc cần làm, và mỗi ý tưởng là một ghi chú. Tuy nhiên nếu một ý tưởng phát triển qua nhiều ngày thì ghi chú đó cũng có thể lớn hơn nhiều, và không có giới hạn kích thước ghi chú
      Có thể đặt tiêu đề ghi chú bằng # như Markdown chuẩn, và nếu để một dòng trống sau dòng đầu tiên thì dòng đầu tiên sẽ tự động trở thành tiêu đề
      Không có khái niệm tag riêng, nhưng bạn có thể viết #someTag rồi tìm kiếm nguyên văn #someTag. Chức năng tìm kiếm là tìm chuỗi con đơn giản trên mọi ghi chú, không có tính năng nâng cao như stemming
    1. Tôi nghĩ càng có nhiều lựa chọn ứng dụng ghi chú tự vận hành thì càng tốt
    2. Lỗi chính tả trên trang demo: PriavcyPrivacy
    3. Tôi tò mò vì sao trên một trình duyệt lại hiện lỗi “Your browser does not support service workers. Please use another browser.” Muốn biết có thể né được không, hay việc dùng service worker là điều thiết yếu tạo nên khác biệt của ứng dụng này
    • Nếu không có service worker thì nó không còn hoạt động ngoại tuyến nữa, và đó là một trong những tính năng cốt lõi
      Tôi nhớ có lúc đang đi du lịch định ghi chú vào Google Keep rồi phát hiện thỉnh thoảng nó không dùng được khi ngoại tuyến
      Tôi tò mò bạn đang dùng trình duyệt nào
    • Một lỗi chính tả nhỏ khác: GitHub falvoredGitHub flavored
  • Tôi thắc mắc liệu có kế hoạch tích hợp thứ gì đó như https://simplemde.com/ khi ghi chú trở nên nặng hơn không
    Với những ghi chú có bảng, v.v., tôi thích một trình soạn thảo WYSIWYG đơn giản hơn là cứ phải để ý cú pháp Markdown

    • Tôi muốn đưa vào trình soạn thảo WYSIWYG, nhưng trong các thử nghiệm ban đầu chưa tìm được cái nào hoạt động tốt trên mọi nền tảng
      Tôi cũng sẽ thử lại việc này
  • Công việc rất tuyệt, hy vọng sẽ còn phát triển hơn nữa
    Tôi nghĩ đến Joplin, và thắc mắc bạn muốn đưa ứng dụng này theo hướng nào

    • Tôi cũng đã dùng Joplin và khá thích, nhưng ngoài việc nó là ứng dụng Electron, còn có vài vấn đề khác
      Ví dụ, workflow không cho cảm giác đủ nhanh. Tôi muốn có thể mở ứng dụng, nhiều nhất là chạm một lần rồi bắt đầu nhập ngay, và có thể nhập nhiều mục việc cần làm mà không phải vào menu hay bấm nút khác. Trên desktop thì dù sao mọi thứ cũng nên xoay quanh bàn phím
      Nói cách khác, tôi muốn UI không cản trở, và tôi nghĩ nhiều ứng dụng ghi chú bỏ lỡ điểm này
      Về định hướng, tôi muốn làm cho việc chuyển từ các ứng dụng khác sang dễ dàng hơn. Hiện đã có nhập từ Google Keep, nhưng cần nhiều hơn thế rất nhiều
      Vì có API công khai, sẽ rất hay nếu có client hoặc tích hợp cho Emacs, VS Code, Vim
      Ngoài ra thì hiện tại nó đáp ứng gần như mọi nhu cầu của tôi
  • Tôi luôn tìm kiếm một kho lưu trữ tri thức có cấu trúc tốt hơn, và bình thường tôi tránh các ứng dụng Electron hoặc JavaScript desktop, nhưng có vẻ phần lớn thử nghiệm lại đến từ phía đó
    Nếu là ứng dụng JavaScript, tôi thắc mắc bạn đã cân nhắc hỗ trợ sơ đồ Mermaid chưa. Dù khá nặng, lý do dạo này tôi dùng Joplin để ghi chú là vì cú pháp Mermaid đã thay đổi cuộc chơi so với Markdown thuần
    https://mermaid.js.org/

  • Gần đây tôi cũng cảm thấy bực bội tương tự với các ứng dụng ghi chú Android, rồi tìm được một ứng dụng khá tuyệt nên muốn giới thiệu
    Đó là ứng dụng tên Zettel Notes[1], hoàn toàn offline, hỗ trợ nhiều tùy chọn đồng bộ, và ghi chú là các tệp Markdown đơn giản được lưu trong thư mục
    [1] https://play.google.com/store/apps/details?id=org.eu.thedoc....

    • Zettel Notes đáng để giới thiệu. Tích hợp Git với SourceHut hơi khó nhằn một chút, nhưng sau khi thiết lập xong thì rất tuyệt, và nó cũng hỗ trợ hầu hết các tính năng Org mà tôi dùng
  • Tôi luôn tìm một ứng dụng ghi chú có thể tự host và trông đẹp trên cả mobile lẫn desktop
    Tôi thắc mắc liệu một ngày nào đó có kế hoạch phát hành Docker container không

    • Nếu việc triển khai trở nên dễ hơn, phát hành Docker container cũng ổn
  • Tuyệt vời. Tôi thắc mắc bạn có thể nói thêm về ứng dụng native không
    Tôi đang tìm thứ gì đó native, nhẹ và nhanh như Apple Notes

    • Đây không phải ứng dụng native mà là ứng dụng web tiến bộ (PWA)
      Tôi đã trực tiếp dùng lâu trên một chiếc iPhone cũ, và nó nhẹ, nhanh
      Để cài đặt, trong Safari hãy vào Chia sẻ → Thêm vào Màn hình chính
  • Tôi thắc mắc bạn dùng gì để đồng bộ
    Tôi đã xem qua nhiều giải pháp CRDT nhưng không chắc nên dùng cái nào, và trong package.json tôi không tìm thấy CRDT hay thư viện đồng bộ cụ thể nào
    Nếu tự đồng bộ, tôi thắc mắc bạn xử lý xung đột thế nào

    • Không phải CRDT, tôi chọn một cách đơn giản hơn nhiều
      if (a.modification_time > b.modification_time) ...
      Chỉ vậy thôi. Cũng như các tính năng khác, ban đầu tôi định triển khai CRDT, nhưng nhận ra thực tế là mình không thấy thiếu nó
      Vì đây không phải trình soạn thảo cộng tác nơi nhiều người dùng cùng chỉnh sửa một ghi chú, CRDT không hữu ích lắm
      Tôi nghĩ trong ứng dụng ghi chú cá nhân, CRDT chỉ trở nên cần thiết khi nhiều thiết bị đều đang offline mà cùng lúc chỉnh sửa cùng một ghi chú