Journaling with Jekyll

For the last three years I’ve been somewhat obsessively trying to document my life. It started with a kind of curiosity about the “quantified self” movement, a data-driven approach to self-reflection. But after hundreds of lines in spreadsheets and very little to meaningfully show for it, I decided I wanted something simpler: a journal.

There are a lot of very good apps out there designed just for this purpose, especially Day One and the iPhone-only Momento — not to mention, you know, actual journals.

But after being somewhat frustrated with the update to Day One back in January 2016, I starting thinking about more open-source solutions. After lots of experimentation, I started using Jekyll, the Ruby-based blog platform that has become something of a DiY favorite because of its easy integration with GitHub Pages (though, fair warning: this theme is not compatible with GitHub Pages). By modifying the lovely Trophy Jekyll theme and using Jekyll’s built-in functionality in very nonstandard ways, I was able to create a static-site journal that includes maps, locations, and person records.

I wanted to share it here before the end of the year in case anyone wants to give it a go in 2017, but keep in mind this is very much a work in progress.


The “Trophy Logbook,” as I’m calling it, is really just a series of journal entries presented as blog posts. I’ve hijacked Jekyll’s “tags” and “categories” to serve as person and place records, respectively. With help from jekyll-archives, the site automatically creates a record of every place you have ever visited or person you have interacted with (as long as you entered them in your journal, of course). It collates and organizes these entries by day.

Documenting people and places comes through Jekyll’s YAML metadata. Like I said, “categories” function as places, while “tags” function as people. The theme also has two metadata fields that actually do what they say: “location” takes a street address or lat/lon coordinates to create a map using the Google Static Maps API; “zoom” allows for a custom zoom level of that map.

Since this is all plain text, it’s easy to automatically create the location metadata via iOS automation tools such as Workflow, Drafts, or Launch Center Pro.

The “location” and “person” records automatically created by jekyll-archives are really bare bones, but you can transform those into wiki-style entries with descriptions and images using sidecar markdown files in the “_categories” folder.

The Files

The best way to get to know this theme is to take it for a test drive yourself — everything you need is on the GitHub repo. As I mentioned, because it uses “jekyll-archives” it is not compatible with GitHub Pages, but you can look at the original Trophy repo for a Pages-compatible solution.

However, since this is a personal journal, I prefer to simply run a copy locally. There are a few gems required, so run “bundle install” and then “bundle exec jekyll serve” to get everything up and running.

Would love to hear if or how this works for anyone, either here, on Twitter, or in the issues of the repo.