Documentation
Writing Recipes
The recipe editor from front to back: the basics, ingredients and their keys, steps and sections, and the advanced options.
The Recipe Editor
Click New Recipe to start from scratch, or Edit on any of your household's recipes. It's the same editor either way (imports and the assistant use it too), organized into four tabs: Basics, Ingredients, Steps, and Advanced.
Don't feel obliged to fill everything in. A title, a few ingredients, and a couple of steps make a perfectly good recipe; the rest can come later.
Preview shows the recipe as readers will see it, and on the edit page an Ask AI button hands the recipe to the assistant with a request like "make this vegetarian" or "halve the sugar". See Import & the assistant.
Basics
- Title (required) and description.
- Dish: which dish this recipe makes. It's matched from the title automatically; you only touch this to pin the recipe to a different dish. See Collections & dishes.
- Yield & timing: how the recipe is measured (servings, total weight, volume, or tray dimensions) plus prep, cook, and rest times. The yield type decides how readers scale it.
- Classification: difficulty, meal types, dietary tags.
- Source: where it came from, like a book title, a website, or "Grandma", with an optional link.
Ingredients
Each ingredient row has a searchable picker, an amount and unit, an optional note ("finely chopped, room temperature"), and a key.
The Ingredient Picker
Ingredients link to the shared catalog, which is what powers pantry matching, prices, and unit conversion. Search and pick the right entry when you can. Typing a name that isn't in the catalog works too; a matching catalog entry is found or created when the recipe is saved.
Keys and Scaled Amounts in Steps
The key is how you refer to the ingredient inside step text. Write {{ flour }} in a step and readers see "200g flour", automatically rescaled whenever they change the servings. Keys are generated from the name; edit one if you have, say, two kinds of flour.
This is the single most useful habit when writing recipes: never hard-code an amount into a step. The full syntax (arithmetic, name-only references, and more) is in the template reference.
Made While Cooking
Some "ingredients" aren't bought, they happen along the way: browned butter, a reserved pasta liquid. Tick made while cooking on such a row. It scales and can be referenced in steps like any other ingredient, but it's never shopped for, never counted as missing, and shows up under "Made while cooking" on the recipe page.
Staples
Water, salt, and other always-there items are marked as staples on the ingredient itself (in the shared catalog), not per recipe. Staple ingredients scale with the recipe but are never bought or counted as missing, for anyone.
Steps
Each step has an optional title, a body, and photos. Bodies are Markdown with a few Foodex extras:
{{ key }}for scaled ingredient amounts (see above).@timer(15m)for a tap-to-start countdown, or@timer(4-6m)for a range.@step(3)to link another step,@recipe(slug)to link a specific recipe, and@dish(slug)to link a dish when any version will do.@tool(name)to reference an attached tool with its settings, or@tool(name, settings)when one use needs its own ("speed 2" now, "high speed" later).
The editor highlights this syntax as you type and flags mistakes before you save. The complete list lives in the template reference.
Sections
Longer recipes read better in sections ("Dough", "Filling", "Assembly"). Use Group steps into sections: each section gets a title and a key, step numbering restarts inside each one, and @step(filling.2) points at a step inside a section.
Advanced: the graph editor and parallel steps
By default steps run as a simple chain. Switch the Steps tab to graph view and you can wire them as a dependency graph instead: put the sauce and the pasta in parallel branches, and make "Assembly" wait on both. Add steps or whole sections in sequence or as parallel branches, and drag between cards to add a dependency.
The payoff is in cooking mode: parallel branches are shown side by side as separate columns, so the recipe itself tells two cooks how to split the work. Recipes without explicit dependencies simply read top to bottom.
The Advanced Tab
Cover Image
Upload a photo of the finished dish; you can crop it before saving. It appears on the recipe page and in lists.
Tools
Attach the kitchen tools the recipe needs, each with optional default settings ("180C convection"). Tools come from the shared catalog; creating one here also adds it to your household's equipment. Readers whose household lacks a tool see a "not owned" flag, and the "Ready to make" filter takes tools into account.
Output Ingredient
If the recipe produces an ingredient (pizza dough, lemon curd, chicken stock), say so: pick the ingredient, the yield amount, and a shelf life.
Now cooking the recipe doesn't just take ingredients out of the pantry, it puts the product in, with the right best-before date. Other recipes that use that ingredient will then see it as in stock. This is how chains like "make stock on Sunday, use it in risotto on Tuesday" work end to end.
Sub-recipe References
Link the recipes this one builds on. They're listed on the recipe page, and @recipe() references in steps become links.
Visibility
Tick Private to keep the recipe visible to your household only.