Building a vintage recipe rolodex with Python, Pelican, and Markdown
I enjoy cooking. Not only that, but I enjoy complicated cooking — which can sometimes be a bit of a curse.
A simple weeknight meal? Not interested. A week-long project to nail the ultimate Xiao Long Bao , Croissants , or homemade ramen ? Sign me up! I become somewhat obsessive, reading cooking blogs, cookbooks, and YouTube videos to figure out not just the baseline techniques and ingredients, but the endless variations between them. And as I refine a recipe and my method, I make sure to write down what worked (and what didn’t!).
In the beginning, my method was to use Microsoft Publisher and generate a PDF (to be fair, it was 2004). As my physics career took off and I became surrounded by open-source tech and tooling, this transitioned to PDFs generated from simple Markdown files stored in Dropbox.
But this setup had its flaws. PDFs don’t render well on mobile phones, and Dropbox isn’t exactly the ideal platform for seamlessly maintaining, updating, and sharing a repository of recipes. At the time, I had already created this website, which was built on Pelican — a static-site generator for Python built on Markdown files. Since I already had an affinity for Markdown, I figured there must surely be a library that allows me to store and version my recipes using Markdown and Git, yet still render them for easy browsing and searching.
The two most promising options were Chowdown (however, I wanted to avoid a Jekyll-based solution) and Jeff Thompson’s Recipe Website (I loved the style, but wanted a static site generator). There were also a couple of cloud services and phone apps that store recipes in Markdown formats (such as Tandoor and Grocery ), but I didn’t want to be tied down to one platform or depend on paid tiers just to get the most out of my Markdown files.
So, armed with a researcher’s knowledge of Jinja, Python, JavaScript, and CSS , I thought: why not build it myself?