Notedeck Saver

Updated: 08 Feb 2022

Note: I haven't published the code yet! I'll update this page when I do, since it's something I'm actively working on.

Notedeck Saver is a Tiddlywiki saver contained in a single, small Python script. It is directly inspired by the very sleek Ruby saver written by Jim Foltz. It can be used completely independently of the Notedeck Wiki.

Background

I've tried various Tiddlywiki savers over the years, and some came very close to clicking, and I even stuck with a couple of them for more than a month. But nothing really combined exactly what I wanted. The closest was a saver written by Jim Foltz in Ruby. But the handling of backups required manual maintenance or a cron job, neither of which I thought were needed. The script could handle this itself. I also wanted to easily manage more than one wiki.

So I used the Ruby script for a while. This worked out of the box on my work Macbook, where I still use it. But on Linux (all my other machines), newer versions of Ruby have removed Webrick. Having to pull in a gem for Webrick before the single-file script would work was not ideal, but I also wanted to add some features to the script. To kill two birds with one stone, I rewrote the script in Python 3, which has an HTTP web server, and also updated the script to add new features.

Features

Notedeck is still young, but has a few neat features I haven't seen elsewhere:

Cross-Platform (desktop, mobile)

It runs on Android (via Termux), Linux, and MacOS with Python 3. I'm hoping to make it available on Android via something like python-for-android.

Multiple Wikis

Notedeck Saver can serve as a "wikifarm". This allows it to be run in a directory of TiddlyWikis (ending with .html), and it will provide a way to select among them via a simple index page hosted at http://localhost:9000.

Auto-managed Backups

It also automatically manages backup. Every wiki gets a dedicated backup directory under backup, and backups beyond a certain count (default: 5) get pruned. This is a basic first-in-first-out backup strategy.