An open source stack for developers’ personal notes

6 minute read

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.

QOwnNotes editor's UI.
QOwnNotes editor’s UI.

Storage and synchronization

There are several well-known storage services/protocols:

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

QOwnNotes git configuration.
QOwnNotes settings for git.

2) Navigate to Settings -> Note folders and check the “Use git to keep a local history of your notes” option

QOwnNotes folder configuration.
QOwnNotes folder settings.

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

QOwnNotes scripts configuration.
QOwnNotes scripts settings.

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.

Fasthub for Andoid UI.
FastHub for Android UI.

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!