HN công bố: Unforget, ứng dụng ghi chú ưu tiên ngoại tuyến và mã hóa
(unforget.computing-den.com)- 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
Ý 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 webTí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
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
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
localStoragekhô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ữaNó 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”
~/.app/app.datTham khảo: https://developer.chrome.com/docs/capabilities/web-apis/file...
better-sqlite3[0] và lưu cơ sở dữ liệu vào một tệp tênprivate/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ư
localStoragekhô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
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
#someTagrồ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ư stemmingPriavcy→PrivacyTô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
GitHub falvored→GitHub flavoredTô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 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
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....
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
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
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.jsontôi không tìm thấy CRDT hay thư viện đồng bộ cụ thể nàoNếu tự đồng bộ, tôi thắc mắc bạn xử lý xung đột thế nào
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ú