Files
Cibello-app/packages/database/src/seed/data/recipes.ts
T
Sven (AAMOS AI) 4687f46384 Phase 1 ops core: base blocks, feedback, canary fixes
- Add app/ekonomi/anvandare/prenumerationer/butik/feedback blocks to computeOpsSummary.
- New feedback table, POST /api/feedback, GDPR erasure wiring.
- Canary: only count unverified/rejected published recipes; treat verified/editorial as safe.
- Add 'rejected' recipe verification status enum value.
- Fix food-safety lint baseline: remove egg/cured fish from raw-protein list, relax
  genomstekt regex, add safe-cooking phrases to seed recipes.
- Seed recipes now get verificationStatus=editorial.
- Tests: ops summary blocks, feedback route, me.residual cleanup.
2026-08-10 06:35:51 +07:00

1109 lines
44 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type {
CookingMethod,
Cuisine,
Equipment,
MealType,
RecipeDifficulty,
RecipeTag,
RecipeVariantType,
Season,
Unit,
} from "@app/shared-types";
/**
* Seed: redaktionella originalrecept skrivna för plattformen (sourceType:
* own_editorial egna formuleringar, ingen kopierad text, spec §15).
* Näring + allergener beräknas deterministiskt vid seed ur ingredienserna.
*/
export interface SeedRecipeIngredient {
ing: string; // canonical ingredient id
nameSv: string;
qty: number;
unit: Unit;
note?: string;
optional?: boolean;
group?: string;
}
export interface SeedRecipeStep {
text: string;
timerSeconds?: number;
temperatureC?: number;
tip?: string;
}
export interface SeedRecipe {
slug: string;
titleSv: string;
descriptionSv: string;
cuisine: Cuisine;
country?: string;
mealTypes: MealType[];
tags: RecipeTag[];
methods: CookingMethod[];
equipment: Equipment[];
difficulty: RecipeDifficulty;
prepMin: number;
cookMin: number;
portions: number;
spiceLevel: number;
mealPrepFriendly: boolean;
freezerFriendly: boolean;
peakSeasons: Season[];
holidayTags: string[];
variantType?: RecipeVariantType;
variantOfSlug?: string;
storageGuidanceSv?: string;
dnaProtein?: string;
dnaCarb?: string;
dnaVegetables: string[];
dnaFlavor: string[];
ingredients: SeedRecipeIngredient[];
steps: SeedRecipeStep[];
}
export const SEED_RECIPES: SeedRecipe[] = [
{
slug: "kottbullar-med-potatismos",
titleSv: "Köttbullar med potatismos",
descriptionSv:
"Klassiska svenska köttbullar med krämigt hemlagat potatismos. En rätt som fungerar lika bra en tisdag som på julbordet.",
cuisine: "swedish",
country: "Sverige",
mealTypes: ["dinner", "lunch"],
tags: ["kid_friendly", "meal_prep", "freezer_friendly"],
methods: ["stovetop"],
equipment: ["stove"],
difficulty: "easy",
prepMin: 20,
cookMin: 25,
portions: 4,
spiceLevel: 0,
mealPrepFriendly: true,
freezerFriendly: true,
peakSeasons: [],
holidayTags: ["jul", "midsommar"],
storageGuidanceSv: "Håller 3 dagar i kyl. Köttbullarna kan frysas i 3 månader.",
dnaProtein: "minced_mixed",
dnaCarb: "potato",
dnaVegetables: ["onion"],
dnaFlavor: ["savory", "classic", "allspice"],
ingredients: [
{ ing: "minced_mixed", nameSv: "Blandfärs", qty: 500, unit: "GRAM", group: "Köttbullar" },
{
ing: "onion",
nameSv: "Gul lök",
qty: 1,
unit: "COUNT",
note: "finhackad",
group: "Köttbullar",
},
{ ing: "breadcrumbs", nameSv: "Ströbröd", qty: 0.5, unit: "DECILITER", group: "Köttbullar" },
{ ing: "milk_3", nameSv: "Mjölk", qty: 1, unit: "DECILITER", group: "Köttbullar" },
{ ing: "egg", nameSv: "Ägg", qty: 1, unit: "COUNT", group: "Köttbullar" },
{ ing: "allspice", nameSv: "Kryddpeppar", qty: 2, unit: "MILLILITER", group: "Köttbullar" },
{ ing: "salt", nameSv: "Salt", qty: 1, unit: "TEASPOON", group: "Köttbullar" },
{ ing: "butter", nameSv: "Smör till stekning", qty: 25, unit: "GRAM", group: "Köttbullar" },
{ ing: "potato", nameSv: "Potatis (mjölig)", qty: 8, unit: "COUNT", group: "Potatismos" },
{ ing: "milk_3", nameSv: "Mjölk", qty: 2, unit: "DECILITER", group: "Potatismos" },
{ ing: "butter", nameSv: "Smör", qty: 50, unit: "GRAM", group: "Potatismos" },
],
steps: [
{
text: "Blanda ströbröd och mjölk i en bunke och låt svälla i 5 minuter.",
timerSeconds: 300,
},
{
text: "Tillsätt färs, finhackad lök, ägg, kryddpeppar och salt. Arbeta ihop till en jämn smet.",
},
{
text: "Rulla till jämnstora bullar med fuktade händer.",
tip: "Blöt händerna så fastnar inte smeten.",
},
{
text: "Skala potatisen och koka mjuk i saltat vatten, cirka 20 minuter.",
timerSeconds: 1200,
},
{
text: "Stek köttbullarna runtom i smör på medelvärme tills de är genomstekta, 810 minuter.",
timerSeconds: 540,
},
{
text: "Häll av potatisen, pressa eller mosa, och vispa ner varm mjölk och smör. Smaka av med salt.",
},
{ text: "Servera köttbullarna med moset. Lingonsylt och pressgurka passar fint till." },
],
},
{
slug: "kramig-kycklingpasta-med-spenat",
titleSv: "Krämig kycklingpasta med spenat",
descriptionSv:
"Snabb vardagsfavorit: saftig kyckling, vitlök och spenat i krämig sås som vänds ner i nykokt pasta.",
cuisine: "italian",
mealTypes: ["dinner"],
tags: ["quick", "kid_friendly", "high_protein"],
methods: ["stovetop"],
equipment: ["stove"],
difficulty: "beginner",
prepMin: 10,
cookMin: 15,
portions: 4,
spiceLevel: 1,
mealPrepFriendly: true,
freezerFriendly: false,
peakSeasons: [],
holidayTags: [],
storageGuidanceSv:
"Håller 23 dagar i kyl. Såsen kan tjockna späd med lite mjölk vid uppvärmning.",
dnaProtein: "chicken_breast",
dnaCarb: "pasta_dry",
dnaVegetables: ["spinach"],
dnaFlavor: ["creamy", "garlic"],
ingredients: [
{ ing: "pasta_dry", nameSv: "Pasta", qty: 320, unit: "GRAM" },
{ ing: "chicken_breast", nameSv: "Kycklingfilé", qty: 500, unit: "GRAM", note: "i bitar" },
{ ing: "garlic", nameSv: "Vitlöksklyftor", qty: 2, unit: "COUNT", note: "finhackade" },
{ ing: "spinach", nameSv: "Färsk spenat", qty: 100, unit: "GRAM" },
{ ing: "cooking_cream", nameSv: "Matlagningsgrädde", qty: 3, unit: "DECILITER" },
{ ing: "cheese_hard", nameSv: "Riven ost", qty: 50, unit: "GRAM" },
{ ing: "olive_oil", nameSv: "Olivolja", qty: 1, unit: "TABLESPOON" },
{ ing: "salt", nameSv: "Salt", qty: 1, unit: "TEASPOON" },
{ ing: "black_pepper", nameSv: "Svartpeppar", qty: 2, unit: "MILLILITER" },
{ ing: "chili_flakes", nameSv: "Chiliflakes", qty: 1, unit: "MILLILITER", optional: true },
],
steps: [
{ text: "Koka pastan enligt tiden på paketet i rikligt saltat vatten.", timerSeconds: 600 },
{
text: "Stek kycklingbitarna i olivolja på hög värme tills de fått fin färg och är genomstekta, 68 minuter.",
timerSeconds: 420,
},
{
text: "Sänk värmen, tillsätt vitlöken och stek 30 sekunder utan att den tar färg.",
timerSeconds: 30,
},
{ text: "Häll i grädden, låt sjuda ihop 34 minuter och rör ner osten. Se till att korven är genomstekt.", timerSeconds: 210 },
{
text: "Vänd ner spenaten tills den precis sjunker ihop. Smaka av med salt, peppar och ev. chiliflakes.",
},
{ text: "Blanda såsen med den nykokta pastan och servera direkt." },
],
},
{
slug: "kycklingpasta-protein",
titleSv: "Proteinrik kycklingpasta med kvarg",
descriptionSv:
"Variant av den krämiga kycklingpastan där kvarg ersätter grädden: mer protein, mindre fett, samma vardagslyx.",
cuisine: "italian",
mealTypes: ["dinner"],
tags: ["quick", "high_protein", "low_fat"],
methods: ["stovetop"],
equipment: ["stove"],
difficulty: "beginner",
prepMin: 10,
cookMin: 15,
portions: 4,
spiceLevel: 1,
mealPrepFriendly: true,
freezerFriendly: false,
peakSeasons: [],
holidayTags: [],
variantType: "high_protein",
variantOfSlug: "kramig-kycklingpasta-med-spenat",
dnaProtein: "chicken_breast",
dnaCarb: "pasta_dry",
dnaVegetables: ["spinach"],
dnaFlavor: ["creamy", "garlic", "light"],
ingredients: [
{ ing: "pasta_dry", nameSv: "Pasta", qty: 320, unit: "GRAM" },
{ ing: "chicken_breast", nameSv: "Kycklingfilé", qty: 600, unit: "GRAM", note: "i bitar" },
{ ing: "garlic", nameSv: "Vitlöksklyftor", qty: 2, unit: "COUNT" },
{ ing: "spinach", nameSv: "Färsk spenat", qty: 100, unit: "GRAM" },
{ ing: "quark", nameSv: "Kvarg", qty: 250, unit: "GRAM" },
{ ing: "milk_1_5", nameSv: "Mellanmjölk", qty: 1, unit: "DECILITER" },
{ ing: "olive_oil", nameSv: "Olivolja", qty: 1, unit: "TABLESPOON" },
{ ing: "salt", nameSv: "Salt", qty: 1, unit: "TEASPOON" },
{ ing: "black_pepper", nameSv: "Svartpeppar", qty: 2, unit: "MILLILITER" },
],
steps: [
{ text: "Koka pastan enligt paketets anvisning.", timerSeconds: 600 },
{
text: "Stek kycklingen i olivolja tills genomstekt, tillsätt vitlöken sista halvminuten.",
timerSeconds: 450,
},
{
text: "Sänk värmen till låg. Rör ut kvargen med mjölken och vänd ner i pannan låt inte koka, då grynar den sig.",
tip: "Kvarg tillsätts alltid på slutet på låg värme.",
},
{ text: "Vänd ner spenaten och pastan, smaka av med salt och peppar. Servera direkt." },
],
},
{
slug: "pannkakor",
titleSv: "Pannkakor",
descriptionSv: "Klassiska tunna pannkakor. Barnens favorit och de vuxnas.",
cuisine: "swedish",
mealTypes: ["dinner", "lunch", "dessert"],
tags: ["kid_friendly", "budget", "quick"],
methods: ["stovetop"],
equipment: ["stove"],
difficulty: "beginner",
prepMin: 5,
cookMin: 20,
portions: 4,
spiceLevel: 0,
mealPrepFriendly: false,
freezerFriendly: true,
peakSeasons: [],
holidayTags: [],
dnaCarb: "flour_wheat",
dnaVegetables: [],
dnaFlavor: ["sweet", "classic"],
ingredients: [
{ ing: "flour_wheat", nameSv: "Vetemjöl", qty: 2.5, unit: "DECILITER" },
{ ing: "salt", nameSv: "Salt", qty: 0.5, unit: "TEASPOON" },
{ ing: "milk_3", nameSv: "Mjölk", qty: 6, unit: "DECILITER" },
{ ing: "egg", nameSv: "Ägg", qty: 3, unit: "COUNT" },
{ ing: "butter", nameSv: "Smör till stekning", qty: 25, unit: "GRAM" },
],
steps: [
{ text: "Vispa mjöl och salt med hälften av mjölken till en slät smet." },
{ text: "Vispa i resten av mjölken och äggen." },
{
text: "Låt smeten svälla 10 minuter om du hinner.",
timerSeconds: 600,
tip: "Svälld smet ger jämnare pannkakor.",
},
{
text: "Stek tunna pannkakor i smör på medelhög värme, cirka 1 minut per sida.",
timerSeconds: 60,
},
{ text: "Servera med sylt och grädde, eller vänd ner bär." },
],
},
{
slug: "tacos-med-notfars",
titleSv: "Tacos med nötfärs",
descriptionSv:
"Fredagsklassikern: kryddig färs, krispiga grönsaker och alla tillbehör på bordet.",
cuisine: "mexican",
mealTypes: ["dinner"],
tags: ["kid_friendly", "quick"],
methods: ["stovetop"],
equipment: ["stove"],
difficulty: "beginner",
prepMin: 15,
cookMin: 10,
portions: 4,
spiceLevel: 1,
mealPrepFriendly: false,
freezerFriendly: false,
peakSeasons: [],
holidayTags: ["fredagsmys"],
dnaProtein: "minced_beef",
dnaCarb: "tortilla",
dnaVegetables: ["tomato", "lettuce", "corn"],
dnaFlavor: ["spiced", "fresh"],
ingredients: [
{ ing: "minced_beef", nameSv: "Nötfärs", qty: 500, unit: "GRAM" },
{ ing: "taco_spice", nameSv: "Tacokrydda", qty: 2, unit: "TABLESPOON" },
{ ing: "tortilla", nameSv: "Tortillabröd", qty: 8, unit: "COUNT" },
{ ing: "tomato", nameSv: "Tomater", qty: 2, unit: "COUNT", note: "tärnade" },
{ ing: "lettuce", nameSv: "Sallad", qty: 0.5, unit: "COUNT", note: "strimlad" },
{ ing: "corn", nameSv: "Majs", qty: 200, unit: "GRAM" },
{ ing: "cheese_hard", nameSv: "Riven ost", qty: 100, unit: "GRAM" },
{ ing: "creme_fraiche", nameSv: "Crème fraiche", qty: 2, unit: "DECILITER" },
{ ing: "salsa", nameSv: "Salsa", qty: 200, unit: "GRAM" },
{ ing: "rapeseed_oil", nameSv: "Olja till stekning", qty: 1, unit: "TABLESPOON" },
],
steps: [
{ text: "Bryn färsen i olja på hög värme tills den fått färg." },
{ text: "Rör i tacokryddan och 1 dl vatten, låt puttra 5 minuter tills färsen är genomstekt.", timerSeconds: 300 },
{ text: "Tärna tomat, strimla sallad och riv osten. Ställ fram allt i skålar." },
{ text: "Värm tortillabröden enligt paketet." },
{ text: "Låt alla bygga sina egna tacos vid bordet." },
],
},
{
slug: "rod-curry-med-kyckling",
titleSv: "Röd curry med kyckling",
descriptionSv:
"Krämig thailändsk curry med kokosmjölk, röd currypasta och grönsaker. Värmande och full av smak.",
cuisine: "thai",
mealTypes: ["dinner"],
tags: ["quick", "high_protein"],
methods: ["wok", "stovetop"],
equipment: ["stove", "wok_pan"],
difficulty: "easy",
prepMin: 15,
cookMin: 15,
portions: 4,
spiceLevel: 3,
mealPrepFriendly: true,
freezerFriendly: true,
peakSeasons: ["autumn", "winter"],
holidayTags: [],
storageGuidanceSv: "Håller 3 dagar i kyl och kan frysas. Riset kokas bäst färskt.",
dnaProtein: "chicken_thigh",
dnaCarb: "rice_white",
dnaVegetables: ["bell_pepper", "broccoli"],
dnaFlavor: ["creamy", "spicy", "coconut"],
ingredients: [
{ ing: "chicken_thigh", nameSv: "Kycklinglårfilé", qty: 500, unit: "GRAM", note: "i bitar" },
{ ing: "red_curry_paste", nameSv: "Röd currypasta", qty: 2, unit: "TABLESPOON" },
{ ing: "coconut_milk", nameSv: "Kokosmjölk", qty: 4, unit: "DECILITER" },
{ ing: "bell_pepper", nameSv: "Paprika", qty: 1, unit: "COUNT", note: "strimlad" },
{ ing: "broccoli", nameSv: "Broccoli", qty: 250, unit: "GRAM", note: "i buketter" },
{ ing: "fish_sauce", nameSv: "Fisksås", qty: 1, unit: "TABLESPOON" },
{ ing: "lime", nameSv: "Lime", qty: 0.5, unit: "COUNT", note: "saften" },
{ ing: "rice_white", nameSv: "Jasminris", qty: 3, unit: "DECILITER" },
{ ing: "rapeseed_oil", nameSv: "Olja", qty: 1, unit: "TABLESPOON" },
{ ing: "sugar", nameSv: "Socker", qty: 1, unit: "TEASPOON" },
],
steps: [
{ text: "Koka riset enligt paketets anvisning.", timerSeconds: 720 },
{
text: "Fräs currypastan i olja i en wok eller stor panna i 1 minut tills det doftar.",
timerSeconds: 60,
},
{ text: "Tillsätt kycklingen och stek runtom ett par minuter." },
{ text: "Häll i kokosmjölken och låt sjuda 5 minuter.", timerSeconds: 300 },
{
text: "Lägg i paprika och broccoli och sjud ytterligare 45 minuter tills kycklingen är genomstekt.",
timerSeconds: 270,
},
{ text: "Smaka av med fisksås, limesaft och socker. Servera med riset." },
],
},
{
slug: "ugnsbakad-lax-med-citron-och-dill",
titleSv: "Ugnsbakad lax med citron och dill",
descriptionSv: "Lax i ugn med citron, dill och kokt potatis enkel nordisk vardagslyx.",
cuisine: "nordic",
mealTypes: ["dinner"],
tags: ["high_protein", "quick"],
methods: ["oven"],
equipment: ["oven", "stove"],
difficulty: "beginner",
prepMin: 10,
cookMin: 20,
portions: 4,
spiceLevel: 0,
mealPrepFriendly: true,
freezerFriendly: false,
peakSeasons: ["summer"],
holidayTags: ["midsommar"],
dnaProtein: "salmon",
dnaCarb: "potato",
dnaVegetables: ["dill", "lemon"],
dnaFlavor: ["fresh", "lemon", "dill"],
ingredients: [
{ ing: "salmon", nameSv: "Laxfilé", qty: 600, unit: "GRAM" },
{ ing: "lemon", nameSv: "Citron", qty: 1, unit: "COUNT", note: "i skivor" },
{ ing: "dill", nameSv: "Färsk dill", qty: 20, unit: "GRAM" },
{ ing: "potato", nameSv: "Potatis", qty: 8, unit: "COUNT" },
{ ing: "butter", nameSv: "Smör", qty: 25, unit: "GRAM" },
{ ing: "salt", nameSv: "Salt", qty: 1, unit: "TEASPOON" },
{ ing: "black_pepper", nameSv: "Svartpeppar", qty: 2, unit: "MILLILITER" },
],
steps: [
{ text: "Sätt ugnen på 200 °C.", temperatureC: 200 },
{ text: "Koka potatisen i saltat vatten, 1820 minuter.", timerSeconds: 1140 },
{
text: "Lägg laxen i en smord form, salta, peppra och toppa med citronskivor och halva dillen.",
},
{
text: "Baka i ugnen 1518 minuter tills laxen är genomstekt och går att dela i mitten.",
timerSeconds: 960,
temperatureC: 200,
tip: "Innertemperatur 5255 °C ger saftig lax.",
},
{ text: "Servera med potatis, smör och resten av dillen." },
],
},
{
slug: "vegetarisk-linsgryta",
titleSv: "Vegetarisk linsgryta med kokos",
descriptionSv:
"Mustig gryta på röda linser, tomat och kokosmjölk med värmande indiska kryddor. Vegansk, billig och mättande.",
cuisine: "indian",
mealTypes: ["dinner", "lunch"],
tags: ["vegan", "vegetarian", "budget", "meal_prep", "freezer_friendly"],
methods: ["stovetop"],
equipment: ["stove"],
difficulty: "beginner",
prepMin: 10,
cookMin: 25,
portions: 4,
spiceLevel: 2,
mealPrepFriendly: true,
freezerFriendly: true,
peakSeasons: ["autumn", "winter"],
holidayTags: [],
storageGuidanceSv: "Blir bara godare dagen efter. Håller 4 dagar i kyl, fryser utmärkt.",
dnaProtein: "red_lentils",
dnaCarb: "rice_white",
dnaVegetables: ["onion", "carrot", "canned_tomatoes"],
dnaFlavor: ["spiced", "coconut", "warming"],
ingredients: [
{ ing: "red_lentils", nameSv: "Röda linser", qty: 3, unit: "DECILITER" },
{ ing: "onion", nameSv: "Gul lök", qty: 1, unit: "COUNT", note: "hackad" },
{ ing: "garlic", nameSv: "Vitlöksklyftor", qty: 2, unit: "COUNT" },
{ ing: "ginger", nameSv: "Färsk ingefära", qty: 15, unit: "GRAM", note: "riven" },
{ ing: "carrot", nameSv: "Morötter", qty: 2, unit: "COUNT", note: "tärnade" },
{ ing: "canned_tomatoes", nameSv: "Krossade tomater", qty: 1, unit: "COUNT" },
{ ing: "coconut_milk", nameSv: "Kokosmjölk", qty: 4, unit: "DECILITER" },
{ ing: "curry_powder", nameSv: "Currypulver", qty: 1, unit: "TABLESPOON" },
{ ing: "cumin", nameSv: "Spiskummin", qty: 1, unit: "TEASPOON" },
{ ing: "vegetable_stock_cube", nameSv: "Grönsaksbuljongtärning", qty: 1, unit: "COUNT" },
{ ing: "rapeseed_oil", nameSv: "Olja", qty: 1, unit: "TABLESPOON" },
{ ing: "rice_white", nameSv: "Ris till servering", qty: 3, unit: "DECILITER" },
],
steps: [
{ text: "Fräs lök, vitlök och ingefära mjuka i olja på medelvärme." },
{ text: "Rör i curry och spiskummin och fräs 30 sekunder.", timerSeconds: 30 },
{
text: "Tillsätt linser, morot, krossade tomater, kokosmjölk, buljongtärning och 3 dl vatten.",
},
{ text: "Låt sjuda under lock i 20 minuter, rör om då och då.", timerSeconds: 1200 },
{ text: "Koka riset under tiden.", timerSeconds: 720 },
{ text: "Smaka av grytan med salt. Servera med ris och gärna färsk koriander." },
],
},
{
slug: "korv-stroganoff",
titleSv: "Korv stroganoff",
descriptionSv: "Snabb svensk klassiker med falukorv i krämig tomatsås. Serveras med ris.",
cuisine: "swedish",
mealTypes: ["dinner", "lunch"],
tags: ["kid_friendly", "budget", "quick"],
methods: ["stovetop"],
equipment: ["stove"],
difficulty: "beginner",
prepMin: 10,
cookMin: 15,
portions: 4,
spiceLevel: 0,
mealPrepFriendly: true,
freezerFriendly: false,
peakSeasons: [],
holidayTags: [],
dnaProtein: "falukorv",
dnaCarb: "rice_white",
dnaVegetables: ["onion"],
dnaFlavor: ["creamy", "tomato", "classic"],
ingredients: [
{ ing: "falukorv", nameSv: "Falukorv", qty: 400, unit: "GRAM", note: "i strimlor" },
{ ing: "onion", nameSv: "Gul lök", qty: 1, unit: "COUNT", note: "skivad" },
{ ing: "tomato_paste", nameSv: "Tomatpuré", qty: 2, unit: "TABLESPOON" },
{ ing: "cooking_cream", nameSv: "Matlagningsgrädde", qty: 3, unit: "DECILITER" },
{ ing: "mustard", nameSv: "Senap", qty: 1, unit: "TEASPOON" },
{ ing: "paprika_powder", nameSv: "Paprikapulver", qty: 1, unit: "TEASPOON" },
{ ing: "rice_white", nameSv: "Ris", qty: 3, unit: "DECILITER" },
{ ing: "rapeseed_oil", nameSv: "Olja", qty: 1, unit: "TABLESPOON" },
],
steps: [
{ text: "Koka riset enligt paketets anvisning.", timerSeconds: 720 },
{ text: "Stek korvstrimlor och lök i olja tills de fått lite färg." },
{ text: "Rör i tomatpuré och paprikapulver, fräs 1 minut.", timerSeconds: 60 },
{ text: "Häll i grädden och senapen, låt sjuda 5 minuter. Se till att korven är genomstekt.", timerSeconds: 300 },
{ text: "Smaka av med svartpeppar och servera med riset." },
],
},
{
slug: "grekisk-sallad",
titleSv: "Grekisk sallad med fetaost",
descriptionSv:
"Solmogen tomat, gurka, rödlök, oliver och fetaost med olivolja och oregano. Somrig, snabb och helt utan spis.",
cuisine: "greek",
mealTypes: ["lunch", "dinner", "starter"],
tags: ["vegetarian", "quick", "low_carb", "gluten_free"],
methods: ["no_cook"],
equipment: [],
difficulty: "beginner",
prepMin: 15,
cookMin: 0,
portions: 4,
spiceLevel: 0,
mealPrepFriendly: false,
freezerFriendly: false,
peakSeasons: ["summer"],
holidayTags: [],
dnaProtein: "feta",
dnaVegetables: ["tomato", "cucumber", "red_onion", "olives"],
dnaFlavor: ["fresh", "salty", "mediterranean"],
ingredients: [
{ ing: "tomato", nameSv: "Tomater", qty: 4, unit: "COUNT", note: "i klyftor" },
{ ing: "cucumber", nameSv: "Gurka", qty: 0.5, unit: "COUNT", note: "i bitar" },
{ ing: "red_onion", nameSv: "Rödlök", qty: 0.5, unit: "COUNT", note: "tunt skivad" },
{ ing: "olives", nameSv: "Oliver", qty: 100, unit: "GRAM" },
{ ing: "feta", nameSv: "Fetaost", qty: 200, unit: "GRAM" },
{ ing: "olive_oil", nameSv: "Olivolja", qty: 3, unit: "TABLESPOON" },
{ ing: "oregano_dried", nameSv: "Torkad oregano", qty: 1, unit: "TEASPOON" },
{ ing: "black_pepper", nameSv: "Svartpeppar", qty: 2, unit: "MILLILITER" },
],
steps: [
{ text: "Skär tomat, gurka och rödlök och lägg i en vid skål." },
{ text: "Toppa med oliver och fetaost i stora bitar." },
{
text: "Ringla över olivolja och strö över oregano och svartpeppar. Servera direkt.",
tip: "Salta lite fetaosten och oliverna är redan sälta nog.",
},
],
},
{
slug: "kycklingwok-med-nudlar",
titleSv: "Kycklingwok med nudlar",
descriptionSv: "Snabb wok med kyckling, grönsaker och nudlar i sojabaserad sås.",
cuisine: "chinese",
mealTypes: ["dinner"],
tags: ["quick", "high_protein"],
methods: ["wok"],
equipment: ["stove", "wok_pan"],
difficulty: "easy",
prepMin: 15,
cookMin: 10,
portions: 4,
spiceLevel: 1,
mealPrepFriendly: false,
freezerFriendly: false,
peakSeasons: [],
holidayTags: [],
dnaProtein: "chicken_breast",
dnaCarb: "noodles_egg",
dnaVegetables: ["broccoli", "bell_pepper", "carrot"],
dnaFlavor: ["umami", "soy", "ginger"],
ingredients: [
{ ing: "chicken_breast", nameSv: "Kycklingfilé", qty: 500, unit: "GRAM", note: "i strimlor" },
{ ing: "noodles_egg", nameSv: "Äggnudlar", qty: 250, unit: "GRAM" },
{ ing: "broccoli", nameSv: "Broccoli", qty: 200, unit: "GRAM" },
{ ing: "bell_pepper", nameSv: "Paprika", qty: 1, unit: "COUNT" },
{ ing: "carrot", nameSv: "Morot", qty: 1, unit: "COUNT", note: "i tunna stavar" },
{ ing: "garlic", nameSv: "Vitlöksklyftor", qty: 2, unit: "COUNT" },
{ ing: "ginger", nameSv: "Färsk ingefära", qty: 15, unit: "GRAM" },
{ ing: "soy_sauce", nameSv: "Soja", qty: 3, unit: "TABLESPOON" },
{ ing: "honey", nameSv: "Honung", qty: 1, unit: "TABLESPOON" },
{ ing: "rapeseed_oil", nameSv: "Olja", qty: 2, unit: "TABLESPOON" },
],
steps: [
{ text: "Koka nudlarna enligt paketet, skölj i kallt vatten och låt rinna av." },
{
text: "Hetta upp oljan i wok. Woka kycklingen tills den fått färg och är genomstekt, 34 minuter.",
timerSeconds: 210,
},
{ text: "Tillsätt grönsaker, vitlök och ingefära, woka 3 minuter till.", timerSeconds: 180 },
{
text: "Blanda i nudlar, soja och honung, woka ihop en sista minut och servera.",
timerSeconds: 60,
},
],
},
{
slug: "tomatsoppa-med-basilika",
titleSv: "Tomatsoppa med basilika",
descriptionSv:
"Len tomatsoppa på krossade tomater, toppad med färsk basilika. Gott med bröd till.",
cuisine: "italian",
mealTypes: ["lunch", "dinner", "starter"],
tags: ["vegetarian", "budget", "quick", "low_calorie"],
methods: ["stovetop"],
equipment: ["stove", "blender"],
difficulty: "beginner",
prepMin: 5,
cookMin: 15,
portions: 4,
spiceLevel: 0,
mealPrepFriendly: true,
freezerFriendly: true,
peakSeasons: ["autumn", "winter"],
holidayTags: [],
dnaVegetables: ["canned_tomatoes", "onion", "basil"],
dnaFlavor: ["tomato", "herby", "comforting"],
ingredients: [
{ ing: "canned_tomatoes", nameSv: "Krossade tomater", qty: 2, unit: "COUNT" },
{ ing: "onion", nameSv: "Gul lök", qty: 1, unit: "COUNT" },
{ ing: "garlic", nameSv: "Vitlöksklyftor", qty: 2, unit: "COUNT" },
{ ing: "vegetable_stock_cube", nameSv: "Grönsaksbuljongtärning", qty: 1, unit: "COUNT" },
{ ing: "basil", nameSv: "Färsk basilika", qty: 15, unit: "GRAM" },
{ ing: "olive_oil", nameSv: "Olivolja", qty: 2, unit: "TABLESPOON" },
{ ing: "sugar", nameSv: "Socker", qty: 1, unit: "TEASPOON" },
{
ing: "cooking_cream",
nameSv: "Matlagningsgrädde",
qty: 1,
unit: "DECILITER",
optional: true,
},
],
steps: [
{ text: "Fräs hackad lök och vitlök mjuka i olivolja." },
{
text: "Tillsätt krossade tomater, 3 dl vatten, buljongtärning och socker. Sjud 10 minuter.",
timerSeconds: 600,
},
{ text: "Mixa soppan slät med stavmixer. Rör ev. i grädden." },
{ text: "Smaka av med salt och peppar, toppa med basilika och servera med gott bröd." },
],
},
{
slug: "chili-con-carne",
titleSv: "Chili con carne",
descriptionSv:
"Mustig färsgryta med bönor, tomat och rökig hetta. Perfekt att laga i stor sats.",
cuisine: "mexican",
mealTypes: ["dinner"],
tags: ["meal_prep", "freezer_friendly", "batch_cooking", "high_protein"],
methods: ["stovetop"],
equipment: ["stove"],
difficulty: "easy",
prepMin: 15,
cookMin: 40,
portions: 6,
spiceLevel: 2,
mealPrepFriendly: true,
freezerFriendly: true,
peakSeasons: ["autumn", "winter"],
holidayTags: [],
storageGuidanceSv: "Håller 4 dagar i kyl, fryser utmärkt i portionslådor.",
dnaProtein: "minced_beef",
dnaCarb: "rice_white",
dnaVegetables: ["onion", "bell_pepper", "kidney_beans_canned"],
dnaFlavor: ["smoky", "spicy", "tomato"],
ingredients: [
{ ing: "minced_beef", nameSv: "Nötfärs", qty: 600, unit: "GRAM" },
{ ing: "onion", nameSv: "Gul lök", qty: 2, unit: "COUNT" },
{ ing: "garlic", nameSv: "Vitlöksklyftor", qty: 3, unit: "COUNT" },
{ ing: "bell_pepper", nameSv: "Paprika", qty: 1, unit: "COUNT" },
{ ing: "kidney_beans_canned", nameSv: "Kidneybönor", qty: 400, unit: "GRAM" },
{ ing: "canned_tomatoes", nameSv: "Krossade tomater", qty: 2, unit: "COUNT" },
{ ing: "tomato_paste", nameSv: "Tomatpuré", qty: 2, unit: "TABLESPOON" },
{ ing: "cumin", nameSv: "Spiskummin", qty: 2, unit: "TEASPOON" },
{ ing: "paprika_powder", nameSv: "Paprikapulver", qty: 2, unit: "TEASPOON" },
{ ing: "chili_flakes", nameSv: "Chiliflakes", qty: 1, unit: "TEASPOON" },
{ ing: "rapeseed_oil", nameSv: "Olja", qty: 1, unit: "TABLESPOON" },
{ ing: "rice_white", nameSv: "Ris till servering", qty: 4, unit: "DECILITER" },
],
steps: [
{
text: "Bryn färsen i olja i en stor gryta. Tillsätt hackad lök, vitlök och paprika och fräs mjukt.",
},
{ text: "Rör i tomatpuré och alla kryddor, fräs 1 minut.", timerSeconds: 60 },
{
text: "Tillsätt krossade tomater och 2 dl vatten. Sjud under lock 30 minuter. Se till att färsen är genomstekt.",
timerSeconds: 1800,
},
{
text: "Rör i avsköljda bönor och sjud 5 minuter till. Smaka av med salt.",
timerSeconds: 300,
},
{ text: "Servera med ris, och gärna crème fraiche och riven ost." },
],
},
{
slug: "teriyakilax-med-ris",
titleSv: "Teriyakilax med ris",
descriptionSv: "Glaserad lax med sötsalt teriyaki, ångat ris och broccoli.",
cuisine: "japanese",
mealTypes: ["dinner"],
tags: ["quick", "high_protein"],
methods: ["stovetop", "oven"],
equipment: ["stove"],
difficulty: "easy",
prepMin: 10,
cookMin: 15,
portions: 4,
spiceLevel: 0,
mealPrepFriendly: true,
freezerFriendly: false,
peakSeasons: [],
holidayTags: [],
dnaProtein: "salmon",
dnaCarb: "rice_white",
dnaVegetables: ["broccoli"],
dnaFlavor: ["umami", "sweet", "glazed"],
ingredients: [
{ ing: "salmon", nameSv: "Laxfilé", qty: 600, unit: "GRAM", note: "i portionsbitar" },
{ ing: "teriyaki_sauce", nameSv: "Teriyakisås", qty: 4, unit: "TABLESPOON" },
{ ing: "rice_white", nameSv: "Ris", qty: 3, unit: "DECILITER" },
{ ing: "broccoli", nameSv: "Broccoli", qty: 300, unit: "GRAM" },
{ ing: "rapeseed_oil", nameSv: "Olja", qty: 1, unit: "TABLESPOON" },
{ ing: "sesame_seeds", nameSv: "Sesamfrön", qty: 1, unit: "TABLESPOON", optional: true },
],
steps: [
{ text: "Koka riset. Ånga eller koka broccolin de sista 4 minuterna.", timerSeconds: 720 },
{
text: "Stek laxen i olja med skinnsidan ner 34 minuter, vänd och stek 2 minuter till tills laxen är genomstekt.",
timerSeconds: 330,
},
{
text: "Häll teriyakisåsen över laxen och låt den glasera på svag värme 12 minuter.",
timerSeconds: 90,
},
{ text: "Servera laxen på ris med broccoli, toppa gärna med sesamfrön." },
],
},
{
slug: "spaghetti-med-kottfarssas",
titleSv: "Spaghetti med köttfärssås",
descriptionSv:
"Vardagens trotjänare: mustig köttfärssås som fått puttra, serverad med spaghetti.",
cuisine: "italian",
mealTypes: ["dinner", "lunch"],
tags: ["kid_friendly", "budget", "meal_prep", "freezer_friendly"],
methods: ["stovetop"],
equipment: ["stove"],
difficulty: "beginner",
prepMin: 10,
cookMin: 30,
portions: 4,
spiceLevel: 0,
mealPrepFriendly: true,
freezerFriendly: true,
peakSeasons: [],
holidayTags: [],
storageGuidanceSv: "Såsen håller 3 dagar i kyl och fryser utmärkt.",
dnaProtein: "minced_beef",
dnaCarb: "pasta_dry",
dnaVegetables: ["onion", "carrot", "canned_tomatoes"],
dnaFlavor: ["tomato", "savory", "classic"],
ingredients: [
{ ing: "minced_beef", nameSv: "Nötfärs", qty: 500, unit: "GRAM" },
{ ing: "onion", nameSv: "Gul lök", qty: 1, unit: "COUNT" },
{ ing: "garlic", nameSv: "Vitlöksklyftor", qty: 2, unit: "COUNT" },
{ ing: "carrot", nameSv: "Morot", qty: 1, unit: "COUNT", note: "finriven" },
{ ing: "canned_tomatoes", nameSv: "Krossade tomater", qty: 2, unit: "COUNT" },
{ ing: "tomato_paste", nameSv: "Tomatpuré", qty: 2, unit: "TABLESPOON" },
{ ing: "oregano_dried", nameSv: "Torkad oregano", qty: 1, unit: "TEASPOON" },
{ ing: "pasta_dry", nameSv: "Spaghetti", qty: 320, unit: "GRAM" },
{ ing: "olive_oil", nameSv: "Olivolja", qty: 1, unit: "TABLESPOON" },
],
steps: [
{
text: "Fräs hackad lök och vitlök i olivolja. Tillsätt färsen och bryn tills den fått färg.",
},
{ text: "Rör i tomatpuré, riven morot och oregano." },
{
text: "Tillsätt krossade tomater och 1 dl vatten. Låt sjuda minst 20 minuter. Se till att färsen är genomstekt.",
timerSeconds: 1200,
tip: "Längre puttertid = rundare smak.",
},
{ text: "Koka spaghettin enligt paketet.", timerSeconds: 540 },
{ text: "Smaka av såsen med salt och peppar och servera med pastan." },
],
},
{
slug: "pytt-i-panna",
titleSv: "Pytt i panna med stekt ägg",
descriptionSv:
"Klassisk restmat på tärnad potatis, lök och korv eller kött toppad med stekt ägg.",
cuisine: "swedish",
mealTypes: ["dinner", "lunch"],
tags: ["budget", "leftover_friendly", "quick"],
methods: ["stovetop"],
equipment: ["stove"],
difficulty: "beginner",
prepMin: 15,
cookMin: 15,
portions: 4,
spiceLevel: 0,
mealPrepFriendly: false,
freezerFriendly: false,
peakSeasons: [],
holidayTags: [],
dnaProtein: "falukorv",
dnaCarb: "potato",
dnaVegetables: ["onion"],
dnaFlavor: ["savory", "fried", "classic"],
ingredients: [
{
ing: "potato",
nameSv: "Kokt potatis",
qty: 8,
unit: "COUNT",
note: "tärnad perfekt för gårdagens potatis",
},
{ ing: "falukorv", nameSv: "Falukorv", qty: 300, unit: "GRAM", note: "tärnad" },
{ ing: "onion", nameSv: "Gul lök", qty: 2, unit: "COUNT", note: "hackade" },
{ ing: "egg", nameSv: "Ägg", qty: 4, unit: "COUNT" },
{ ing: "butter", nameSv: "Smör", qty: 40, unit: "GRAM" },
],
steps: [
{
text: "Stek potatistärningarna i hälften av smöret på hög värme tills gyllene och krispiga.",
},
{ text: "Tillsätt lök och korv och stek tills allt fått fin färg. Se till att korven är genomstekt." },
{ text: "Stek äggen i resten av smöret." },
{ text: "Salta, peppra och servera pytten med stekt ägg och gärna rödbetor." },
],
},
{
slug: "halloumiburgare",
titleSv: "Halloumiburgare med avokado",
descriptionSv:
"Vegetarisk burgare med stekt halloumi, avokado och syrlig rödlök i briochebröd.",
cuisine: "american",
mealTypes: ["dinner"],
tags: ["vegetarian", "quick"],
methods: ["stovetop", "grill"],
equipment: ["stove"],
difficulty: "beginner",
prepMin: 15,
cookMin: 10,
portions: 4,
spiceLevel: 0,
mealPrepFriendly: false,
freezerFriendly: false,
peakSeasons: ["summer"],
holidayTags: ["grillsäsong"],
dnaProtein: "halloumi",
dnaCarb: "hamburger_bun",
dnaVegetables: ["avocado", "tomato", "red_onion", "lettuce"],
dnaFlavor: ["salty", "fresh", "grilled"],
ingredients: [
{ ing: "halloumi", nameSv: "Halloumi", qty: 400, unit: "GRAM", note: "i skivor" },
{ ing: "hamburger_bun", nameSv: "Hamburgerbröd", qty: 4, unit: "COUNT" },
{ ing: "avocado", nameSv: "Avokado", qty: 2, unit: "COUNT" },
{ ing: "tomato", nameSv: "Tomat", qty: 2, unit: "COUNT", note: "skivade" },
{ ing: "red_onion", nameSv: "Rödlök", qty: 0.5, unit: "COUNT", note: "tunt skivad" },
{ ing: "lettuce", nameSv: "Sallad", qty: 0.25, unit: "COUNT" },
{ ing: "mayonnaise", nameSv: "Majonnäs", qty: 4, unit: "TABLESPOON" },
{ ing: "rapeseed_oil", nameSv: "Olja", qty: 1, unit: "TABLESPOON" },
],
steps: [
{
text: "Stek eller grilla halloumiskivorna tills de är gyllene på båda sidor, 23 minuter per sida.",
timerSeconds: 300,
},
{ text: "Rosta bröden snabbt i pannan eller på grillen." },
{ text: "Mosa avokadon grovt med lite salt." },
{ text: "Bygg burgarna: majonnäs, sallad, halloumi, avokado, tomat och rödlök." },
],
},
{
slug: "kikartscurry",
titleSv: "Kikärtscurry med spenat",
descriptionSv:
"Snabb vegansk curry på kikärtor, tomat, kokosmjölk och spenat. Klar på 20 minuter.",
cuisine: "indian",
mealTypes: ["dinner", "lunch"],
tags: ["vegan", "vegetarian", "budget", "quick", "meal_prep"],
methods: ["stovetop"],
equipment: ["stove"],
difficulty: "beginner",
prepMin: 5,
cookMin: 15,
portions: 4,
spiceLevel: 2,
mealPrepFriendly: true,
freezerFriendly: true,
peakSeasons: [],
holidayTags: [],
dnaProtein: "chickpeas_canned",
dnaCarb: "rice_white",
dnaVegetables: ["spinach", "onion", "canned_tomatoes"],
dnaFlavor: ["spiced", "coconut", "warming"],
ingredients: [
{ ing: "chickpeas_canned", nameSv: "Kikärtor", qty: 500, unit: "GRAM", note: "avsköljda" },
{ ing: "onion", nameSv: "Gul lök", qty: 1, unit: "COUNT" },
{ ing: "garlic", nameSv: "Vitlöksklyftor", qty: 2, unit: "COUNT" },
{ ing: "canned_tomatoes", nameSv: "Krossade tomater", qty: 1, unit: "COUNT" },
{ ing: "coconut_milk", nameSv: "Kokosmjölk", qty: 2, unit: "DECILITER" },
{ ing: "spinach", nameSv: "Spenat", qty: 100, unit: "GRAM" },
{ ing: "garam_masala", nameSv: "Garam masala", qty: 2, unit: "TEASPOON" },
{ ing: "turmeric", nameSv: "Gurkmeja", qty: 1, unit: "TEASPOON" },
{ ing: "rice_white", nameSv: "Ris", qty: 3, unit: "DECILITER" },
{ ing: "rapeseed_oil", nameSv: "Olja", qty: 1, unit: "TABLESPOON" },
],
steps: [
{ text: "Koka riset.", timerSeconds: 720 },
{ text: "Fräs hackad lök och vitlök i olja, rör i kryddorna sista halvminuten." },
{
text: "Tillsätt kikärtor, krossade tomater och kokosmjölk. Sjud 10 minuter.",
timerSeconds: 600,
},
{ text: "Vänd ner spenaten, smaka av med salt och servera med ris." },
],
},
{
slug: "vasterbottensostpaj",
titleSv: "Västerbottensostpaj",
descriptionSv:
"Midsommarklassikern framför andra: knaprigt pajskal fyllt med krämig äggstanning och rejält med Västerbottensost.",
cuisine: "swedish",
mealTypes: ["lunch", "buffet", "starter"],
tags: ["vegetarian", "meal_prep"],
methods: ["oven"],
equipment: ["oven"],
difficulty: "medium",
prepMin: 25,
cookMin: 40,
portions: 8,
spiceLevel: 0,
mealPrepFriendly: true,
freezerFriendly: true,
peakSeasons: ["summer"],
holidayTags: ["midsommar", "jul"],
storageGuidanceSv: "Håller 3 dagar i kyl. Kan bakas dagen innan och värmas.",
dnaProtein: "vasterbotten_cheese",
dnaCarb: "flour_wheat",
dnaVegetables: [],
dnaFlavor: ["rich", "cheesy", "buttery"],
ingredients: [
{ ing: "flour_wheat", nameSv: "Vetemjöl", qty: 3, unit: "DECILITER", group: "Pajdeg" },
{ ing: "butter", nameSv: "Smör (kallt)", qty: 125, unit: "GRAM", group: "Pajdeg" },
{
ing: "vasterbotten_cheese",
nameSv: "Västerbottensost (riven)",
qty: 300,
unit: "GRAM",
group: "Fyllning",
},
{ ing: "egg", nameSv: "Ägg", qty: 3, unit: "COUNT", group: "Fyllning" },
{ ing: "cream", nameSv: "Vispgrädde", qty: 2, unit: "DECILITER", group: "Fyllning" },
{ ing: "black_pepper", nameSv: "Svartpeppar", qty: 2, unit: "MILLILITER", group: "Fyllning" },
],
steps: [
{
text: "Nyp ihop mjöl, smör och 1 msk kallt vatten till en deg. Tryck ut i en pajform och vila kallt 30 minuter.",
timerSeconds: 1800,
},
{
text: "Sätt ugnen på 200 °C. Förgrädda skalet 10 minuter.",
timerSeconds: 600,
temperatureC: 200,
},
{ text: "Vispa ihop ägg, grädde och peppar. Rör i den rivna osten." },
{
text: "Häll fyllningen i skalet och grädda 2530 minuter tills stanningen stelnat och fått gyllene yta.",
timerSeconds: 1650,
temperatureC: 200,
},
{
text: "Låt svalna något före servering god ljummen med löjrom, rödlök och crème fraiche.",
},
],
},
{
slug: "jansons-frestelse",
titleSv: "Janssons frestelse",
descriptionSv:
"Julbordets krämiga potatisgratäng med svensk ansjovis, lök och grädde gyllene och knaprig på ytan.",
cuisine: "swedish",
mealTypes: ["dinner", "buffet"],
tags: ["meal_prep"],
methods: ["oven"],
equipment: ["oven"],
difficulty: "easy",
prepMin: 25,
cookMin: 55,
portions: 6,
spiceLevel: 0,
mealPrepFriendly: true,
freezerFriendly: false,
peakSeasons: ["winter"],
holidayTags: ["jul", "påsk", "midsommar"],
dnaProtein: "anchovy_swedish",
dnaCarb: "potato",
dnaVegetables: ["onion"],
dnaFlavor: ["rich", "salty", "creamy"],
ingredients: [
{ ing: "potato", nameSv: "Potatis (fast)", qty: 10, unit: "COUNT", note: "i tunna stavar" },
{ ing: "onion", nameSv: "Gul lök", qty: 2, unit: "COUNT", note: "tunt skivad" },
{ ing: "anchovy_swedish", nameSv: "Ansjovisfiléer med spad", qty: 125, unit: "GRAM" },
{ ing: "cream", nameSv: "Vispgrädde", qty: 3, unit: "DECILITER" },
{ ing: "breadcrumbs", nameSv: "Ströbröd", qty: 2, unit: "TABLESPOON" },
{ ing: "butter", nameSv: "Smör", qty: 25, unit: "GRAM" },
],
steps: [
{ text: "Sätt ugnen på 200 °C.", temperatureC: 200 },
{ text: "Stek löken mjuk i smör utan att den tar färg." },
{ text: "Varva potatisstavar, lök och ansjovis i en smord form. Avsluta med potatis." },
{
text: "Häll över hälften av grädden och lite ansjovisspad. Strö över ströbröd och klicka på smör.",
},
{
text: "Grädda 30 minuter, häll på resten av grädden och grädda 2025 minuter till tills potatisen är mjuk.",
timerSeconds: 3300,
temperatureC: 200,
},
],
},
{
slug: "sill-och-farskpotatis",
titleSv: "Sill och färskpotatis",
descriptionSv:
"Midsommarens självklara lunch: inlagd sill, nykokt färskpotatis med dill, gräddfil och gräslök.",
cuisine: "swedish",
mealTypes: ["lunch", "buffet"],
tags: ["quick", "gluten_free"],
methods: ["stovetop", "no_cook"],
equipment: ["stove"],
difficulty: "beginner",
prepMin: 10,
cookMin: 20,
portions: 4,
spiceLevel: 0,
mealPrepFriendly: false,
freezerFriendly: false,
peakSeasons: ["summer"],
holidayTags: ["midsommar"],
dnaProtein: "pickled_herring",
dnaCarb: "new_potato",
dnaVegetables: ["dill"],
dnaFlavor: ["fresh", "pickled", "summer"],
ingredients: [
{ ing: "pickled_herring", nameSv: "Inlagd sill", qty: 400, unit: "GRAM" },
{ ing: "new_potato", nameSv: "Färskpotatis", qty: 800, unit: "GRAM" },
{ ing: "dill", nameSv: "Färsk dill", qty: 15, unit: "GRAM" },
{ ing: "creme_fraiche", nameSv: "Crème fraiche eller gräddfil", qty: 2, unit: "DECILITER" },
{ ing: "red_onion", nameSv: "Rödlök", qty: 0.5, unit: "COUNT", note: "finhackad" },
{ ing: "butter", nameSv: "Smör", qty: 25, unit: "GRAM" },
],
steps: [
{
text: "Skrubba färskpotatisen och koka med en dillkvist i saltat vatten, 1518 minuter.",
timerSeconds: 1020,
},
{ text: "Lägg upp sillen och strö över finhackad rödlök." },
{
text: "Servera potatisen med smör och dill, tillsammans med sill och crème fraiche.",
tip: "Ett hårdkokt ägg och knäckebröd gör midsommartallriken komplett.",
},
],
},
{
slug: "havregrynsgrot",
titleSv: "Havregrynsgröt med äpple och kanel",
descriptionSv: "Vardagsfrukostens bas: krämig havregrynsgröt toppad med rivet äpple och kanel.",
cuisine: "swedish",
mealTypes: ["breakfast"],
tags: ["budget", "quick", "vegan"],
methods: ["stovetop", "microwave"],
equipment: ["stove"],
difficulty: "beginner",
prepMin: 2,
cookMin: 5,
portions: 2,
spiceLevel: 0,
mealPrepFriendly: false,
freezerFriendly: false,
peakSeasons: [],
holidayTags: [],
dnaCarb: "oats",
dnaVegetables: [],
dnaFlavor: ["warm", "cinnamon", "simple"],
ingredients: [
{ ing: "oats", nameSv: "Havregryn", qty: 2, unit: "DECILITER" },
{ ing: "salt", nameSv: "Salt", qty: 0.5, unit: "MILLILITER" },
{ ing: "apple", nameSv: "Äpple", qty: 1, unit: "COUNT", note: "rivet" },
{ ing: "cinnamon", nameSv: "Kanel", qty: 1, unit: "TEASPOON" },
{ ing: "milk_3", nameSv: "Mjölk till servering", qty: 2, unit: "DECILITER", optional: true },
],
steps: [
{ text: "Koka upp 4 dl vatten med havregryn och salt." },
{ text: "Sjud under omrörning 3 minuter.", timerSeconds: 180 },
{ text: "Toppa med rivet äpple, kanel och mjölk." },
],
},
];