(2 minute read)
I am proud to announce the release of Heartnotes, an offline, encrypted personal diary app for desktop, built using Electron and React. Heartnotes has been a labour of love for a couple of months now, in between various other projects, and it's my first desktop app for any platform.
What does it do exactly? It allows you to keep a personal diary - one you can write to even when offline. All your data is encrypted (AES-256) by a password your provide and stored within a file which you can then backup any you wish (e.g. using Dropbox).
All crypto operations are done inside Web workers to keep the UI responsive. I use operative to schedule such jobs.
Gulp is used for live-reload development as well as to package the release version of the app.
The app works totally offline. Neither your data nor your password leave your computer. An encryption key is derived from your password using PBKDF2 as follows:
The crypto algorithms are provided by SJCL, a well established JS encryption library.
An attacker who obtains a copy of the file would need to run a brute-force attack using the salt and iteration count contained within in order to obtain your password and decipher your data. Though not impossible, this requires a considerably higher time investment than typical "secure" personal diary software which claims to protect your diary with a password but doesn't actually use encryption and/or uses it properly.
I used ckEditor to provide editing functionality. I tried a number of other open source editor libraries but ckEditor was the only one which gave me a bug-free experience. However, integration was a pain. I'm already looking ahead to using a better editor, esp. one which will allow me to use React Native and build native mobile apps. Right now AlloyEditor - which is built on ckEditor - looks promising.