Travel Planning with Markdown

There are a lot of productivity tools out there and I have spent quite an amount of time tweaking and tuning my personal set-up. In the end, the most simple solutions are what works best for me. While I resorted back to a simple CalDav-server on Nextcloud for my to-do lists, I take all my personal notes in plain Markdown files to make them easily transferrable independent of any proprietary app or solution. When it comes to editing those files, however, I like to enjoy the convenience of a proper editor. Not because I don’t want to write Markdown syntax (I do), but because many editors offer advanced visualization of notes, e.g. with linking or graph views. Since I am currently planning a backpacking vacation, I am of course also taking notes for this in the same central repository!

Obsidian for travel planning

My primary Markdown editor of choice is Obsidian. I briefly referred to this in my post about this [[homepage]]. I am currently using the Mac app, but it is available on all major platforms - I will also install it on my Chromebook soon via AppImage on Linux. Obsidian is heavily documented on the web with lots of tutorials, therefore I will focus on a single use case in this post.

Storing notes in Obsidian is often done using the Zettelkasten methodology. While I do not follow this strictly, I try to follow the corresponding principle of atomic notes, meaning that individual notes (= Markdown files) should only cover one area of interest, and then reference each other. Taking notes with software (compared to a physical notebook) has the big advantages that these references can be created using links, instead of creating indices in a folder. For my travel planning, the same principle applies: I create separate notes for each location I am planning to visit, take specific notes on accommodation, highlights etc. into these individual notes, and link them together where applicable (e.g. by referencing alternative locations in case we want to change our route as we go along). Where things get fun is combining this with Obsidian plug-ins now. In particular, I am using the Obsidian-itinerary plug-in to create events on those individual location pages.

One example: In case I want to visit the festival of lights while in Chiang Mai this year, I could include a code block like this:

title: Lichterfest
start: 2022-11-08T16:00
end: 2022-11-09T23:00
color: orange

This would then render in my note like this:


These events are now created for all different kinds of activities within those individual notes: for flights, train travel, cooking classes… you name it - thus creating a rather pleasing itinerary for each location. What is really cool though, is that I can now create an additional meta-note combining all these different events into a trip calendar!

The different options to create such a calendar are explained in the plug-in’s Github repo linked above, but basically you only need to insert a single code block into a separate note, passing as many individual travel notes as you like as source parameters:

initialDate: 2022-11-01
- "[[Reisezeiten]]"
- "[[Bangkok]]"
- "[[Chiang Mai]]"

While you could of course just create separate calendar entries in whatever calendar app (or notebook) you are already using directly, I really prefer this approach in Obsidian, since it lets me work with my existing notes, keeping all required information together. When I update individual location notes, the calendar now gets updated automatically! If it was possible to sync this to an external calendar vial CalDav that would be the cherry on top, but for now that is unfortunately not possible.

Backup of notes

One of the biggest advantages of taking notes in plain Markdown files is the ease of backing up these files. Since they are basically just a folder on my hard drive, I can just copy & paste them anywhere I want. An even better solution, in my opinion, is to back these files up in a git repository. This git repository can then be synced with all my devices, e.g. with iOS through Working Copy. There are some tutorials for Android as well, but these require cronjobs in a Terminal app - so far I have not implemented that approach, since I rarely consume these notes from my phone. In case I do need mobile access I could still read the Markdown files through the git interface directly, either via the web frontend or an app like GitNex.

Since my notes are personal, I do not want to host such a repository outside of my home network (I know the cloud is safe and e-mail is even more personal - but still…). For this reason, I have set up a lightweight Gitea container on my server and use the Obsidian-git plugin to periodically backup my notes to this repo. One added layer of security is the connection type: Since I do not expose my notes to the public internet, the git container is not available through my reverse proxy. Instead, access is protected with Tailscale, requiring P2P-Wireguard-tunnels from my end devices to pull from and push to the repository.

Since the git container is hosted with a persistent volume, I am also able to backup this volume containing all notes to an encrypted external hard drive and my backup NAS running Minio object storage via duplicati (running in another container). In case something breaks, I can spin up a new container anywhere and just mount the volume again to regain access.

Alternatives I have considered

Again, this solution might sound a little over-engineered, but in this case I disagree. While there are simpler solutions to storing notes, none I have considered offer the same level of flexibility and security at the same time without relying on external services. If I hosted my notes in a Dropbox or even Nextcloud folder, they might get synced but not easily accessible from all devices; also, I would lose the versioning that git offers me. The one-time effort to get started might seem daunting, but this is running flawlessly for a couple of months for me now.

For the travel planning part itself, there are certainly additional features that could be added to the setup. One thing I had considered was a map view in Obsidian, or using the next iteration of Nextcloud Maps to create an interactive travel map. Also, I could add GPX routes if I recorded them during our travel (which I probably won’t). Also, doing all of the above in Obsidian allows you to manipulate your notes in multiple other ways, like leveraging the graph view or running queries via the Dataview plug-in, while sticking with simple Markdown files. For now I am pretty happy how these notes are embedded in my personal second brain, however.