NoteSelf – TiddlyWiki with CouchDB backend

I have been using TiddyWiki for a long time now. It's a simple HTML application that you can open in a browser and start adding your notes. Once you save, the HTML will contain both code and data. You can send that HTML page to your friends by email to share the notes or put it on Dropbox/Drive/web for sharing. It's as simple as that.
TiddlyWiki, a unique non-linear notebook for capturing, organising and sharing complex information. I have used it to make class/workshop notes. So I can send it to all participants just by attaching it to an email. Best part is participants can download the attached TiddyWiki from email or web with all the content and code. They can add their own notes to it if they like all completely off-line. They can also save and share it further if they like.

I use Zim wiki on my desktop. Even though I sync it using GIT across my machines. It's not convenient to use or edit on the go or on phones. I wanted to have notes on the go. Something like Evernote but FOSS. Over the years TiddlyWiki has been rearchitected and now it's more useful than before. With some plug-ins1 I can edit the content in Markdown. I can manage tasks etc. So it's become much faster, cleaner and very hackable. So naturally I took a look at it again, specially looking for features for this use-case, but without using Dropbox or Drive for syncing. That's when I found NoteSelf.

NoteSelf is built on top of TiddlyWiki, a powerful, free, highly customizable and open-source personal wiki. We took the best of it, it's powerful customization system, and mixed it with one of the best embedded databases available, PouchDb, to bring in the synchronization capabilities you need.

CouchDB settings in NoteSelf.

CouchDB settings in NoteSelf.

Since I have been using CouchDB as my personal back-end for many applications. NoteSelf fit all my requirements. Now I have notes on the go accessible anywhere via browser. Works off-line, syncs when it gets internet connection. Since CouchDB stores everything as simple JSON, hacking or re-purposing this the system is very easy too. A single piece of information in TiddyWiki is called Tiddler. In CouchDB this Tiddler is just an independent JSON document with well defined structure. So now I have batch applications that adds Tiddlers to my Wiki from the back-end. So when I open my NoteSelf I see new notes created by a batch application based on some events. For example when I star a podcast episode, it gets added to my NoteSelf as a note with some details so when I open the Notes, I have a Tiddler waiting for me, so I will never forget to make notes.

Here is an example Tiddler JSON stored in the CouchDB. Attributes like period, podcast, link and time are additional user defined attributes added by my batch application. Rest of them are standard Tiddler fields. As of now there is only one limitation. _id and title should be same. Though this limitation has not hurt me yet, but it makes it difficult to have two Tiddlers with the same title.

{
  "_id": "Episode 149: Here’s how the GDPR will change IoT – IoT Podcast – Internet of Things",
  "_rev": "5-2f1e8b8ccc8814bc2b8f79e4c9b690fd",
  "fields": {
    "created": "20180206004520152",
    "creator": "admin",
    "title": "Episode 149: Here’s how the GDPR will change IoT – IoT Podcast – Internet of Things",
    "tags": [
      "iotpodcast",
      "listeningnow"
    ],
    "modified": "20180206011620388",
    "modifier": "admin",
    "type": "text/x-markdown",
    "period": "50",
    "podcast": "iotpodcast",
    "link": "https://iotpodcast.com/2018/02/episode-149-heres-how-the-gdpr-will-change-iot/",
    "text": "- My notes about this podcast\n- can add [links](https://thejeshgn.com) too",
    "time": "2018-02-05T10:14:05Z"
  }
}

CouchDB databases are cheap and are easy to backup. Hence now I have multiple notes with different databases as back-end. They are backed-up as simple JSON documents, easy to retrieve and fix if the situation demands. Now all I need is an Android application with a native UI, though I must say NoteSelf runs really well on a mobile browser.

  1. Once installed it will become part of HTML page

6 Responses

  1. Danielo says:

    Hey!
    Danielo here, the creator of NoteSelf.
    Glad you liked it, and thank you very much for writing an article about it.
    It is true that you can not have several tiddlers with the same title, but this is a limitation of tiddlywiki. I decided to keep this limitation for compatibility reasons, but I don’t discard to support it on the future, when TW and NS differs more than now.
    If you want to give it a go, there is an android application avaliable. It is not on the market, but you can install it if you wish. Currently it has some limitations, for example the credentials and not stored and you may need to login from time to time. It is here: https://github.com/NoteSelf/android-app/releases

    Regards

    • Danielo says:

      I saw that you already know about it, hahaha. I didn’t noticed you are the same person commenting on the android app repository

    • Thejesh GN says:

      I think you did the right thing. Compatibility is very important. And the limitation is not a big deal. IMHO it’s important to keep NS close to TW as much as possible.

      Will try the android app.

  2. Tomer says:

    Which couch db hosting do you use? Can I host it freely?