diff --git a/packages/database/src/seed/data/chef-recipes-extra.ts b/packages/database/src/seed/data/chef-recipes-extra.ts new file mode 100644 index 0000000..587787d --- /dev/null +++ b/packages/database/src/seed/data/chef-recipes-extra.ts @@ -0,0 +1,1190 @@ +import type { SeedRecipe } from "./recipes.js"; + +/** + * Fler namngivna kock-recept (spec: named-chef attribution). Samma princip + * som chef-recipes.ts: EGNA formuleringar av kockarnas kända signaturrätter + * (rätter kan inte upphovsrättsskyddas – bara den exakta texten – så all text + * här är nyskriven). Diskret kredit via creatorDisplayName, aldrig badge/flik. + * Ligger bland alla andra recept och lyder samma diet-/allergifilter. + * + * HÅRDA REGLER (annars kraschar seed): alla `ing`-ids finns i katalogen och + * varje (ing, unit) är beräkningsbar (GRAM alltid; COUNT kräver gramsPerPiece; + * volym kräver densitet). Verifierat med seed + valideringsskript. + */ +export const CHEF_RECIPES_EXTRA: SeedRecipe[] = [ + // ===================== Gordon Ramsay ===================== + { + slug: "gordon-shepherds-pie", + titleSv: "Shepherd's pie med lammfärs", + descriptionSv: + "Mustig lammfärsgryta under ett gyllene lock av krämig potatismos – Gordon Ramsays brittiska klassiker för en trög söndag.", + cuisine: "international", + mealTypes: ["dinner"], + tags: ["high_protein", "one_pot", "kid_friendly"], + methods: ["stovetop", "oven"], + equipment: ["stove", "oven"], + difficulty: "medium", + prepMin: 20, + cookMin: 40, + portions: 4, + spiceLevel: 0, + mealPrepFriendly: true, + freezerFriendly: true, + peakSeasons: ["autumn", "winter"], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Gordon Ramsay", + dnaProtein: "lamb_mince", + dnaCarb: "potato", + dnaVegetables: ["carrot", "onion"], + dnaFlavor: ["savory", "rich", "herby"], + ingredients: [ + { ing: "lamb_mince", nameSv: "Lammfärs", qty: 500, unit: "GRAM", optional: false }, + { ing: "onion", nameSv: "Gul lök", qty: 1, unit: "COUNT", optional: false }, + { ing: "carrot", nameSv: "Morot", qty: 2, unit: "COUNT", optional: false }, + { ing: "tomato_paste", nameSv: "Tomatpuré", qty: 2, unit: "TABLESPOON", optional: false }, + { ing: "chicken_stock_cube", nameSv: "Buljongtärning", qty: 1, unit: "COUNT", optional: false }, + { ing: "frozen_peas", nameSv: "Gröna ärtor", qty: 150, unit: "GRAM", optional: false }, + { ing: "potato", nameSv: "Potatis", qty: 800, unit: "GRAM", optional: false }, + { ing: "butter", nameSv: "Smör", qty: 40, unit: "GRAM", optional: false }, + { ing: "milk_3", nameSv: "Mjölk", qty: 1, unit: "DECILITER", optional: false }, + ], + steps: [ + { text: "Koka potatisen mjuk. Stampa med smör och mjölk till ett slätt mos, salta." }, + { text: "Fräs lök och morot mjuka, tillsätt lammfärsen och bryn den. Rör i tomatpuré, smulad buljong och en skvätt vatten. Låt puttra 15 minuter, vänd i ärtorna." }, + { text: "Häll färsen i en form, bred moset över och dra en gaffel i toppen. Grädda i 200°C tills ytan är gyllene, cirka 20 minuter." }, + ], + }, + { + slug: "gordon-sticky-toffee", + titleSv: "Sticky toffee pudding", + descriptionSv: + "Saftig dadelkaka dränkt i varm kolasås – den brittiska desserten Gordon Ramsay gjort folkkär.", + cuisine: "international", + mealTypes: ["dessert"], + tags: ["baking", "cake", "vegetarian"], + methods: ["oven"], + equipment: ["oven"], + difficulty: "medium", + prepMin: 20, + cookMin: 30, + portions: 8, + spiceLevel: 0, + mealPrepFriendly: false, + freezerFriendly: true, + peakSeasons: ["autumn", "winter"], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Gordon Ramsay", + dnaCarb: "flour_wheat", + dnaVegetables: [], + dnaFlavor: ["sweet", "caramel", "rich"], + ingredients: [ + { ing: "dates", nameSv: "Dadlar", qty: 200, unit: "GRAM", optional: false }, + { ing: "flour_wheat", nameSv: "Vetemjöl", qty: 200, unit: "GRAM", optional: false }, + { ing: "brown_sugar", nameSv: "Farinsocker", qty: 150, unit: "GRAM", optional: false }, + { ing: "butter", nameSv: "Smör", qty: 100, unit: "GRAM", optional: false }, + { ing: "egg", nameSv: "Ägg", qty: 2, unit: "COUNT", optional: false }, + { ing: "baking_powder", nameSv: "Bakpulver", qty: 5, unit: "GRAM", optional: false }, + { ing: "cream", nameSv: "Grädde", qty: 2, unit: "DECILITER", optional: false }, + ], + steps: [ + { text: "Koka dadlarna mjuka i lite vatten och mosa dem. Vispa smör och hälften av farinsockret pösigt, tillsätt ägg, mjöl och bakpulver, vänd sedan i dadelmoset." }, + { text: "Grädda smeten i en smord form i 180°C i cirka 30 minuter." }, + { text: "Koka resten av farinsockret med grädden till en sirapig kolasås. Stick hål i kakan och häll såsen över. Servera varm." }, + ], + }, + { + slug: "gordon-pilgrimsmusslor", + titleSv: "Stekta pilgrimsmusslor med brynt smör", + descriptionSv: + "Gyllene, karamelliserade pilgrimsmusslor med nötigt brynt smör och citron – Gordon Ramsays eleganta förrätt på minuter.", + cuisine: "french", + mealTypes: ["starter"], + tags: ["high_protein", "quick", "luxury", "low_carb"], + methods: ["stovetop"], + equipment: ["stove"], + difficulty: "medium", + prepMin: 5, + cookMin: 6, + portions: 2, + spiceLevel: 0, + mealPrepFriendly: false, + freezerFriendly: false, + peakSeasons: [], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Gordon Ramsay", + dnaProtein: "scallops", + dnaVegetables: [], + dnaFlavor: ["buttery", "nutty", "fresh"], + ingredients: [ + { ing: "scallops", nameSv: "Pilgrimsmusslor", qty: 250, unit: "GRAM", optional: false }, + { ing: "butter", nameSv: "Smör", qty: 40, unit: "GRAM", optional: false }, + { ing: "lemon", nameSv: "Citron", qty: 1, unit: "COUNT", optional: false }, + { ing: "olive_oil", nameSv: "Olivolja", qty: 1, unit: "TABLESPOON", optional: false }, + { ing: "parsley", nameSv: "Persilja", qty: 10, unit: "GRAM", optional: true }, + ], + steps: [ + { text: "Torka musslorna torra och salta dem. Stek i het olja 1–2 minuter per sida tills de är gyllene men fortfarande krämiga i mitten." }, + { text: "Sänk värmen, lägg i smöret och låt det brynas tills det doftar nötigt. Pressa i citron och ös musslorna. Toppa med persilja." }, + ], + }, + { + slug: "gordon-lammracks-orter", + titleSv: "Örtbakade lammracks", + descriptionSv: + "Rosastekt lammrack med krispig senaps- och örttäcke – Gordon Ramsays middagsklassiker för fest.", + cuisine: "french", + mealTypes: ["dinner"], + tags: ["high_protein", "luxury", "low_carb"], + methods: ["stovetop", "oven"], + equipment: ["stove", "oven"], + difficulty: "advanced", + prepMin: 15, + cookMin: 25, + portions: 4, + spiceLevel: 0, + mealPrepFriendly: false, + freezerFriendly: false, + peakSeasons: ["spring"], + holidayTags: ["pask"], + verificationStatus: "editorial", + creatorDisplayName: "Gordon Ramsay", + dnaProtein: "lamb_chop", + dnaVegetables: [], + dnaFlavor: ["herby", "savory", "roasted"], + ingredients: [ + { ing: "lamb_chop", nameSv: "Lammrack", qty: 800, unit: "GRAM", optional: false }, + { ing: "mustard", nameSv: "Senap", qty: 2, unit: "TABLESPOON", optional: false }, + { ing: "breadcrumbs", nameSv: "Ströbröd", qty: 1, unit: "DECILITER", optional: false }, + { ing: "garlic", nameSv: "Vitlöksklyfta", qty: 2, unit: "COUNT", optional: false }, + { ing: "rosemary_fresh", nameSv: "Rosmarin", qty: 8, unit: "GRAM", optional: false }, + { ing: "olive_oil", nameSv: "Olivolja", qty: 2, unit: "TABLESPOON", optional: false }, + ], + steps: [ + { text: "Bryn lammracken runt om i het olja och salta. Pensla köttsidan med senap." }, + { text: "Blanda ströbröd, pressad vitlök, hackad rosmarin och olja och tryck fast på senapen." }, + { text: "Rosta i 200°C i 15–20 minuter till rosa kärna. Låt vila 10 minuter före du skär i kotletter." }, + ], + }, + + // ===================== Jamie Oliver ===================== + { + slug: "jamie-kyckling-i-mjolk", + titleSv: "Kyckling i mjölk", + descriptionSv: + "Hel kyckling långkokt i mjölk med citron, vitlök och kanel som skummar ihop till en gyllene sås – Jamie Olivers oväntade favorit.", + cuisine: "italian", + mealTypes: ["dinner"], + tags: ["high_protein", "one_pot"], + methods: ["oven"], + equipment: ["oven"], + difficulty: "medium", + prepMin: 15, + cookMin: 90, + portions: 4, + spiceLevel: 0, + mealPrepFriendly: true, + freezerFriendly: false, + peakSeasons: [], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Jamie Oliver", + dnaProtein: "whole_chicken", + dnaVegetables: [], + dnaFlavor: ["creamy", "citrus", "warm"], + ingredients: [ + { ing: "whole_chicken", nameSv: "Kyckling", qty: 1200, unit: "GRAM", optional: false }, + { ing: "milk_3", nameSv: "Mjölk", qty: 5, unit: "DECILITER", optional: false }, + { ing: "lemon", nameSv: "Citron", qty: 1, unit: "COUNT", optional: false }, + { ing: "garlic", nameSv: "Vitlöksklyfta", qty: 6, unit: "COUNT", optional: false }, + { ing: "cinnamon", nameSv: "Kanel", qty: 1, unit: "TEASPOON", optional: false }, + { ing: "butter", nameSv: "Smör", qty: 30, unit: "GRAM", optional: false }, + ], + steps: [ + { text: "Bryn kycklingen gyllene runt om i smör i en gryta. Häll av överflödigt fett." }, + { text: "Lägg i vitlöksklyftor, rivet citronskal, kanel och mjölken. Locket på glänt." }, + { text: "Låt sjuda i ugn på 180°C i cirka 1,5 timme. Mjölken skummar ihop till en syrlig, len sås. Dela kycklingen och ös." }, + ], + }, + { + slug: "jamie-gronsakschili", + titleSv: "Grönsakschili med bönor", + descriptionSv: + "Rykande vegetarisk chili med tre sorters bönor, sötpotatis och rökig spiskummin – Jamie Olivers snabba vardagsgryta.", + cuisine: "mexican", + mealTypes: ["dinner"], + tags: ["vegan", "high_protein", "one_pot", "budget"], + methods: ["stovetop"], + equipment: ["stove"], + difficulty: "easy", + prepMin: 15, + cookMin: 30, + portions: 4, + spiceLevel: 2, + mealPrepFriendly: true, + freezerFriendly: true, + peakSeasons: [], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Jamie Oliver", + dnaProtein: "black_beans_canned", + dnaCarb: "sweet_potato", + dnaVegetables: ["bell_pepper", "onion"], + dnaFlavor: ["smoky", "spicy", "hearty"], + ingredients: [ + { ing: "sweet_potato", nameSv: "Sötpotatis", qty: 1, unit: "COUNT", optional: false }, + { ing: "black_beans_canned", nameSv: "Svarta bönor", qty: 240, unit: "GRAM", optional: false }, + { ing: "kidney_beans_canned", nameSv: "Kidneybönor", qty: 240, unit: "GRAM", optional: false }, + { ing: "canned_tomatoes", nameSv: "Krossade tomater", qty: 400, unit: "GRAM", optional: false }, + { ing: "bell_pepper", nameSv: "Paprika", qty: 1, unit: "COUNT", optional: false }, + { ing: "onion", nameSv: "Gul lök", qty: 1, unit: "COUNT", optional: false }, + { ing: "cumin", nameSv: "Spiskummin", qty: 2, unit: "TEASPOON", optional: false }, + { ing: "chili_flakes", nameSv: "Chiliflakes", qty: 1, unit: "TEASPOON", optional: false }, + ], + steps: [ + { text: "Tärna sötpotatisen och fräs den med lök och paprika tills den mjuknar." }, + { text: "Rör i spiskummin och chili, häll på krossade tomater och de sköljda bönorna." }, + { text: "Låt puttra 20–25 minuter tills det tjocknat. Smaka av med salt. Gott med ris eller bröd." }, + ], + }, + { + slug: "jamie-snabb-tomatpasta", + titleSv: "Jamies snabba tomatpasta", + descriptionSv: + "Pasta i en sammetslen tomatsås med vitlök och färsk basilika på under tjugo minuter – Jamie Olivers vardagsräddare.", + cuisine: "italian", + mealTypes: ["dinner"], + tags: ["vegetarian", "quick", "budget", "kid_friendly"], + methods: ["stovetop"], + equipment: ["stove"], + difficulty: "easy", + prepMin: 5, + cookMin: 15, + portions: 4, + spiceLevel: 0, + mealPrepFriendly: false, + freezerFriendly: false, + peakSeasons: [], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Jamie Oliver", + dnaCarb: "pasta_dry", + dnaVegetables: ["tomato"], + dnaFlavor: ["savory", "herby", "fresh"], + ingredients: [ + { ing: "pasta_dry", nameSv: "Pasta", qty: 400, unit: "GRAM", optional: false }, + { ing: "canned_tomatoes", nameSv: "Krossade tomater", qty: 400, unit: "GRAM", optional: false }, + { ing: "garlic", nameSv: "Vitlöksklyfta", qty: 2, unit: "COUNT", optional: false }, + { ing: "olive_oil", nameSv: "Olivolja", qty: 2, unit: "TABLESPOON", optional: false }, + { ing: "basil", nameSv: "Basilika", qty: 10, unit: "GRAM", optional: false }, + { ing: "parmesan", nameSv: "Parmesan", qty: 40, unit: "GRAM", optional: true }, + ], + steps: [ + { text: "Koka pastan. Fräs pressad vitlök mjuk i olivoljan utan att den tar färg." }, + { text: "Häll i krossade tomater och låt puttra medan pastan kokar. Salta." }, + { text: "Vänd ihop pasta och sås, riv i basilika och toppa med parmesan." }, + ], + }, + + // ===================== Nigella Lawson ===================== + { + slug: "nigella-citronkaka", + titleSv: "Saftig citronkaka", + descriptionSv: + "Fuktig sockerkaka indränkt i syrlig citronsirap – Nigella Lawsons tröstbak när som helst på dagen.", + cuisine: "international", + mealTypes: ["dessert"], + tags: ["baking", "cake", "vegetarian"], + methods: ["oven"], + equipment: ["oven"], + difficulty: "easy", + prepMin: 15, + cookMin: 45, + portions: 10, + spiceLevel: 0, + mealPrepFriendly: false, + freezerFriendly: true, + peakSeasons: [], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Nigella Lawson", + dnaCarb: "flour_wheat", + dnaVegetables: [], + dnaFlavor: ["citrus", "sweet", "buttery"], + ingredients: [ + { ing: "flour_wheat", nameSv: "Vetemjöl", qty: 225, unit: "GRAM", optional: false }, + { ing: "sugar", nameSv: "Strösocker", qty: 200, unit: "GRAM", optional: false }, + { ing: "butter", nameSv: "Smör", qty: 150, unit: "GRAM", optional: false }, + { ing: "egg", nameSv: "Ägg", qty: 3, unit: "COUNT", optional: false }, + { ing: "lemon", nameSv: "Citron", qty: 2, unit: "COUNT", optional: false }, + { ing: "baking_powder", nameSv: "Bakpulver", qty: 9, unit: "GRAM", optional: false }, + ], + steps: [ + { text: "Vispa smör och 150 g socker pösigt. Tillsätt äggen ett i taget, vänd sedan i mjöl, bakpulver och rivet skal från citronerna." }, + { text: "Grädda i smord form i 170°C i cirka 45 minuter tills en sticka kommer ut torr." }, + { text: "Koka pressad citron med resterande socker till en sirap, stick hål i den varma kakan och pensla över. Låt kallna i formen." }, + ], + }, + { + slug: "nigella-chokladmousse", + titleSv: "Snabb chokladmousse", + descriptionSv: + "Silkeslen, mörk chokladmousse med bara några ingredienser – Nigella Lawsons lyxiga avslutning som görs på förhand.", + cuisine: "french", + mealTypes: ["dessert"], + tags: ["vegetarian", "gluten_free", "luxury"], + methods: ["no_cook"], + equipment: ["hand_mixer"], + difficulty: "easy", + prepMin: 20, + cookMin: 0, + portions: 6, + spiceLevel: 0, + mealPrepFriendly: true, + freezerFriendly: false, + peakSeasons: [], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Nigella Lawson", + dnaVegetables: [], + dnaFlavor: ["chocolate", "rich", "airy"], + ingredients: [ + { ing: "dark_chocolate", nameSv: "Mörk choklad", qty: 200, unit: "GRAM", optional: false }, + { ing: "cream", nameSv: "Vispgrädde", qty: 3, unit: "DECILITER", optional: false }, + { ing: "egg", nameSv: "Ägg", qty: 3, unit: "COUNT", optional: false }, + { ing: "sugar", nameSv: "Strösocker", qty: 40, unit: "GRAM", optional: false }, + ], + steps: [ + { text: "Smält chokladen försiktigt och låt svalna något. Vispa grädden löst." }, + { text: "Vispa äggen med sockret riktigt pösigt och vänd ner den smälta chokladen." }, + { text: "Vänd försiktigt i grädden. Fördela i glas och låt stelna i kylen minst 3 timmar." }, + ], + }, + { + slug: "nigella-kyckling-traybake", + titleSv: "Ugnsplåt med kyckling och citron", + descriptionSv: + "Allt på en plåt: kycklinglår, rödlök och potatis som får krispiga kanter med citron och timjan – Nigella Lawsons lata middag.", + cuisine: "international", + mealTypes: ["dinner"], + tags: ["high_protein", "one_pot", "budget"], + methods: ["oven"], + equipment: ["oven"], + difficulty: "easy", + prepMin: 10, + cookMin: 45, + portions: 4, + spiceLevel: 0, + mealPrepFriendly: true, + freezerFriendly: false, + peakSeasons: [], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Nigella Lawson", + dnaProtein: "chicken_thigh", + dnaCarb: "potato", + dnaVegetables: ["red_onion"], + dnaFlavor: ["citrus", "herby", "roasted"], + ingredients: [ + { ing: "chicken_thigh", nameSv: "Kycklinglårfilé", qty: 700, unit: "GRAM", optional: false }, + { ing: "potato", nameSv: "Potatis", qty: 600, unit: "GRAM", optional: false }, + { ing: "red_onion", nameSv: "Rödlök", qty: 2, unit: "COUNT", optional: false }, + { ing: "lemon", nameSv: "Citron", qty: 1, unit: "COUNT", optional: false }, + { ing: "olive_oil", nameSv: "Olivolja", qty: 3, unit: "TABLESPOON", optional: false }, + { ing: "thyme_dried", nameSv: "Timjan", qty: 1, unit: "TEASPOON", optional: false }, + ], + steps: [ + { text: "Skär potatis och rödlök i klyftor och lägg på en plåt med kycklingen." }, + { text: "Ringla över olja, pressa citron och strö timjan, salt och peppar. Blanda runt." }, + { text: "Rosta i 200°C i cirka 45 minuter tills kycklingen är genomstekt och potatisen krispig." }, + ], + }, + + // ===================== Yotam Ottolenghi ===================== + { + slug: "ottolenghi-rostad-blomkal", + titleSv: "Rostad blomkål med tahini och granatäpple", + descriptionSv: + "Rostad blomkål med krämig tahinisås, granatäpplekärnor och örter – Yotam Ottolenghis färgsprakande grönsakstallrik.", + cuisine: "middle_eastern", + mealTypes: ["lunch", "starter"], + tags: ["vegan", "gluten_free", "low_carb"], + methods: ["oven"], + equipment: ["oven"], + difficulty: "easy", + prepMin: 15, + cookMin: 30, + portions: 4, + spiceLevel: 0, + mealPrepFriendly: true, + freezerFriendly: false, + peakSeasons: ["autumn", "winter"], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Yotam Ottolenghi", + dnaVegetables: ["cauliflower"], + dnaFlavor: ["nutty", "tangy", "fresh"], + ingredients: [ + { ing: "cauliflower", nameSv: "Blomkål", qty: 700, unit: "GRAM", optional: false }, + { ing: "tahini", nameSv: "Tahini", qty: 45, unit: "GRAM", optional: false }, + { ing: "lemon", nameSv: "Citron", qty: 1, unit: "COUNT", optional: false }, + { ing: "garlic", nameSv: "Vitlöksklyfta", qty: 1, unit: "COUNT", optional: false }, + { ing: "pomegranate", nameSv: "Granatäpple", qty: 100, unit: "GRAM", optional: false }, + { ing: "olive_oil", nameSv: "Olivolja", qty: 3, unit: "TABLESPOON", optional: false }, + { ing: "parsley", nameSv: "Persilja", qty: 15, unit: "GRAM", optional: true }, + ], + steps: [ + { text: "Dela blomkålen i buketter, vänd i olja och salt och rosta i 220°C i 25–30 minuter tills gyllene." }, + { text: "Rör tahini med pressad citron, riven vitlök och vatten till en slät, rinnig sås." }, + { text: "Lägg upp blomkålen, ringla över tahinin och toppa med granatäpplekärnor och persilja." }, + ], + }, + { + slug: "ottolenghi-shakshuka", + titleSv: "Shakshuka", + descriptionSv: + "Pocherade ägg i en kryddig tomat- och paprikasås med fetaost – Yotam Ottolenghis frukost när som helst.", + cuisine: "middle_eastern", + mealTypes: ["breakfast", "lunch"], + tags: ["vegetarian", "high_protein", "one_pot", "gluten_free"], + methods: ["stovetop"], + equipment: ["stove"], + difficulty: "easy", + prepMin: 10, + cookMin: 25, + portions: 3, + spiceLevel: 1, + mealPrepFriendly: false, + freezerFriendly: false, + peakSeasons: [], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Yotam Ottolenghi", + dnaProtein: "egg", + dnaVegetables: ["bell_pepper", "tomato"], + dnaFlavor: ["spicy", "savory", "smoky"], + ingredients: [ + { ing: "egg", nameSv: "Ägg", qty: 5, unit: "COUNT", optional: false }, + { ing: "canned_tomatoes", nameSv: "Krossade tomater", qty: 400, unit: "GRAM", optional: false }, + { ing: "bell_pepper", nameSv: "Paprika", qty: 1, unit: "COUNT", optional: false }, + { ing: "onion", nameSv: "Gul lök", qty: 1, unit: "COUNT", optional: false }, + { ing: "cumin", nameSv: "Spiskummin", qty: 1, unit: "TEASPOON", optional: false }, + { ing: "paprika_powder", nameSv: "Paprikapulver", qty: 1, unit: "TEASPOON", optional: false }, + { ing: "feta", nameSv: "Fetaost", qty: 80, unit: "GRAM", optional: true }, + ], + steps: [ + { text: "Fräs lök och paprika mjuka, rör i spiskummin och paprikapulver." }, + { text: "Häll i tomaterna och låt såsen puttra ihop 10 minuter. Salta." }, + { text: "Gör gropar och knäck i äggen. Lägg på lock och sjud tills vitan stelnat men gulan är lös. Smula över feta." }, + ], + }, + { + slug: "ottolenghi-baba-ganoush", + titleSv: "Baba ganoush", + descriptionSv: + "Rökig auberginekräm med tahini, vitlök och citron – Yotam Ottolenghis röra att doppa bröd i.", + cuisine: "lebanese", + mealTypes: ["starter"], + tags: ["vegan", "gluten_free", "low_carb"], + methods: ["oven"], + equipment: ["oven", "blender"], + difficulty: "easy", + prepMin: 10, + cookMin: 35, + portions: 4, + spiceLevel: 0, + mealPrepFriendly: true, + freezerFriendly: false, + peakSeasons: ["summer"], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Yotam Ottolenghi", + dnaVegetables: ["aubergine"], + dnaFlavor: ["smoky", "nutty", "tangy"], + ingredients: [ + { ing: "aubergine", nameSv: "Aubergine", qty: 2, unit: "COUNT", optional: false }, + { ing: "tahini", nameSv: "Tahini", qty: 30, unit: "GRAM", optional: false }, + { ing: "garlic", nameSv: "Vitlöksklyfta", qty: 1, unit: "COUNT", optional: false }, + { ing: "lemon", nameSv: "Citron", qty: 1, unit: "COUNT", optional: false }, + { ing: "olive_oil", nameSv: "Olivolja", qty: 2, unit: "TABLESPOON", optional: false }, + ], + steps: [ + { text: "Rosta auberginerna hela i 220°C tills skinnet är svart och innanmätet mjukt, cirka 35 minuter. Låt svalna." }, + { text: "Skrapa ur fruktköttet och blanda med tahini, riven vitlök och pressad citron." }, + { text: "Rör slätt, salta och ringla över olivolja före servering." }, + ], + }, + + // ===================== Marcus Samuelsson ===================== + { + slug: "marcus-kottbullar", + titleSv: "Svenska köttbullar", + descriptionSv: + "Små, saftiga köttbullar i gräddig sås – Marcus Samuelssons hyllning till husmanskosten han växte upp med.", + cuisine: "swedish", + mealTypes: ["dinner"], + tags: ["high_protein", "kid_friendly"], + methods: ["stovetop"], + equipment: ["stove"], + difficulty: "medium", + prepMin: 20, + cookMin: 25, + portions: 4, + spiceLevel: 0, + mealPrepFriendly: true, + freezerFriendly: true, + peakSeasons: [], + holidayTags: ["jul"], + verificationStatus: "editorial", + creatorDisplayName: "Marcus Samuelsson", + dnaProtein: "minced_mixed", + dnaVegetables: ["onion"], + dnaFlavor: ["savory", "creamy", "comforting"], + ingredients: [ + { ing: "minced_mixed", nameSv: "Blandfärs", qty: 500, unit: "GRAM", optional: false }, + { ing: "breadcrumbs", nameSv: "Ströbröd", qty: 0.5, unit: "DECILITER", optional: false }, + { ing: "milk_3", nameSv: "Mjölk", qty: 1, unit: "DECILITER", optional: false }, + { ing: "onion", nameSv: "Gul lök", qty: 1, unit: "COUNT", optional: false }, + { ing: "egg", nameSv: "Ägg", qty: 1, unit: "COUNT", optional: false }, + { ing: "butter", nameSv: "Smör", qty: 30, unit: "GRAM", optional: false }, + { ing: "cream", nameSv: "Grädde", qty: 2, unit: "DECILITER", optional: false }, + { ing: "lingonberry_jam", nameSv: "Lingonsylt", qty: 40, unit: "GRAM", optional: true }, + ], + steps: [ + { text: "Blötlägg ströbrödet i mjölken. Riv och fräs löken mjuk och låt svalna." }, + { text: "Blanda färs, ägg, ströbrödsröra och lök, salta och peppra. Rulla små bullar." }, + { text: "Stek bullarna gyllene i smör. Häll i grädden och lite vatten, låt puttra till en len sås. Servera med lingon." }, + ], + }, + { + slug: "marcus-doro-wat", + titleSv: "Doro wat – etiopisk kycklinggryta", + descriptionSv: + "Djupt kryddig kycklinggryta med lök, ingefära och ägg – Marcus Samuelssons hyllning till sina etiopiska rötter.", + cuisine: "international", + mealTypes: ["dinner"], + tags: ["high_protein", "one_pot", "gluten_free"], + methods: ["stovetop"], + equipment: ["stove"], + difficulty: "medium", + prepMin: 20, + cookMin: 50, + portions: 4, + spiceLevel: 3, + mealPrepFriendly: true, + freezerFriendly: true, + peakSeasons: [], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Marcus Samuelsson", + dnaProtein: "chicken_thigh", + dnaVegetables: ["onion"], + dnaFlavor: ["spicy", "warm", "rich"], + ingredients: [ + { ing: "chicken_thigh", nameSv: "Kycklinglårfilé", qty: 700, unit: "GRAM", optional: false }, + { ing: "onion", nameSv: "Gul lök", qty: 3, unit: "COUNT", optional: false }, + { ing: "garlic", nameSv: "Vitlöksklyfta", qty: 3, unit: "COUNT", optional: false }, + { ing: "ginger", nameSv: "Ingefära", qty: 20, unit: "GRAM", optional: false }, + { ing: "paprika_powder", nameSv: "Paprikapulver", qty: 2, unit: "TEASPOON", optional: false }, + { ing: "cayenne_pepper", nameSv: "Cayennepeppar", qty: 3, unit: "GRAM", optional: false }, + { ing: "butter", nameSv: "Smör", qty: 40, unit: "GRAM", optional: false }, + { ing: "egg", nameSv: "Ägg", qty: 4, unit: "COUNT", optional: false }, + ], + steps: [ + { text: "Fräs den finhackade löken långsamt mjuk och gyllene i smöret, tillsätt vitlök och riven ingefära." }, + { text: "Rör i paprika och cayenne, lägg i kycklingen och en skvätt vatten. Låt sjuda 30 minuter." }, + { text: "Koka äggen hårda, skala och lägg ner dem i grytan sista 10 minuterna så de tar smak." }, + ], + }, + { + slug: "marcus-berbere-lax", + titleSv: "Berberekryddad lax", + descriptionSv: + "Ugnsbakad lax med värmande berberetoner av paprika och ingefära – Marcus Samuelssons möte mellan Norden och Östafrika.", + cuisine: "nordic", + mealTypes: ["dinner"], + tags: ["high_protein", "low_carb", "quick", "gluten_free"], + methods: ["oven"], + equipment: ["oven"], + difficulty: "easy", + prepMin: 10, + cookMin: 18, + portions: 4, + spiceLevel: 2, + mealPrepFriendly: true, + freezerFriendly: false, + peakSeasons: [], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Marcus Samuelsson", + dnaProtein: "salmon", + dnaVegetables: [], + dnaFlavor: ["spicy", "smoky", "citrus"], + ingredients: [ + { ing: "salmon", nameSv: "Laxfilé", qty: 600, unit: "GRAM", optional: false }, + { ing: "paprika_powder", nameSv: "Paprikapulver", qty: 2, unit: "TEASPOON", optional: false }, + { ing: "cayenne_pepper", nameSv: "Cayennepeppar", qty: 2, unit: "GRAM", optional: false }, + { ing: "ginger", nameSv: "Ingefära", qty: 10, unit: "GRAM", optional: false }, + { ing: "olive_oil", nameSv: "Olivolja", qty: 2, unit: "TABLESPOON", optional: false }, + { ing: "lemon", nameSv: "Citron", qty: 1, unit: "COUNT", optional: false }, + ], + steps: [ + { text: "Blanda paprika, cayenne, riven ingefära och olja till en pasta. Gnid in laxen och salta." }, + { text: "Baka i 200°C i cirka 15 minuter tills laxen precis släpper." }, + { text: "Pressa citron över och servera med ris eller kokt potatis." }, + ], + }, + + // ===================== Giada De Laurentiis ===================== + { + slug: "giada-citronspaghetti", + titleSv: "Citronspaghetti", + descriptionSv: + "Spaghetti i en frisk sås av citron, olivolja och parmesan – Giada De Laurentiis somriga, snabba favorit.", + cuisine: "italian", + mealTypes: ["lunch", "dinner"], + tags: ["vegetarian", "quick"], + methods: ["stovetop"], + equipment: ["stove"], + difficulty: "easy", + prepMin: 5, + cookMin: 12, + portions: 4, + spiceLevel: 0, + mealPrepFriendly: false, + freezerFriendly: false, + peakSeasons: ["summer"], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Giada De Laurentiis", + dnaCarb: "pasta_dry", + dnaVegetables: [], + dnaFlavor: ["citrus", "savory", "fresh"], + ingredients: [ + { ing: "pasta_dry", nameSv: "Spaghetti", qty: 400, unit: "GRAM", optional: false }, + { ing: "lemon", nameSv: "Citron", qty: 2, unit: "COUNT", optional: false }, + { ing: "olive_oil", nameSv: "Olivolja", qty: 4, unit: "TABLESPOON", optional: false }, + { ing: "parmesan", nameSv: "Parmesan", qty: 80, unit: "GRAM", optional: false }, + { ing: "basil", nameSv: "Basilika", qty: 10, unit: "GRAM", optional: true }, + ], + steps: [ + { text: "Koka spaghettin al dente och spara lite av kokvattnet." }, + { text: "Vispa ihop olivolja, pressad citron och riven parmesan till en krämig sås, red med en skvätt kokvatten." }, + { text: "Vänd pastan i såsen, riv i basilika och toppa med mer parmesan." }, + ], + }, + { + slug: "giada-kycklingpiccata", + titleSv: "Kycklingpiccata", + descriptionSv: + "Tunna kycklingschnitzlar i en syrlig citron- och kaprissås – Giada De Laurentiis eleganta vardagsmiddag.", + cuisine: "italian", + mealTypes: ["dinner"], + tags: ["high_protein", "quick"], + methods: ["stovetop"], + equipment: ["stove"], + difficulty: "medium", + prepMin: 10, + cookMin: 15, + portions: 4, + spiceLevel: 0, + mealPrepFriendly: false, + freezerFriendly: false, + peakSeasons: [], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Giada De Laurentiis", + dnaProtein: "chicken_breast", + dnaVegetables: [], + dnaFlavor: ["citrus", "briny", "buttery"], + ingredients: [ + { ing: "chicken_breast", nameSv: "Kycklingfilé", qty: 600, unit: "GRAM", optional: false }, + { ing: "flour_wheat", nameSv: "Vetemjöl", qty: 1, unit: "DECILITER", optional: false }, + { ing: "lemon", nameSv: "Citron", qty: 1, unit: "COUNT", optional: false }, + { ing: "capers", nameSv: "Kapris", qty: 20, unit: "GRAM", optional: false }, + { ing: "butter", nameSv: "Smör", qty: 40, unit: "GRAM", optional: false }, + { ing: "olive_oil", nameSv: "Olivolja", qty: 2, unit: "TABLESPOON", optional: false }, + ], + steps: [ + { text: "Banka kycklingen tunn, salta och vänd i mjöl. Stek gyllene i olja och smör, ta upp." }, + { text: "Häll i pressad citron, kapris och en skvätt vatten i pannan och koka ihop till en sås." }, + { text: "Lägg tillbaka kycklingen, vänd runt och servera med såsen." }, + ], + }, + { + slug: "giada-bruschetta", + titleSv: "Bruschetta med tomat och basilika", + descriptionSv: + "Rostat bröd gnidet med vitlök och toppat med marinerad tomat och basilika – Giada De Laurentiis klassiska antipasto.", + cuisine: "italian", + mealTypes: ["starter", "snack"], + tags: ["vegan", "quick", "budget"], + methods: ["oven"], + equipment: ["oven"], + difficulty: "easy", + prepMin: 15, + cookMin: 8, + portions: 4, + spiceLevel: 0, + mealPrepFriendly: false, + freezerFriendly: false, + peakSeasons: ["summer"], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Giada De Laurentiis", + dnaVegetables: ["tomato"], + dnaFlavor: ["fresh", "savory", "herby"], + ingredients: [ + { ing: "bread_sourdough", nameSv: "Surdegsbröd", qty: 4, unit: "COUNT", optional: false }, + { ing: "tomato", nameSv: "Tomat", qty: 4, unit: "COUNT", optional: false }, + { ing: "garlic", nameSv: "Vitlöksklyfta", qty: 2, unit: "COUNT", optional: false }, + { ing: "basil", nameSv: "Basilika", qty: 15, unit: "GRAM", optional: false }, + { ing: "olive_oil", nameSv: "Olivolja", qty: 3, unit: "TABLESPOON", optional: false }, + ], + steps: [ + { text: "Tärna tomaterna och blanda med hackad basilika, olivolja och salt. Låt stå 10 minuter." }, + { text: "Rosta brödskivorna gyllene och gnid ena sidan med en delad vitlöksklyfta." }, + { text: "Toppa varje skiva med tomatröran och ringla över lite mer olja." }, + ], + }, + + // ===================== Emeril Lagasse ===================== + { + slug: "emeril-jambalaya", + titleSv: "Jambalaya", + descriptionSv: + "Kryddig grytris med kyckling, chorizo och räkor från Louisiana – Emeril Lagasses festrätt i ett kärl.", + cuisine: "american", + mealTypes: ["dinner"], + tags: ["high_protein", "one_pot"], + methods: ["stovetop"], + equipment: ["stove"], + difficulty: "medium", + prepMin: 20, + cookMin: 35, + portions: 4, + spiceLevel: 2, + mealPrepFriendly: true, + freezerFriendly: false, + peakSeasons: [], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Emeril Lagasse", + dnaProtein: "chicken_thigh", + dnaCarb: "rice_white", + dnaVegetables: ["bell_pepper", "celery_stalk"], + dnaFlavor: ["spicy", "smoky", "savory"], + ingredients: [ + { ing: "chicken_thigh", nameSv: "Kycklinglårfilé", qty: 400, unit: "GRAM", optional: false }, + { ing: "chorizo_sausage", nameSv: "Chorizo", qty: 200, unit: "GRAM", optional: false }, + { ing: "shrimp", nameSv: "Räkor", qty: 200, unit: "GRAM", optional: false }, + { ing: "rice_white", nameSv: "Ris", qty: 300, unit: "GRAM", optional: false }, + { ing: "bell_pepper", nameSv: "Paprika", qty: 1, unit: "COUNT", optional: false }, + { ing: "celery_stalk", nameSv: "Stjälkselleri", qty: 100, unit: "GRAM", optional: false }, + { ing: "onion", nameSv: "Gul lök", qty: 1, unit: "COUNT", optional: false }, + { ing: "canned_tomatoes", nameSv: "Krossade tomater", qty: 400, unit: "GRAM", optional: false }, + { ing: "smoked_paprika", nameSv: "Rökt paprika", qty: 4, unit: "GRAM", optional: false }, + ], + steps: [ + { text: "Bryn kyckling och chorizo, ta upp. Fräs lök, paprika och selleri mjuka i samma gryta." }, + { text: "Rör i rökt paprika och riset, häll på tomater och vatten så det precis täcker. Lägg tillbaka kött och puttra tills riset är mjukt." }, + { text: "Vänd i räkorna sista minuterna tills de är rosa. Smaka av med salt." }, + ], + }, + { + slug: "emeril-gumbo", + titleSv: "Kycklinggumbo", + descriptionSv: + "Mörk, mustig gryta byggd på en rostad redning med kyckling och chorizo – Emeril Lagasses själamat från södern.", + cuisine: "american", + mealTypes: ["dinner"], + tags: ["high_protein", "one_pot"], + methods: ["stovetop"], + equipment: ["stove"], + difficulty: "advanced", + prepMin: 20, + cookMin: 60, + portions: 4, + spiceLevel: 2, + mealPrepFriendly: true, + freezerFriendly: true, + peakSeasons: ["autumn", "winter"], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Emeril Lagasse", + dnaProtein: "chicken_thigh", + dnaVegetables: ["bell_pepper", "celery_stalk"], + dnaFlavor: ["smoky", "deep", "spicy"], + ingredients: [ + { ing: "chicken_thigh", nameSv: "Kycklinglårfilé", qty: 500, unit: "GRAM", optional: false }, + { ing: "chorizo_sausage", nameSv: "Chorizo", qty: 200, unit: "GRAM", optional: false }, + { ing: "flour_wheat", nameSv: "Vetemjöl", qty: 1, unit: "DECILITER", optional: false }, + { ing: "rapeseed_oil", nameSv: "Rapsolja", qty: 1, unit: "DECILITER", optional: false }, + { ing: "onion", nameSv: "Gul lök", qty: 1, unit: "COUNT", optional: false }, + { ing: "bell_pepper", nameSv: "Paprika", qty: 1, unit: "COUNT", optional: false }, + { ing: "celery_stalk", nameSv: "Stjälkselleri", qty: 100, unit: "GRAM", optional: false }, + { ing: "cayenne_pepper", nameSv: "Cayennepeppar", qty: 2, unit: "GRAM", optional: false }, + ], + steps: [ + { text: "Rör mjöl och olja i en gryta på medelvärme tills redningen blir mörkt nötbrun – rör hela tiden, det tar 15–20 minuter." }, + { text: "Tillsätt lök, paprika och selleri och fräs mjuka. Späd med vatten till en tjock buljong." }, + { text: "Lägg i kyckling, chorizo och cayenne och låt sjuda 40 minuter. Servera med ris." }, + ], + }, + + // ===================== Ina Garten ===================== + { + slug: "ina-roast-chicken", + titleSv: "Helstekt kyckling med citron och timjan", + descriptionSv: + "Gyllene helstekt kyckling med citron, vitlök och timjan – Ina Gartens söndagsklassiker som fyller köket med doft.", + cuisine: "american", + mealTypes: ["dinner"], + tags: ["high_protein", "one_pot"], + methods: ["oven"], + equipment: ["oven"], + difficulty: "medium", + prepMin: 15, + cookMin: 80, + portions: 4, + spiceLevel: 0, + mealPrepFriendly: true, + freezerFriendly: false, + peakSeasons: [], + holidayTags: ["jul"], + verificationStatus: "editorial", + creatorDisplayName: "Ina Garten", + dnaProtein: "whole_chicken", + dnaVegetables: ["carrot", "onion"], + dnaFlavor: ["herby", "citrus", "roasted"], + ingredients: [ + { ing: "whole_chicken", nameSv: "Kyckling", qty: 1400, unit: "GRAM", optional: false }, + { ing: "lemon", nameSv: "Citron", qty: 1, unit: "COUNT", optional: false }, + { ing: "garlic", nameSv: "Vitlöksklyfta", qty: 4, unit: "COUNT", optional: false }, + { ing: "thyme_dried", nameSv: "Timjan", qty: 2, unit: "TEASPOON", optional: false }, + { ing: "butter", nameSv: "Smör", qty: 50, unit: "GRAM", optional: false }, + { ing: "carrot", nameSv: "Morot", qty: 3, unit: "COUNT", optional: false }, + { ing: "onion", nameSv: "Gul lök", qty: 1, unit: "COUNT", optional: false }, + ], + steps: [ + { text: "Gnid kycklingen med mjukt smör, salt, peppar och timjan. Lägg citronhalvor och vitlök i buken." }, + { text: "Bädda morot och lök i botten av formen och lägg kycklingen ovanpå." }, + { text: "Stek i 200°C tills köttsaften är klar, cirka 1 timme 20 minuter. Låt vila före tranchering." }, + ], + }, + { + slug: "ina-mac-and-cheese", + titleSv: "Krämig mac and cheese", + descriptionSv: + "Makaroner i en sammetslen ostsås gratinerade gyllene – Ina Gartens amerikanska tröstmat som barnen älskar.", + cuisine: "american", + mealTypes: ["dinner"], + tags: ["vegetarian", "kid_friendly"], + methods: ["stovetop", "oven"], + equipment: ["stove", "oven"], + difficulty: "easy", + prepMin: 15, + cookMin: 30, + portions: 4, + spiceLevel: 0, + mealPrepFriendly: true, + freezerFriendly: true, + peakSeasons: [], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Ina Garten", + dnaCarb: "macaroni", + dnaVegetables: [], + dnaFlavor: ["creamy", "cheesy", "comforting"], + ingredients: [ + { ing: "macaroni", nameSv: "Makaroner", qty: 400, unit: "GRAM", optional: false }, + { ing: "milk_3", nameSv: "Mjölk", qty: 6, unit: "DECILITER", optional: false }, + { ing: "cheddar", nameSv: "Cheddarost", qty: 250, unit: "GRAM", optional: false }, + { ing: "butter", nameSv: "Smör", qty: 40, unit: "GRAM", optional: false }, + { ing: "flour_wheat", nameSv: "Vetemjöl", qty: 0.5, unit: "DECILITER", optional: false }, + { ing: "breadcrumbs", nameSv: "Ströbröd", qty: 0.5, unit: "DECILITER", optional: true }, + ], + steps: [ + { text: "Koka makaronerna. Smält smör, rör i mjöl och vispa i mjölken till en slät sås." }, + { text: "Rör i riven ost tills den smält, blanda med makaronerna och häll i en form." }, + { text: "Strö ströbröd över och gratinera i 200°C tills gyllene, cirka 20 minuter." }, + ], + }, + { + slug: "ina-beef-stew", + titleSv: "Mustig nötköttsgryta", + descriptionSv: + "Långkokt nötkött med rotfrukter i en fyllig sås – Ina Gartens värmande gryta för kalla kvällar.", + cuisine: "american", + mealTypes: ["dinner"], + tags: ["high_protein", "one_pot", "freezer_friendly"], + methods: ["stovetop"], + equipment: ["stove"], + difficulty: "medium", + prepMin: 20, + cookMin: 120, + portions: 4, + spiceLevel: 0, + mealPrepFriendly: true, + freezerFriendly: true, + peakSeasons: ["autumn", "winter"], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Ina Garten", + dnaProtein: "beef_stew_meat", + dnaCarb: "potato", + dnaVegetables: ["carrot", "onion"], + dnaFlavor: ["savory", "rich", "hearty"], + ingredients: [ + { ing: "beef_stew_meat", nameSv: "Grytbitar av nöt", qty: 700, unit: "GRAM", optional: false }, + { ing: "carrot", nameSv: "Morot", qty: 3, unit: "COUNT", optional: false }, + { ing: "potato", nameSv: "Potatis", qty: 500, unit: "GRAM", optional: false }, + { ing: "onion", nameSv: "Gul lök", qty: 2, unit: "COUNT", optional: false }, + { ing: "tomato_paste", nameSv: "Tomatpuré", qty: 2, unit: "TABLESPOON", optional: false }, + { ing: "beef_stock_cube", nameSv: "Köttbuljong", qty: 10, unit: "GRAM", optional: false }, + { ing: "flour_wheat", nameSv: "Vetemjöl", qty: 2, unit: "TABLESPOON", optional: false }, + ], + steps: [ + { text: "Vänd köttet i mjöl och salt och bryn det runt om i en gryta. Ta upp." }, + { text: "Fräs lök, rör i tomatpuré, lägg tillbaka köttet och täck med vatten och smulad buljong." }, + { text: "Låt sjuda under lock 1,5 timme. Lägg i morot och potatis och koka mjukt, cirka 30 minuter till." }, + ], + }, + + // ===================== Raymond Blanc ===================== + { + slug: "raymond-coq-au-vin", + titleSv: "Coq au vin i mörk buljong", + descriptionSv: + "Kyckling långkokt med bacon, svamp och pärllök i en djup, mörk sås – Raymond Blancs franska klassiker, här utan vin.", + cuisine: "french", + mealTypes: ["dinner"], + tags: ["high_protein", "one_pot"], + methods: ["stovetop"], + equipment: ["stove"], + difficulty: "advanced", + prepMin: 25, + cookMin: 70, + portions: 4, + spiceLevel: 0, + mealPrepFriendly: true, + freezerFriendly: true, + peakSeasons: ["autumn", "winter"], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Raymond Blanc", + dnaProtein: "chicken_thigh", + dnaVegetables: ["mushroom", "onion"], + dnaFlavor: ["savory", "deep", "rustic"], + ingredients: [ + { ing: "chicken_thigh", nameSv: "Kycklinglårfilé", qty: 700, unit: "GRAM", optional: false }, + { ing: "bacon", nameSv: "Bacon", qty: 120, unit: "GRAM", optional: false }, + { ing: "mushroom", nameSv: "Champinjoner", qty: 250, unit: "GRAM", optional: false }, + { ing: "onion", nameSv: "Gul lök", qty: 2, unit: "COUNT", optional: false }, + { ing: "carrot", nameSv: "Morot", qty: 2, unit: "COUNT", optional: false }, + { ing: "tomato_paste", nameSv: "Tomatpuré", qty: 1, unit: "TABLESPOON", optional: false }, + { ing: "beef_stock_cube", nameSv: "Buljong", qty: 10, unit: "GRAM", optional: false }, + { ing: "thyme_dried", nameSv: "Timjan", qty: 1, unit: "TEASPOON", optional: false }, + ], + steps: [ + { text: "Stek baconet knaprigt, bryn sedan kycklingen i fettet och ta upp." }, + { text: "Fräs lök, morot och svamp, rör i tomatpuré. Lägg tillbaka kött och bacon, täck med vatten och smulad buljong, tillsätt timjan." }, + { text: "Låt sjuda under lock cirka 1 timme tills såsen är mörk och fyllig. Red vid behov." }, + ], + }, + { + slug: "raymond-ratatouille", + titleSv: "Ratatouille", + descriptionSv: + "Provensalsk grönsaksgryta med aubergine, zucchini och paprika i doftande tomatsås – Raymond Blancs hyllning till södra Frankrike.", + cuisine: "french", + mealTypes: ["dinner", "lunch"], + tags: ["vegan", "gluten_free", "budget", "low_calorie"], + methods: ["stovetop"], + equipment: ["stove"], + difficulty: "easy", + prepMin: 20, + cookMin: 40, + portions: 4, + spiceLevel: 0, + mealPrepFriendly: true, + freezerFriendly: true, + peakSeasons: ["summer"], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Raymond Blanc", + dnaVegetables: ["aubergine", "zucchini", "bell_pepper"], + dnaFlavor: ["herby", "savory", "fresh"], + ingredients: [ + { ing: "aubergine", nameSv: "Aubergine", qty: 1, unit: "COUNT", optional: false }, + { ing: "zucchini", nameSv: "Zucchini", qty: 1, unit: "COUNT", optional: false }, + { ing: "bell_pepper", nameSv: "Paprika", qty: 2, unit: "COUNT", optional: false }, + { ing: "tomato", nameSv: "Tomat", qty: 4, unit: "COUNT", optional: false }, + { ing: "onion", nameSv: "Gul lök", qty: 1, unit: "COUNT", optional: false }, + { ing: "garlic", nameSv: "Vitlöksklyfta", qty: 2, unit: "COUNT", optional: false }, + { ing: "olive_oil", nameSv: "Olivolja", qty: 3, unit: "TABLESPOON", optional: false }, + { ing: "thyme_dried", nameSv: "Timjan", qty: 1, unit: "TEASPOON", optional: false }, + ], + steps: [ + { text: "Tärna alla grönsaker jämnstora. Fräs aubergine och zucchini var för sig gyllene i olja och ta upp." }, + { text: "Fräs lök, vitlök och paprika mjuka, tillsätt tomat och timjan och låt bli en sås." }, + { text: "Vänd tillbaka alla grönsaker och låt sjuda ihop cirka 20 minuter. Smaka av med salt." }, + ], + }, + { + slug: "raymond-creme-brulee", + titleSv: "Crème brûlée", + descriptionSv: + "Len vaniljkräm under ett knäckigt lock av bränt socker – Raymond Blancs franska signaturdessert.", + cuisine: "french", + mealTypes: ["dessert"], + tags: ["vegetarian", "gluten_free", "luxury"], + methods: ["oven"], + equipment: ["oven"], + difficulty: "advanced", + prepMin: 15, + cookMin: 45, + portions: 6, + spiceLevel: 0, + mealPrepFriendly: true, + freezerFriendly: false, + peakSeasons: [], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Raymond Blanc", + dnaVegetables: [], + dnaFlavor: ["vanilla", "creamy", "caramel"], + ingredients: [ + { ing: "cream", nameSv: "Vispgrädde", qty: 5, unit: "DECILITER", optional: false }, + { ing: "egg", nameSv: "Äggula", qty: 5, unit: "COUNT", optional: false }, + { ing: "sugar", nameSv: "Strösocker", qty: 100, unit: "GRAM", optional: false }, + { ing: "vanilla_sugar", nameSv: "Vaniljsocker", qty: 8, unit: "GRAM", optional: false }, + ], + steps: [ + { text: "Vispa äggulor med hälften av sockret och vaniljsockret. Värm grädden och vispa ner i äggen." }, + { text: "Häll i portionsformar och grädda i vattenbad i 150°C tills krämen precis stannat, cirka 40 minuter. Kyl." }, + { text: "Strö resten av sockret över och bränn till ett hårt lock med brännare eller under grillelementet." }, + ], + }, + + // ===================== Rick Stein ===================== + { + slug: "rick-fiskcurry", + titleSv: "Indisk fiskcurry", + descriptionSv: + "Fast vit fisk i en kokosmjölkscurry med ingefära och gurkmeja – Rick Steins resa till Indiens kust på tallriken.", + cuisine: "indian", + mealTypes: ["dinner"], + tags: ["high_protein", "one_pot", "gluten_free"], + methods: ["stovetop"], + equipment: ["stove"], + difficulty: "medium", + prepMin: 15, + cookMin: 25, + portions: 4, + spiceLevel: 2, + mealPrepFriendly: true, + freezerFriendly: false, + peakSeasons: [], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Rick Stein", + dnaProtein: "cod", + dnaVegetables: ["onion", "tomato"], + dnaFlavor: ["spicy", "creamy", "aromatic"], + ingredients: [ + { ing: "cod", nameSv: "Torskfilé", qty: 600, unit: "GRAM", optional: false }, + { ing: "coconut_milk", nameSv: "Kokosmjölk", qty: 4, unit: "DECILITER", optional: false }, + { ing: "onion", nameSv: "Gul lök", qty: 1, unit: "COUNT", optional: false }, + { ing: "garlic", nameSv: "Vitlöksklyfta", qty: 2, unit: "COUNT", optional: false }, + { ing: "ginger", nameSv: "Ingefära", qty: 20, unit: "GRAM", optional: false }, + { ing: "curry_powder", nameSv: "Currypulver", qty: 2, unit: "TEASPOON", optional: false }, + { ing: "turmeric", nameSv: "Gurkmeja", qty: 1, unit: "TEASPOON", optional: false }, + { ing: "tomato", nameSv: "Tomat", qty: 2, unit: "COUNT", optional: false }, + ], + steps: [ + { text: "Fräs lök, vitlök och riven ingefära mjuka. Rör i curry och gurkmeja tills det doftar." }, + { text: "Häll i kokosmjölk och tärnad tomat, låt puttra ihop 10 minuter." }, + { text: "Lägg i fiskbitarna och sjud försiktigt tills de precis är klara, cirka 8 minuter. Servera med ris." }, + ], + }, + { + slug: "rick-moules-mariniere", + titleSv: "Moules marinière", + descriptionSv: + "Blåmusslor ångade med lök, vitlök och grädde – Rick Steins snabba, klassiska sätt att laga färska musslor.", + cuisine: "french", + mealTypes: ["dinner", "starter"], + tags: ["high_protein", "quick", "low_carb", "gluten_free"], + methods: ["stovetop"], + equipment: ["stove"], + difficulty: "medium", + prepMin: 15, + cookMin: 12, + portions: 2, + spiceLevel: 0, + mealPrepFriendly: false, + freezerFriendly: false, + peakSeasons: ["autumn", "winter"], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Rick Stein", + dnaProtein: "mussels", + dnaVegetables: ["onion"], + dnaFlavor: ["briny", "creamy", "fresh"], + ingredients: [ + { ing: "mussels", nameSv: "Blåmusslor", qty: 1000, unit: "GRAM", optional: false }, + { ing: "onion", nameSv: "Gul lök", qty: 1, unit: "COUNT", optional: false }, + { ing: "garlic", nameSv: "Vitlöksklyfta", qty: 2, unit: "COUNT", optional: false }, + { ing: "cream", nameSv: "Grädde", qty: 2, unit: "DECILITER", optional: false }, + { ing: "butter", nameSv: "Smör", qty: 30, unit: "GRAM", optional: false }, + { ing: "parsley", nameSv: "Persilja", qty: 15, unit: "GRAM", optional: false }, + ], + steps: [ + { text: "Rensa musslorna och kasta dem som inte stänger sig när man knackar. Fräs finhackad lök och vitlök mjuka i smöret." }, + { text: "Lägg i musslorna och en skvätt vatten, sätt på lock och ånga tills de öppnat sig, cirka 4 minuter." }, + { text: "Rör i grädde och persilja, koka upp och servera direkt med bröd. Kasta oöppnade musslor." }, + ], + }, + { + slug: "rick-fisksoppa", + titleSv: "Fisksoppa med lax och räkor", + descriptionSv: + "Fyllig fisksoppa med lax, torsk och räkor i en tomatig buljong med purjolök – Rick Steins hjärtevärmande havsgryta.", + cuisine: "french", + mealTypes: ["dinner"], + tags: ["high_protein", "one_pot"], + methods: ["stovetop"], + equipment: ["stove"], + difficulty: "medium", + prepMin: 20, + cookMin: 30, + portions: 4, + spiceLevel: 0, + mealPrepFriendly: false, + freezerFriendly: false, + peakSeasons: [], + holidayTags: [], + verificationStatus: "editorial", + creatorDisplayName: "Rick Stein", + dnaProtein: "salmon", + dnaVegetables: ["leek", "tomato"], + dnaFlavor: ["savory", "briny", "aromatic"], + ingredients: [ + { ing: "salmon", nameSv: "Laxfilé", qty: 300, unit: "GRAM", optional: false }, + { ing: "cod", nameSv: "Torskfilé", qty: 300, unit: "GRAM", optional: false }, + { ing: "shrimp", nameSv: "Räkor", qty: 150, unit: "GRAM", optional: false }, + { ing: "leek", nameSv: "Purjolök", qty: 1, unit: "COUNT", optional: false }, + { ing: "potato", nameSv: "Potatis", qty: 300, unit: "GRAM", optional: false }, + { ing: "canned_tomatoes", nameSv: "Krossade tomater", qty: 400, unit: "GRAM", optional: false }, + { ing: "fish_stock", nameSv: "Fiskfond", qty: 30, unit: "GRAM", optional: false }, + ], + steps: [ + { text: "Fräs strimlad purjolök mjuk. Tillsätt tärnad potatis, krossade tomater, fiskfond och vatten." }, + { text: "Låt koka tills potatisen är mjuk, cirka 15 minuter." }, + { text: "Lägg i lax- och torskbitar och sjud 5 minuter, vänd i räkorna sista minuten. Smaka av med salt." }, + ], + }, +]; diff --git a/packages/database/src/seed/data/recipes.ts b/packages/database/src/seed/data/recipes.ts index bd4248e..084b6b0 100644 --- a/packages/database/src/seed/data/recipes.ts +++ b/packages/database/src/seed/data/recipes.ts @@ -73,10 +73,12 @@ export interface SeedRecipe { import { VERIFIED_RECIPES } from "./verified-recipes.js"; import { EXTRA_RECIPES } from "./extra-recipes.js"; import { CHEF_RECIPES } from "./chef-recipes.js"; +import { CHEF_RECIPES_EXTRA } from "./chef-recipes-extra.js"; /** Hela seed-katalogen: committade verifierade recept + nya redaktionella extrarecept. */ export const SEED_RECIPES: SeedRecipe[] = [ ...VERIFIED_RECIPES, ...EXTRA_RECIPES, ...CHEF_RECIPES, + ...CHEF_RECIPES_EXTRA, ];