Background
Permalink to heading BackgroundWhen I started this project, I was disillusioned the most by two things from the plethora of note-taking apps: 1) The disconnect in writing Markdown leading to overall non-intuitive experience, and 2) almost all of them were a desktop app based on the resource-hungry Electron. This two combined to give me a bad experience on my current 2018 Thinkpad T-series laptop.
I wanted a note-taking app that's open and portable(Markdown and web-based), private(no growth hacks and profiteering shenanigans), intuitive writing experience(absolute minimal disconnect in mental model when writing, no split-screen), fast on huge document, lightweight, and simple. And building on Web while focusing on web perf and UI/UX would be a big part in checking off those boxes.
But when I started working on intergrating Zuunote as a web app with user's local Markdown files, I decided to abandon Web as the distribution channel for Zuunote.
Zuunote must be private, fast, and with great intuitive UI/UX for everyone. These goals motivate all my decisions for Zuunote.
And the current landscape to integrate with user's local files doesn't allow me to achieve those goals:
-
File System Access API
- Pro - Read and write directly on user's local files and directory.
- Con - Only supported in Chromium-based desktop browsers. Renaming/moving directories can be slow - copy and remove recursively.
-
Origin Private File System
- Pro - Much broader browser support than File System Access API.
- Con - To get updated files, user have to probably ZIP and download it. Renaming/moving directories can also be slow.
-
File and Directory Entries API
- Pro - Broader browser support than File System Access API.
- Con -
moveTo()API and more have been deprecated in Firefox.
-
IndexedDB
- Pro - Broadest browser support.
- Con - Will be very awkward to emulate a file system. Also won't be as user friendly and performant as File System Access API.
I was at a lost how to move forward in the interest of cross-browser support and user-friendliness. It appeared to me that packaging Zuunote as a desktop app was the only way forward.
Benefits of desktop app
Permalink to heading Benefits of desktop appWhile rationalizing this decision, I came to realize that being a desktop app actually ain't that bad.
- Its
.exefile is portable. Reminds me of how Cuban circumventing state censorship by transfering files in USB drives. Zuunote being a desktop app would be able to participate in that action. - Fast user experience. Tauri has native interface to user's local files. It's as fast as it gets.
- True local and offline. You don't need internet to run a desktop app. Reminds me of the days installing apps and games from CDs. No accounts and internet needed. No bullshits and tricks. This resonates with me strongly.
- Resilient. The internet and browser ecosystem on which web apps depend are massively complex, brittle, and controlled by a handful of for-profit businesses. Whereas, a desktop app can be immune to all that noise. Plus, it wins hands-down in an off-grid environment. Sure getting updates sucks, but you will get it when internet comes back online and distributes it offline guerrilla style. Or hell even no need internet at all and just spread the executable file in USB drives.
And being based on Tauri's small footprint would make those benefits even more real.