Adding a Recipe
A complete guide for adding recipes to this collection — whether you're translating an Arabic recipe, formatting one from a website, or transcribing a handwritten card.
1. How to Add a New Recipe
Recipes live in src/content/recipes/ as .mdx files. Create a new file named after the recipe's slug:
bash
src/content/recipes/my-recipe-name.mdx Generating the slug
Use the kebab-case version of the English title:
"Fattoush Salad" →
fattoush-salad.mdx "Chicken Shawarma" →
chicken-shawarma.mdx "Spaghetti Aglio e Olio" →
spaghetti-aglio-olio.mdx 2. Handling Arabic Recipes
If the recipe text is in Arabic:
- Translate all fields to English — title, description, steps, and notes.
- Preserve the dish name: If there's no English equivalent, transliterate it (e.g., "Fattoush", "Kibbeh", "Mujaddara") and include the Arabic name in the description.
- Attribute accurately in the
authorfield:
yaml Author attribution examples
author: "Family Recipe — translated from Arabic"
author: "Teta Suha (translated from Arabic)"
author: "Aunt Samira (translated from Arabic)" Natural translation: Translate cooking instructions
naturally, not word-for-word. "اقلي البصل حتى يذهب ريحه" should become
"Cook the onions until softened and fragrant" — not "Fry the onion until
its smell goes away."
3. Handling Handwritten or Printed Recipes
When working from a photo of a handwritten or printed recipe card:
- Extract all text carefully — ingredients, amounts, steps.
-
If an amount is unclear or illegible, use a
reasonable culinary default and document it in
notes:
yaml
notes: "Amount for tahini estimated from standard hummus proportions
as original handwriting was unclear." 4. Internet-Sourced Recipes
For recipes adapted from websites, cookbooks, or published sources:
- Attribute properly in the
authorfield. - Paraphrase steps in your own words — do not copy verbatim.
- Keep ingredient amounts accurate.
yaml Attribution examples
author: "Adapted from Smitten Kitchen"
author: "From NYT Cooking"
author: "Inspired by Yotam Ottolenghi"
author: "Adapted from Claudia Roden's 'The Book of Jewish Food'" 6. Schema Reference
Every field in the frontmatter, its type, and whether it's required:
| Field | Type | Req. | Notes |
|---|---|---|---|
title | string | ✓ | English title |
description | string | ✓ | 1–2 sentence description |
author | string | ✓ | Credit / attribution |
cuisine | string | ✓ | e.g. "Lebanese", "Italian" |
category | string | ✓ | e.g. "Salads", "Mains", "Desserts" |
mealType | enum | ✓ | breakfast / lunch / dinner / dessert / snack / drink |
tags | string[] | ✓ | Array from canonical tag list |
servings | number | ✓ | Base serving size |
prepTime | number | ✓ | Minutes |
cookTime | number | ✓ | Minutes |
totalTime | number | ✓ | Minutes |
difficulty | enum | ✓ | easy / medium / hard |
featured | boolean | ✓ | Default: false |
coverImage | string | ✓ | /images/[slug].jpg |
ingredients[].name | string | ✓ | Ingredient name |
ingredients[].amount | number | ✓ | Numeric amount |
ingredients[].unit | string | ✓ | g, ml, tbsp, tsp, cup, piece… |
ingredients[].group | string | — | Optional grouping label |
steps | string[] | ✓ | Ordered cooking instructions |
notes | string | — | Tips, substitutions, make-ahead |
nutrition.calories | number | — | Per serving |
nutrition.protein | number | — | Grams per serving |
nutrition.carbs | number | — | Grams per serving |
nutrition.fat | number | — | Grams per serving |
publishedAt | date | ✓ | YYYY-MM-DD |
updatedAt | date | — | YYYY-MM-DD if updated |
7. Full Example
A complete, valid .mdx recipe file you can use as a template:
mdx src/content/recipes/mujaddara.mdx
---
title: "Mujaddara"
description: "A beloved Lebanese lentil and rice dish topped with deeply
caramelized onions — simple, filling, deeply flavorful.
Known as مجدرة in Arabic."
author: "Family Recipe — translated from Arabic"
cuisine: "Lebanese"
category: "Mains"
mealType: "dinner"
tags: ["vegan", "vegetarian", "Lebanese", "lentils", "comfort-food"]
servings: 6
prepTime: 10
cookTime: 50
totalTime: 60
difficulty: "easy"
featured: false
coverImage: "/images/mujaddara.jpg"
ingredients:
- name: "green or brown lentils"
amount: 300
unit: "g"
- name: "long grain rice"
amount: 200
unit: "g"
- name: "large onions"
amount: 4
unit: "piece"
- name: "olive oil"
amount: 80
unit: "ml"
- name: "cumin"
amount: 1.5
unit: "tsp"
- name: "salt"
amount: 1.5
unit: "tsp"
- name: "black pepper"
amount: 0.5
unit: "tsp"
- name: "water"
amount: 1000
unit: "ml"
steps:
- "Rinse lentils and check for stones. Simmer in water 20 min."
- "Slice onions thin. Cook in olive oil 30–35 min until deeply
caramelized. Reserve half for topping."
- "Add cumin to pan, then lentils with liquid. Add rice."
- "Cook covered on low 20 min. Steam off heat 10 min."
- "Serve topped with reserved onions and olive oil."
notes: "The caramelized onions are non-negotiable. Low and slow."
nutrition:
calories: 380
protein: 14
carbs: 58
fat: 10
publishedAt: 2024-03-01
---
Mujaddara is the kind of dish that proves you don't need meat for
a deeply satisfying meal. Common Mistakes to Avoid
Non-numeric amounts
amount: "2-3" — amounts must be numbers. Use 2 and add a note.
Missing featured field — always include
featured: false (or true).
Copying steps verbatim from copyrighted sources —
always paraphrase.
Off-list tags — only use tags from the canonical
list above.
Always translate Arabic content to English before
structuring the frontmatter.
Use today's date for
publishedAt when
adding a new recipe.
Group ingredients using the optional
group field when a recipe has multiple components (e.g., "For the sauce",
"For the dough").