October 16, 2020

For my personally wiki I use wiki.js. Prior, I used to use cherrytree, which is a hierarchical note taker. However, I wanted to use it on mobile, and there is no way to do so with cherrytree files. So I looked for personal wikis. I wanted something that would let me make pages private, as I like to use it as a general purpose journal and it does contain private information. wiki.js seemed like a good solution, and it had good mobile support, or, so I thought.

wiki.js works great on desktop, and you can read pages easily on mobile. The editor on mobile is horrendous. It does not use native editor elements, and so there are many race conditions when typing with a mobile keyboard. It is so laggy and characters do not show up correctly. I have to type very slowly for things to actually work.

My solution to this problem was creating wikijscmd, which is a command line interface for wiki.js. wiki.js has a graphql API with no documentation, but after spending some time figuring out how to use it, I was able to send these queries from python. I wrote a simple wrapper to create, edit, and view single pages, and also get the path tree. It works very well, and I am actually using it right now to draft this post. It opens your VISUAL editor if set (like how git commit does) for editing, and I do prefer to write things in vim. While it still nice to have the wiki on the web where the formatting is nice and browsing is easy, but I like having a command line version too. In the future, I’m planning on writing some email scripts so that I can send new pages via email, which would make mobile editing very straightforward.