self-initiated

theSkullery

A recipe site with no ads, no accounts and no fluff, built in 2020 to teach myself how the web works. It found an audience anyway, and is waiting for its second act.

period May 2020 – ongoing
services product design · engineering · content
stack Jekyll · JavaScript · Firebase · Netlify
visit site

theSkullery began with a favour. A friend wanted a website on one of the drag-and-drop builders, and getting the look we wanted meant reaching past the templates into custom CSS and JavaScript. I had never written either. I learned enough to finish the favour, and then I kept going. A recipe collection seemed the sensible next exercise: something I already had in notebooks and locked inside other people’s apps, and something my friends kept asking me for.

The site went live in May 2020, in the first months of the pandemic, when a great many people were suddenly cooking at home and searching for instructions. Somehow it got discovered. I still do not know exactly how, but I know why it stuck: each page carried one recipe and one photograph, no advertising, no pop-up asking for an email address, and nothing to pay. On a web where the average recipe page buries its method under three screens of memoir and a video ad, restraint read as generosity.

a craftsman, not an artist

The site’s only statement of philosophy is a line I borrowed from the late Anthony Bourdain: cooking is a craft, and a good cook is a craftsman, not an artist. I take it personally. A good craftsman will usually turn out to be a fine artist as well, whereas the reverse is not reliably true. The rule I drew from it governs everything I have built since: make things I would be proud to use myself, first, and worry about impressing others second.

theSkullery’s features follow from that. Recipes scale up and down for any number of guests. Ingredients sit on skeuomorphic post-it notes drawn in CSS, each with a checkbox, and the page scrolls along as you tick them off, since a cook’s hands are usually wet. Whatever is left unchecked can be copied to the clipboard in one tap and becomes the shopping list. Nearly nine visitors in ten arrive on a phone, most of them propped against a kettle, and the design assumes as much.

the missing login

The site has no accounts. Favourites live in the browser. I will be frank about this: it was less a stance than a shortfall. I tried and failed to teach myself authentication in 2020, so I needed a very simple way to remember what a visitor liked. Laziness played a part too. I think it has held the project back, and I will not pretend otherwise.

Yet the accidental principle turned out to be the thing people valued most. No sign-up wall, nothing tracked beyond an anonymous visit count, recipes marked up with schema.org so that search engines and Pinterest can read the ingredients and diets directly. The structure is honest in a way that took some larger publishers years to rediscover.

what it paid for

Above all, the project was my school. It is where I learned Jekyll, Ruby, SCSS and JavaScript, and where I first used Firebase, Cloudflare and Netlify. That last one mattered well beyond the kitchen. Netlify’s preview deployments became my standard way of giving clients a private staging environment for every change, and its form handling and continuous deployment shaped how I have shipped every client site since. A hobby about omelettes ended up defining the delivery pipeline for a law firm.

the second act

Five years on, theSkullery still draws a couple of hundred visits a week, which I attribute, with some embarrassment, to the fact that nothing has changed in a long time. The next version changes a great deal. Anyone will be able to submit a recipe. Recipes will be editable and, borrowing an idea from software, branchable: you could fork a dish, swap the cumin for caraway, and keep your own version alongside the original. The ambition is a small social kitchen for cooks and chefs rather than my solo notebook.

It would be a strange outcome for a site I built to learn how websites work. It would also be entirely in character.