An open source stack for developers’ personal notes
Personal notes don’t usually need scrupulous reviews, they are quick and dirty by nature. You just need to create them without too much effort and then access them from different devices.
So, in my opinion, a stack that lets you easily manage personal notes must include:
- A comfortable language and a lightweight editor. This combination lets you create new notes with speed.
- A remote storage system, in order to access your notes from different devices and have a reliable backup of your data.
- A way to download/upload your notes to the remote storage system.
Of course, the more open source components you are able to pick, the better.
Language and editor
Markdown solves the problem of quickly writing formatted notes, I’ve been very happy with it. Another big advantage is that Markdown is just plain text, so it is compatible with virtually any text editor.
There are several open source notes editors that support Markdown, including:
- Joplin, an editor with modular synchronization capabilities.
- Visual Studio Code, lets you do almost anything with the right extension.
- Simplenote, an editor with a built-in synchronization feature. It’s quick and easy to get started with Simplenote.
- QOwnNotes, an editor which formats markdown as you write it. This was the killer feature for my use case: it makes writing quick notes a real pleasure. Also, it has a scripting engine that can execute user-made scripts.
My choice has been QOwnNotes. I really like the idea behind the editor and its high degree of customization and extensibility.
Storage and synchronization
There are several well-known storage services/protocols:
- Google Drive
- Dropbox
- NextCloud server (can be self-hosted)
- git server (can be self-hosted)
Personal notes tend to be small files which mainly consist of text. You need to store a collection of those. Seems like a very good fit for git!
I’m using a private repository in my GitHub account to store my notes, but you can easily swap GitHub with your self-hosted git server.
Also, QOwnNotes has built-in support to commit changes to your notes in a local git repository. To enable automatic commits in QOwnNotes:
1) Navigate to Settings -> General -> Git versioning
in order to configure the integration with git
2) Navigate to Settings -> Note folders
and check the “Use git to keep a local history of your notes” option
At this point, you can use some QOwnNotes scripts I wrote to automatically push to a remote repository the commits made by QOwnNotes. These scripts completely automate the whole notes synchronization workflow.
Notice At the moment, I have tested these scripts only on Windows.
To add my scripts to your QOwnNotes installation:
1) Download them from their GitHub repository
2) Navigate to Settings -> Scripting -> Add script -> Add local script
and select the files you just downloaded. They will be added as scripts to QOwnNotes
Bonus: Mobile clients
Since QOwnNotes preserves files as plain text and git is just a protocol, you are free to use any client that supports reading text files from a git repository to access your personal notes.
This means you can even use mobile git clients, such as FastHub (which is also open source), to work with your notes from your smartphone.
To sum up
This is my stack of technologies for personal notes management:
- Language: Markdown
- Editor: QOwnNotes with git commits enabled and scripts for automatic
git push
operations - Storage: GitHub account (you can easily swap this component with your self-hosted git server)
- Synchronization: git
- Mobile client: FastHub for Android
This stack is developer-friendly, free and open source. Try it out!