Home

Recipe management with Obsidian

July 16, 2022 - recipes obsidian cooking

Those who enjoy cooking will have encountered a familiar problem - how to keep track of recipes over time? Primitive solutions range from keeping links to recipes in bookmarks folder to sticky notes marking pages of physical recipe books. But to someone who likes cooking and is also an engineer, it's clear that these solutions don't scale! Indeed, there is a market for more advanced recipe management solutions, e.g. Colander (a previous web app attempt in this space developed by yours truly and my partner), Paprika (a more polished version which has been monetized), and likely many others.

Recently, I've been finding more and more uses for Obsidian, a local-first Markdown editor, and so it was natural to explore ways of using it as a recipe manager. In this post, I'll share some practical tips about my setup and comment on Obsidian's suitability for this purpose. (Spoiler: it's incredibly effective!)

Requirements

Before covering specifics of Obsidian, it may be helpful to share my requirements (both core requirements and nice-to-haves) for a recipe manager. While specific requirements may differ from person to person, my personal list of "must-haves" is below:

Similarly, my nice-to-haves include:

Using Obsidian as a recipe manager

With the above requirements in mind, how does Obsidian measure up?

Recipe format

To start, viewing and editing recipes is quite good, thanks to Obsidian's polish as a text editor. Because recipes themselves are stored as simple Markdown files, all essential formatting and display features in Markdown are available, including headers, lists, sections, and images.

A delicious dessert, by the way!

Organization

One of Obsidian's standout capabilities is the ability to define links between documents, which can either be in terms of tags (e.g. #chicken) or explicit links (e.g. [[Pastry for single-crust pie]]). This brings a lot of flexibility and power to recipe management, as recipes that are associated can simply reference one another, and every recipe can be classified with appropriate tags.

Additionally, with Obsidian's Dataview plugin, one can quickly create recipe indexes which auto-update as new recipes are added or tagged, for example, by cuisine, type of dish, or in this case, ingredient:

Photos in recipe indexes help get me excited about meals for the week!

Meal plans & shopping

Basic indexes and document links help facilitate easy meal planning. While there is no prescribed format, I typically keep each plan in a distinct document, with links to recipes I intend to make that meal or week.

Shopping lists are similarly straightforward - just a list of checkboxes organized according to my grocery store's layout. We currently create these lists by hand, but it could certainly be automated eventually.

Access & syncing

As a local-first editor, Obsidian does not prescribe a solution of syncing files between devices, but since the underlying data representation is just plain text files and images, many syncing options are available. To date I have found Syncthing and git to be sufficient for my purposes.

Syncthing is definitely more convenient than git, and it is supported on all but iOS devices. It works by setting up a peer network of devices, specifying one or more folders to keep in sync, and then running a background service which updates and copies documents across devices over time. Importantly, it does all of this securely, without documents being readable by third parties!

A full description of Syncthing is best left for a future blog post, but for now, it's hard to overstate the convenience of editing a recipe or shopping list on a computer and having it appear on my mobile device, without having to manually save or sync anything!

Git, on the other hand, requires a more technical setup, but does work with iOS via the iSH Shell application. And for those who want syncing to iOS without any fuss and who don't mind a small subscription fee, there is always Obsidian's own Sync service.

Concluding thoughts

In the ~6 months since I began using this setup, Obsidian has proven to be a surprisingly capable and effective recipe management solution. One of my favorite aspects of this system is that Obsidian has a low barrier to entry but also offers many opportunities for deeper customization: armed with some basic knowledge of Markdown syntax, one can create a very serviceable recipe collection, and those looking for something more sophisticated should be able to add features incrementally over time. Also, did I mention that Obsidian is free? Due to its emphasis on local-first data, there is no concern that a cloud-based offering might remove features, change pricing models, or go out of business, taking your data with it.

While I anticipate using Obsidian as my recipe manager for the foreseeable future, I'm not quite done tweaking. 🙃 I'm actively brainstorming future improvements, such as:

Since the recipes are simple plain text files, there's quite a bit of flexibility for developing these tools. For example, an Obsidian plugin would be a straightforward choice, but a separate CLI tool written in a different language (e.g. Rust!) would also be reasonable.

It's important to state that despite the above features not being supported out of the box, the overall experience with Obsidian as a recipe manager is really great - I highly recommend it!