HN เปิดตัว: Unforget แอปจดโน้ตแบบออฟไลน์ก่อน พร้อมการเข้ารหัส
(unforget.computing-den.com)- Unforget เป็นแอปจดโน้ตแบบมินิมอลที่เขียนโน้ตลงในเครื่องก่อน แล้วค่อยใช้งานต่อผ่านการซิงก์แบบเข้ารหัส โดยชูทั้งความเป็นส่วนตัวและการใช้งานข้ามอุปกรณ์
- มาในรูปแบบ Progressive Web App จึงใช้งานได้บนเบราว์เซอร์ เดสก์ท็อป และมือถือ โดยทำงานได้โดยไม่ต้องพึ่ง Electron.js
- รองรับการเขียน Markdown, การส่งออกในรูปแบบ JSON แบบคลิกเดียว, API แบบเปิด, และมีตัวเลือกทั้ง self-hosting กับคลาวด์
- สมัครใช้งานฟรีเพื่อใช้การสำรองข้อมูลและการซิงก์บนคลาวด์ที่เข้ารหัสอย่างสมบูรณ์ได้ และไม่ต้องใช้อีเมลหรือหมายเลขโทรศัพท์
- รองรับการนำเข้าจาก Google Keep, Apple Notes และ Standard Notes แต่ความสามารถและวิธีติดตั้งจะแตกต่างกันไปตามเบราว์เซอร์
โน้ตแบบออฟไลน์ก่อนและการควบคุมข้อมูล
- Unforget เป็นแอปจดโน้ตแบบออฟไลน์ก่อนที่เรียบง่าย และมีการซิงก์แบบเข้ารหัสตั้งแต่ต้นทางถึงปลายทาง
-
รูปแบบแอปและสภาพแวดล้อมการใช้งาน
- เป็น Progressive Web App ที่ใช้งานได้บนเบราว์เซอร์ เดสก์ท็อป และมือถือ
- ทำงานได้โดยไม่ต้องใช้ Electron.js และรองรับการติดตั้งแบบคลิกเดียวตามตัวเลือก
- ชูการออกแบบที่ให้ความสำคัญกับความเป็นส่วนตัวเป็นอันดับแรก และเป็นโอเพนซอร์สภายใต้สัญญาอนุญาต MIT
-
การเขียน การย้ายข้อมูล และการส่งออก
- รองรับการเขียน Markdown
- สามารถนำเข้าจาก Google Keep, Apple Notes และ Standard Notes ได้
- สามารถส่งออกข้อมูลโน้ตเป็นรูปแบบ JSON ได้แบบคลิกเดียว
-
การซิงก์และการขยายความสามารถ
- ผ่านการสมัครฟรี สามารถสำรองโน้ตขึ้นคลาวด์ในสถานะที่เข้ารหัสสมบูรณ์ และซิงก์ระหว่างหลายอุปกรณ์ได้
- การสมัครไม่ต้องใช้อีเมลหรือหมายเลขโทรศัพท์
- มีให้เลือกทั้ง self-hosting และคลาวด์
- สามารถสร้างไคลเอนต์ของตนเองได้ผ่าน API แบบเปิด
วิธีติดตั้งตามแต่ละเบราว์เซอร์
- Unforget ใช้งานได้ทันทีจากเบราว์เซอร์ และวิธีติดตั้งจะแตกต่างกันไปตามสภาพแวดล้อม
-
รองรับการติดตั้ง
- Chrome: ใช้ไอคอนติดตั้งในแถบ URL
- Edge: ใช้ไอคอนติดตั้งในแถบ URL
- Android Browser: เมนู → Add to Home Screen
- Safari Desktop: Share → Add to Dock
- Safari iOS: Share → Add to Home Screen
- Firefox Android: ใช้ไอคอนติดตั้งในแถบ URL
-
ข้อจำกัดการติดตั้ง
- Firefox Desktop ไม่สามารถติดตั้งได้
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
อยากรู้ประสบการณ์ของคนที่เคยทำ PWA แบบ offline-first
แนวคิดที่ใช้เว็บเป็นเพียงช่องทางกระจายแอป และใช้เบราว์เซอร์เป็นสภาพแวดล้อมรันไทม์นั้นน่าสนใจ แต่กังวลเรื่องความจุกจิกของ storage ฝั่ง local
เพราะข้อมูลไม่ได้ปรากฏเป็นไฟล์อย่าง
~/.app/app.datเลยให้ความรู้สึกว่า “ถ้ามองไม่เห็นก็อาจลืมไปได้” และยังติดใจเรื่องความเป็นไปได้ที่ข้อมูลจะหายไปกะทันหันเพราะเบราว์เซอร์อัปเดต รวมถึงความซับซ้อนในการจัดการ schema versioning ภายใต้โมเดลพื้นฐานของเว็บตอนย้ายไปคอมพิวเตอร์เครื่องใหม่ การพกพาข้อมูลก็เป็นปัญหาเช่นกัน และแม้จุดที่ถ้ามีแค่บัญชี GitHub ก็ deploy ได้โดยไม่ต้องมีเซิร์ฟเวอร์จะน่าสนใจ แต่ฝั่งข้อมูลยังดูไม่นิ่ง
ต่อให้มองข้ามเรื่องที่ไม่มีอะไรแบบ SQLite ไป วิธีที่เอา SQLite ไปมัดรวมเป็นก้อน WebAssembly ก็ไม่ค่อยถูกใจอยู่ดี
อย่างไรก็ตาม มีข้อจำกัดน่ารำคาญอยู่บ้าง เช่น เวลาสร้าง index ให้ storage ด้วยหลาย key กลับกำหนดแต่ละ key เป็นเรียงจากน้อยไปมาก/มากไปน้อยไม่ได้
ถ้าเพิ่ม PWA ลงหน้า home เพื่อ install แล้ว เบราว์เซอร์ไม่ควรลบ IndexedDB ด้วยเหตุผลอย่างการอัปเดต และในทางปฏิบัติเบราว์เซอร์ต่าง ๆ ก็ดูเหมือนจะทำตามนั้น
ประสบการณ์พัฒนา PWA โดยรวมมีทั้งดีและแย่ และขึ้นกับประเภทแอปมาก ถ้าเป็นแอปจดบันทึกที่ทำ encrypted cloud backup และ sync ได้ PWA อาจเป็นตัวเลือกที่ดีที่สุด แต่ถ้าต้องผสานกับแพลตฟอร์มลึกกว่านั้น เช่น เข้าถึง file system ก็คงเลี่ยง PWA
อีกปัญหาหนึ่งคือ iOS Safari ซึ่งขาดฟีเจอร์ PWA หลายอย่าง เช่น background sync หรือ offline push notification และดูไม่น่าจะรองรับในอนาคตด้วย
อยากรู้ว่ากำลังพิจารณา PWA สำหรับแอปบางตัวอยู่หรือเปล่า
ปกติก็น่าหงุดหงิดอยู่แล้ว แต่ถ้าไม่มี backup ฝั่งเซิร์ฟเวอร์ เรื่องนี้จะเกินกว่าคำว่าน่าหงุดหงิดธรรมดา
ไม่แน่ใจว่าข้อควรระวังนี้ใช้กับ
localStorageด้วยหรือไม่ แต่จากประสบการณ์เคยเกิดกับ IndexedDB และดูเหมือนจะเกิดกับแอป Electron ด้วยใช้งานได้ค่อนข้างดี แต่ข้อเสียคือผู้ใช้ต้องเลือกไฟล์หรือไดเรกทอรีใหม่ทุกครั้งที่ใช้แอป และไม่มีวิธีบังคับให้ file picker เริ่มจากไดเรกทอรีเฉพาะที่ไม่ใช่ “ไดเรกทอรีที่รู้จักกันดี” ได้
~/.app/app.datได้แล้วอ้างอิง: https://developer.chrome.com/docs/capabilities/web-apis/file...
better-sqlite3[0] และเก็บฐานข้อมูลไว้ในไฟล์ชื่อprivate/unforget.db[1]ผมไม่มีประสบการณ์กับ SQLite เลยไม่รู้ว่าไฟล์นั้นจะ volatile เท่า
localStorageหรือเปล่า[0] https://www.npmjs.com/package/better-sqlite3
[1] https://github.com/computing-den/unforget/blob/master/src/se...
ดูดีเลย ถ้าจะเสนออย่างหนึ่งคืออยากให้แสดง flow การเขียนบันทึก ให้ชัดขึ้น
ตอนนี้ยังไม่ชัดว่าเป็น Markdown document ที่มี title และจัดระเบียบด้วย folder/โครงสร้าง hierarchy หรือเป็น “card” ที่ไม่มี title หรือ title เป็น optional แล้วจัดด้วย tag หรือเป็น Markdown document ยาว ๆ ที่ค่อย ๆ ต่อเติมไปเรื่อย ๆ
แต่ละแบบคล้าย workflow ของระบบจดบันทึกกระแสหลักต่าง ๆ เลยอยากเข้าใจว่าออกแบบและ optimize flow แบบไหนไว้
คำใบ้ว่าผู้สร้างเริ่มจากการเป็นผู้ใช้ Google Keep นั้นช่วยได้ แต่ผมเคยใช้ไฟล์ข้อความแบบ Homebrew, Simplenote, Obsidian ฯลฯ และพอมีแนวคิดเกี่ยวกับ Evernote หรือ OneNote อยู่บ้าง จึงอยากให้มีป้ายบอกทางเรื่องวิธีใช้งานเพิ่มอีกสักหน่อย
ตอบแบบสั้น ๆ คือ ปกติจะเก็บโน้ตขนาดเล็กมาก ๆ แค่ไม่กี่บรรทัดหรือ checkbox สำหรับสิ่งที่ต้องทำ และหนึ่งไอเดียต่อหนึ่งโน้ต แต่ถ้าไอเดียบางอย่างเติบโตขึ้นตลอดหลายวัน โน้ตนั้นก็อาจใหญ่ขึ้นมากได้ และไม่มีการจำกัดขนาดโน้ต
สามารถกำหนด title ของโน้ตด้วย
#เหมือน Markdown มาตรฐานได้ และถ้าเว้นบรรทัดว่างหลังบรรทัดแรก บรรทัดแรกจะกลายเป็น title โดยอัตโนมัติไม่มีแนวคิดเรื่อง tag แยกต่างหาก แต่สามารถเขียน
#someTagแล้วค้นหา#someTagได้ตรง ๆ ฟีเจอร์ค้นหาเป็นการค้นหา substring แบบง่ายในโน้ตทั้งหมด ไม่มีฟีเจอร์ขั้นสูงอย่าง stemmingPriavcy→Privacyจำได้ว่าเคยพยายามจดโน้ตใน Google Keep ระหว่างเดินทาง แล้วบางครั้งพบว่าใช้แบบ offline ไม่ได้
อยากรู้ว่าใช้เบราว์เซอร์อะไรอยู่
GitHub falvored→GitHub flavoredสงสัยว่ามีแผนจะผสานรวมอะไรอย่าง https://simplemde.com/ หรือไม่ เมื่อโน้ตเริ่มซับซ้อนขึ้น
ถ้าเป็นโน้ตที่มีตารางและองค์ประกอบอื่น ๆ ผม/ฉันชอบ ตัวแก้ไขแบบ WYSIWYG ที่เรียบง่ายกว่า มากกว่าต้องคอยใส่ใจไวยากรณ์ Markdown ตลอดเวลา
จะลองพยายามเรื่องนี้ดูด้วย
เป็นงานที่ยอดเยี่ยม และหวังว่าจะพัฒนาต่อไปอีก
นึกถึง Joplin ขึ้นมา เลยสงสัยว่าตั้งใจจะพาแอปนี้ไปในทิศทางไหน
เช่น เวิร์กโฟลว์ยังไม่รู้สึกว่าเร็วพอ ควรจะเปิดแอป แตะไม่เกินหนึ่งครั้ง แล้วเริ่มพิมพ์ได้ทันที และควรป้อนรายการสิ่งที่ต้องทำหลายรายการได้โดยไม่ต้องไปที่เมนูหรือกดปุ่มอื่น บนเดสก์ท็อปสุดท้ายแล้วทุกอย่างก็ควรเน้นคีย์บอร์ดเป็นหลัก
กล่าวคืออยากให้ UI ไม่เข้ามาขวาง และมองว่าแอปจดโน้ตหลายตัวพลาดตรงนี้
ในแง่ทิศทาง อยากทำให้ย้ายมาจากแอปอื่นได้ง่ายขึ้น ตอนนี้มีการนำเข้าจาก Google Keep แล้ว แต่ควรมีได้มากกว่านี้มาก
มี API สาธารณะอยู่แล้ว ก็คงดีถ้ามีไคลเอนต์หรือการผสานรวมกับ Emacs, VS Code, Vim ออกมา
นอกเหนือจากนั้น ตอนนี้ก็ตอบโจทย์ความต้องการของผม/ฉันแทบทั้งหมดแล้ว
มองหา คลังความรู้แบบมีโครงสร้าง ที่ดีกว่าอยู่เสมอ และปกติจะเลี่ยงแอป Electron หรือ JavaScript บนเดสก์ท็อป แต่ดูเหมือนการทดลองส่วนใหญ่จะมาจากฝั่งนั้น
ถ้าเป็นแอป JavaScript สงสัยว่าเคยพิจารณารองรับไดอะแกรม Mermaid หรือไม่ แม้จะหนัก แต่เหตุผลที่ช่วงนี้ใช้ Joplin สำหรับจดโน้ตก็เพราะไวยากรณ์ Mermaid เปลี่ยนเกมเมื่อเทียบกับ Markdown ล้วน ๆ
https://mermaid.js.org/
ช่วงหลังรู้สึกอึดอัดกับแอปจดโน้ตบน Android ในลักษณะคล้ายกัน แล้วก็เจอแอปที่ค่อนข้างยอดเยี่ยม เลยอยากแนะนำ
เป็นแอปชื่อ Zettel Notes[1] ทำงานออฟไลน์เต็มรูปแบบ รองรับตัวเลือกซิงก์หลายแบบ และโน้ตเป็นไฟล์ Markdown ธรรมดาที่เก็บอยู่ในไดเรกทอรี
[1] https://play.google.com/store/apps/details?id=org.eu.thedoc....
มองหาแอปจดโน้ตที่โฮสต์เองได้และดูดีทั้งบนมือถือกับเดสก์ท็อปอยู่เสมอ
สงสัยว่ามีแผนจะปล่อย Docker container ในสักวันหนึ่งหรือไม่
ยอดเยี่ยม อยากทราบข้อมูลเพิ่มเติมเกี่ยวกับแอปเนทีฟ
กำลังมองหาอะไรที่ เนทีฟ เบา และเร็ว เหมือน Apple Notes
ใช้งานเองบน iPhone รุ่นเก่ามานานแล้ว เบาและเร็ว
ถ้าจะติดตั้ง ให้ไปที่ Safari แล้วเลือกแชร์ → เพิ่มไปยังหน้าจอโฮม
สงสัยว่าใช้ตัวไหนสำหรับการซิงก์
เคยดูโซลูชัน CRDT หลายตัว แต่ยังไม่แน่ใจว่าควรใช้อะไร และใน
package.jsonก็ไม่เจอ CRDT หรือลائبรารีซิงก์เฉพาะตัวใดถ้าซิงก์เอง อยากรู้ว่าจัดการ conflict อย่างไร
if (a.modification_time > b.modification_time) ...แค่นี้ทั้งหมด เหมือนฟีเจอร์อื่น ๆ เดิมทีตั้งใจจะทำ CRDT แต่พอใช้งานจริงก็พบว่าไม่ได้รู้สึกขาด
เพราะไม่ใช่ตัวแก้ไขแบบทำงานร่วมกันที่ผู้ใช้หลายคนแก้ไขโน้ตเดียวกัน CRDT จึงไม่ได้มีประโยชน์มากนัก
ในแอปจดโน้ตส่วนตัว กรณีที่จำเป็นต้องใช้ CRDT น่าจะมีแค่เวลาที่อุปกรณ์หลายเครื่องออฟไลน์พร้อมกัน แล้วแก้ไขโน้ตเดียวกันในเวลาเดียวกันเท่านั้น