New Project: Accessing my Org-roam notes everywhere
819 words, ~ 4 min reading time
Currently my information storage “strategy” is a disaster. I have four (at least I think so, maybe even more) places where I write down information:
- A single org file called
notes.orgwhich is synchronized across my devices (including mobile) using Syncthing. This contains 14 first-level Org headings and apparently 617 headings in total.
- A Org-roam directory which is also synchronized across all devices using Syncthing. Currently it contains 266 notes.
- A private MoinMoin wiki running on my VPS. Most of the pages there I have not touched in a long time and the only thing I still actively use it for is storing recipes (where I also will move to another solution, but not org based since multiple people need to work with it) and the documentation for my self-hosted services.
- The Notes app in my Nextcloud instance. There is one shared note and five other more or less useful ones.
Sounds funny? Well… There is a tiny problem: I have no good structure where I put or find what kind of information. While I started using Org-roam for my bachelor thesis I added also various other things in there afterwards. The
notes.org file contains something from nearly every possible topic: from cocktail recipes over server administration to conference notes. A similar interesting collection of randomness is also presented in my wiki. Only the Notes app is quite empty. There is one shared note that perhaps won’t go anywhere else and a few other notes that I created there for perhaps no reason at all and that I should move to one of the other three blackboxes sooner or later.
But even with “only” three systems this is not something to work with. That is why I set myself the goal to move every note into Org-roam. Why? Mainly because I quite like the approach to only store and link stuff without thinking too much about hierarchy. Time that is invested into thinking where to store the note instead of writing it is IMO wasted.
There is only one problem that I need to solve before I migrate everything. Although the notes are (in theory) also available on my tablet and my smartphone I cannot really access them. Importing all the files into Orgzly would either not work or would make the app useless for its original purpose (agenda and todos). Accessing them via an Emacs instance in Termux would work but is much too cumbersome and also not usable with touch gestures. To make it short: I need some other way.
I looked a bit around yesterday and found some solutions like using org-publish, doing crazy shit with ox-hugo or other dark magic. I also had the idea to use org-roam-ui, the frontend for working directly with the notes made by the Org-roam team. While these are certainly really good solutions especially for a research knowledge base I think that my requirements are a little bit different. I currently don’t plan to put my notes in Git (I think that I would be too impractical) and I expect that I have at least some regular situations where I need the notes that I wrote at my computer nearly instantly available from a mobile device. These two requirements together rule out the usage of any continuous integration system, be it based on org-publish, ox-hugo or something else. Besides that my requirements are not that high. In beginning I don’t need a graph and even backlinks are something that I don’t think are too important when viewing the notes on the go. What I want is a lightweight web application with a search (filename/title and fulltext), potentially filters for filetags and a nice display of a note.
After I searched and my requirements were clear I decided to start building something myself. So yesterday evening I started developing a proof-of-concept app. As a techstack I plan to use Go for the backend and perhaps Alpine.js for the frontend, combined with some CSS framework (at least for the start, at the end I will do a complete custom design as always) which I did not choose yet. Maybe I will try tailwindcss for this. The part of the backend I already wrote is currently more or less just a bare Go HTTP server as a wrapper around some bash commands, e.g.
ls /my/roam/dir/*.org or
grep -rl search /my/roam/dir. I have my doubts that this will function well if I want more features and that I need to switch to some indexing sooner or later but for the proof-of-concept it should be enough.
Sadly as of now the project is way too crappy to publish it somewhere but during the next weeks I will continue working on it and hope to have something ready to use and show at the end of February (there’s no year mentioned for a reason… ;) ). I’ll keep you posted!
Day 4 of the #100DaysToOffload challenge.