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:

  1. Translate all fields to English — title, description, steps, and notes.
  2. 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.
  3. Attribute accurately in the author field:
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:

  1. Extract all text carefully — ingredients, amounts, steps.
  2. 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:

  1. Attribute properly in the author field.
  2. Paraphrase steps in your own words — do not copy verbatim.
  3. 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'"

5. Canonical Tag List

Use tags from this list. Only add new tags when clearly necessary.

Protein

chickenbeeflambfishseafoodeggslentilschickpeas

Dietary

vegetarianvegangluten-freedairy-freenut-free

Cooking method

grilledroastedfriedbakedrawone-panslow-cooked

Character

quickmake-aheadmeal-preppantryspicycomfort-foodparty

Course

saladsouppastabreadpastrydessertsaucedipmezzedrink

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").