From 4b16cd949dd2d4cdceee2083585d4a9cf23b9616 Mon Sep 17 00:00:00 2001 From: "Leon.Ekelund" Date: Wed, 24 Sep 2025 14:22:35 +0200 Subject: [PATCH 01/10] Set up the project --- index.html | 16 ++++++++++++++++ script.js | 0 style.css | 0 3 files changed, 16 insertions(+) create mode 100644 index.html create mode 100644 script.js create mode 100644 style.css diff --git a/index.html b/index.html new file mode 100644 index 000000000..6dde2e155 --- /dev/null +++ b/index.html @@ -0,0 +1,16 @@ + + + + + + + Recipe project + + + + + + + + + \ No newline at end of file diff --git a/script.js b/script.js new file mode 100644 index 000000000..e69de29bb diff --git a/style.css b/style.css new file mode 100644 index 000000000..e69de29bb From ba327e068c6aaf272b0d106808b25e72647daae6 Mon Sep 17 00:00:00 2001 From: "Leon.Ekelund" Date: Thu, 9 Oct 2025 16:32:33 +0200 Subject: [PATCH 02/10] add JS functionality and some CSS --- backupData.js | 2116 +++++++++++++++++++++++++++++++++++++++++++++++++ index.html | 44 + script.js | 319 ++++++++ style.css | 157 ++++ 4 files changed, 2636 insertions(+) create mode 100644 backupData.js diff --git a/backupData.js b/backupData.js new file mode 100644 index 000000000..b570d2c61 --- /dev/null +++ b/backupData.js @@ -0,0 +1,2116 @@ +{ + recipes: [ + {}, + {}, + { + id: 661048, + image: "https://img.spoonacular.com/recipes/661048-556x370.", + imageType: "", + title: "Spicy Chicken Corn Dogs with Homemade Chili Sauce", + readyInMinutes: 45, + servings: 8, + sourceUrl: "https://www.foodista.com/recipe/VVLHPBNS/spicy-chicken-corn-dogs-with-homemade-chili-sauce", + vegetarian: false, + vegan: false, + glutenFree: true, + dairyFree: true, + veryHealthy: false, + cheap: false, + veryPopular: false, + sustainable: false, + lowFodmap: false, + weightWatcherSmartPoints: 16, + gaps: "no", + preparationMinutes: null, + cookingMinutes: null, + aggregateLikes: 10, + healthScore: 6, + creditsText: "foodista.com", + license: null, + sourceName: "foodista.com", + pricePerServing: 161.29, + extendedIngredients: [ + { + id: 10211962, + aisle: "Ethnic Foods", + image: "dried-arbol-chiles.jpg", + consistency: "SOLID", + name: "ancho chili pepper", + nameClean: "ancho chili pepper", + original: "1 ancho chili pepper", + originalName: "ancho chili pepper", + amount: 1, + unit: "", + meta: [], + measures: { + us: { + amount: 1, + unitShort: "", + unitLong: "" + }, + metric: { + amount: 1, + unitShort: "", + unitLong: "" + } + } + }, + { + id: 9291, + aisle: "Dried Fruits", + image: "prunes.jpg", + consistency: "SOLID", + name: "prunes", + nameClean: "prunes", + original: "2 large pitted prunes", + originalName: "pitted prunes", + amount: 2, + unit: "large", + meta: [ + "pitted" + ], + measures: { + us: { + amount: 2, + unitShort: "large", + unitLong: "larges" + }, + metric: { + amount: 2, + unitShort: "large", + unitLong: "larges" + } + } + }, + { + id: 10093741, + aisle: "Canned and Jarred", + image: "beef-broth.png", + consistency: "LIQUID", + name: "beef broth", + nameClean: "beef broth", + original: "1 cup low-sodium chicken or beef broth", + originalName: "low-sodium chicken or beef broth", + amount: 1, + unit: "cup", + meta: [ + "low-sodium" + ], + measures: { + us: { + amount: 1, + unitShort: "cup", + unitLong: "cup" + }, + metric: { + amount: 240, + unitShort: "ml", + unitLong: "milliliters" + } + } + }, + { + id: 98849, + aisle: "Canned and Jarred", + image: "tomatoes-canned.png", + consistency: "SOLID", + name: "fire-roasted tomatoes", + nameClean: "fire-roasted tomatoes", + original: "1 cup fire-roasted tomatoes", + originalName: "fire-roasted tomatoes", + amount: 1, + unit: "cup", + meta: [], + measures: { + us: { + amount: 1, + unitShort: "cup", + unitLong: "cup" + }, + metric: { + amount: 260, + unitShort: "g", + unitLong: "grams" + } + } + }, + { + id: 11887, + aisle: "Pasta and Rice", + image: "tomato-paste.jpg", + consistency: "SOLID", + name: "tomato paste", + nameClean: "tomato paste", + original: "¼ cup tomato paste", + originalName: "tomato paste", + amount: 0.25, + unit: "cup", + meta: [], + measures: { + us: { + amount: 0.25, + unitShort: "cups", + unitLong: "cups" + }, + metric: { + amount: 65.5, + unitShort: "ml", + unitLong: "milliliters" + } + } + }, + { + id: 11282, + aisle: "Produce", + image: "brown-onion.png", + consistency: "SOLID", + name: "onion", + nameClean: "onion", + original: "1 small onion, peeled cut into quarters", + originalName: "onion, peeled cut into quarters", + amount: 1, + unit: "small", + meta: [ + "peeled", + "cut into quarters" + ], + measures: { + us: { + amount: 1, + unitShort: "small", + unitLong: "small" + }, + metric: { + amount: 1, + unitShort: "small", + unitLong: "small" + } + } + }, + { + id: 19304, + aisle: "Baking", + image: "molasses.jpg", + consistency: "SOLID", + name: "molasses", + nameClean: "molasses", + original: "1 teaspoon molasses", + originalName: "molasses", + amount: 1, + unit: "teaspoon", + meta: [], + measures: { + us: { + amount: 1, + unitShort: "tsp", + unitLong: "teaspoon" + }, + metric: { + amount: 1, + unitShort: "tsp", + unitLong: "teaspoon" + } + } + }, + { + id: 11215, + aisle: "Produce", + image: "garlic.png", + consistency: "SOLID", + name: "garlic", + nameClean: "garlic", + original: "2 cloves garlic, peeled", + originalName: "garlic, peeled", + amount: 2, + unit: "cloves", + meta: [ + "peeled" + ], + measures: { + us: { + amount: 2, + unitShort: "cloves", + unitLong: "cloves" + }, + metric: { + amount: 2, + unitShort: "cloves", + unitLong: "cloves" + } + } + }, + { + id: 12016, + aisle: "Savory Snacks", + image: "pumpkin-seeds.jpg", + consistency: "SOLID", + name: "pumpkin seeds", + nameClean: "pumpkin seeds", + original: "¼ cup raw, unsalted pumpkin seeds", + originalName: "raw, unsalted pumpkin seeds", + amount: 0.25, + unit: "cup", + meta: [ + "raw", + "unsalted" + ], + measures: { + us: { + amount: 0.25, + unitShort: "cups", + unitLong: "cups" + }, + metric: { + amount: 29.5, + unitShort: "g", + unitLong: "grams" + } + } + }, + { + id: 1012014, + aisle: "Spices and Seasonings", + image: "ground-cumin.jpg", + consistency: "SOLID", + name: "ground cumin", + nameClean: "ground cumin", + original: "1 teaspoon ground cumin", + originalName: "ground cumin", + amount: 1, + unit: "teaspoon", + meta: [], + measures: { + us: { + amount: 1, + unitShort: "tsp", + unitLong: "teaspoon" + }, + metric: { + amount: 1, + unitShort: "tsp", + unitLong: "teaspoon" + } + } + }, + { + id: 2027, + aisle: "Spices and Seasonings", + image: "oregano.jpg", + consistency: "SOLID", + name: "oregano", + nameClean: "oregano", + original: "1 teaspoon fresh oregano", + originalName: "fresh oregano", + amount: 1, + unit: "teaspoon", + meta: [ + "fresh" + ], + measures: { + us: { + amount: 1, + unitShort: "tsp", + unitLong: "teaspoon" + }, + metric: { + amount: 1, + unitShort: "tsp", + unitLong: "teaspoon" + } + } + }, + { + id: 20317, + aisle: "Baking", + image: "corn-flour.jpg", + consistency: "SOLID", + name: "masa harina", + nameClean: "masa harina", + original: "½ cup masa harina, Masabrosa preferred (see Kitchen Tip #1)", + originalName: "masa harina, Masabrosa preferred (see Kitchen Tip #1)", + amount: 0.5, + unit: "cup", + meta: [ + "(see Kitchen Tip #1)" + ], + measures: { + us: { + amount: 0.5, + unitShort: "cups", + unitLong: "cups" + }, + metric: { + amount: 57, + unitShort: "g", + unitLong: "grams" + } + } + }, + { + id: 35137, + aisle: "Baking", + image: "cornmeal.png", + consistency: "SOLID", + name: "cornmeal", + nameClean: "cornmeal", + original: "¼ cup stone-ground cornmeal", + originalName: "stone-ground cornmeal", + amount: 0.25, + unit: "cup", + meta: [ + "stone-ground" + ], + measures: { + us: { + amount: 0.25, + unitShort: "cups", + unitLong: "cups" + }, + metric: { + amount: 39.75, + unitShort: "g", + unitLong: "grams" + } + } + }, + { + id: 20061, + aisle: "Health Foods", + image: "white-powder.jpg", + consistency: "SOLID", + name: "rice flour", + nameClean: "rice flour", + original: "1 cup rice flour, divided", + originalName: "rice flour, divided", + amount: 1, + unit: "cup", + meta: [ + "divided" + ], + measures: { + us: { + amount: 1, + unitShort: "cup", + unitLong: "cup" + }, + metric: { + amount: 160, + unitShort: "g", + unitLong: "grams" + } + } + }, + { + id: 18369, + aisle: "Baking", + image: "white-powder.jpg", + consistency: "SOLID", + name: "baking powder", + nameClean: "baking powder", + original: "1 teaspoon baking powder", + originalName: "baking powder", + amount: 1, + unit: "teaspoon", + meta: [], + measures: { + us: { + amount: 1, + unitShort: "tsp", + unitLong: "teaspoon" + }, + metric: { + amount: 1, + unitShort: "tsp", + unitLong: "teaspoon" + } + } + }, + { + id: 19334, + aisle: "Baking", + image: "light-brown-sugar.jpg", + consistency: "SOLID", + name: "brown sugar", + nameClean: "brown sugar", + original: "2 tablespoons brown sugar", + originalName: "brown sugar", + amount: 2, + unit: "tablespoons", + meta: [], + measures: { + us: { + amount: 2, + unitShort: "Tbsps", + unitLong: "Tbsps" + }, + metric: { + amount: 2, + unitShort: "Tbsps", + unitLong: "Tbsps" + } + } + }, + { + id: 1082047, + aisle: "Spices and Seasonings", + image: "salt.jpg", + consistency: "SOLID", + name: "kosher salt", + nameClean: "kosher salt", + original: "½ teaspoon kosher salt", + originalName: "kosher salt", + amount: 0.5, + unit: "teaspoon", + meta: [], + measures: { + us: { + amount: 0.5, + unitShort: "tsps", + unitLong: "teaspoons" + }, + metric: { + amount: 0.5, + unitShort: "tsps", + unitLong: "teaspoons" + } + } + }, + { + id: 1123, + aisle: "Milk, Eggs, Other Dairy", + image: "egg.png", + consistency: "SOLID", + name: "eggs", + nameClean: "eggs", + original: "2 large eggs", + originalName: "eggs", + amount: 2, + unit: "large", + meta: [], + measures: { + us: { + amount: 2, + unitShort: "large", + unitLong: "larges" + }, + metric: { + amount: 2, + unitShort: "large", + unitLong: "larges" + } + } + }, + { + id: 9160, + aisle: "Produce", + image: "lime-juice.png", + consistency: "LIQUID", + name: "juice of lime", + nameClean: "juice of lime", + original: "Juice of 1 lime", + originalName: "Juice of lime", + amount: 1, + unit: "", + meta: [], + measures: { + us: { + amount: 1, + unitShort: "", + unitLong: "" + }, + metric: { + amount: 1, + unitShort: "", + unitLong: "" + } + } + }, + { + id: 93761, + aisle: "Milk, Eggs, Other Dairy", + image: "rice-milk.png", + consistency: "LIQUID", + name: "rice milk", + nameClean: "rice milk", + original: "½ cup plus 2 tablespoons rice milk", + originalName: "rice milk", + amount: 0.5, + unit: "cup", + meta: [], + measures: { + us: { + amount: 0.5, + unitShort: "cups", + unitLong: "cups" + }, + metric: { + amount: 120, + unitShort: "ml", + unitLong: "milliliters" + } + } + }, + { + id: 1014582, + aisle: "Oil, Vinegar, Salad Dressing", + image: "vegetable-oil.jpg", + consistency: "LIQUID", + name: "canola oil", + nameClean: "canola oil", + original: "5 cups peanut or canola oil", + originalName: "peanut or canola oil", + amount: 5, + unit: "cups", + meta: [], + measures: { + us: { + amount: 5, + unitShort: "cups", + unitLong: "cups" + }, + metric: { + amount: 1.12, + unitShort: "l", + unitLong: "liters" + } + } + }, + { + id: 93668, + aisle: "Meat", + image: "chicken-or-turkey-sausage.jpg", + consistency: "SOLID", + name: "spicy chicken sausage links", + nameClean: "spicy chicken sausage links", + original: "4 spicy cooked chicken sausage links", + originalName: "spicy cooked chicken sausage links", + amount: 4, + unit: "", + meta: [ + "cooked" + ], + measures: { + us: { + amount: 4, + unitShort: "", + unitLong: "" + }, + metric: { + amount: 4, + unitShort: "", + unitLong: "" + } + } + } + ], + summary: "If you want to add more American recipes to your recipe box, Spicy Chicken Corn Dogs with Homemade Chili Sauce might be a recipe you should try. This gluten free and dairy free recipe serves 8 and costs $1.61 per serving. One portion of this dish contains approximately 13g of protein, 38g of fat, and a total of 555 calories. It works best as a hor d'oeuvre, and is done in about 45 minutes. The Super Bowl will be even more special with this recipe. 10 people have made this recipe and would make it again. If you have ground cumin, onion, oregano, and a few other ingredients on hand, you can make it. It is brought to you by Foodista. Overall, this recipe earns a good spoonacular score of 42%. Users who liked this recipe also liked Hot Dogs Three Ways – Pepper Jam/Chili Sauce, Bourbon Caramelized Onions and Spicy Tomato Relish, Grilled Corn with Spicy Chili Mayo, Coconut, and Fish Sauce, and Homemade Corn Dogs.", + cuisines: [ + "American" + ], + dishTypes: [ + "fingerfood", + "antipasti", + "lunch", + "main course", + "starter", + "snack", + "appetizer", + "main dish", + "antipasto", + "hor d'oeuvre", + "dinner" + ], + diets: [ + "gluten free", + "dairy free" + ], + occasions: [ + "super bowl" + ], + instructions: "To prepare the skewers: Soak 8 bamboo skewers in water for at least 30 minutes. Set aside. To make the sauce: Cut the top of the dried chili and shake out the seeds. Transfer them into a saucepan along with the prunes, broth, tomatoes, tomato paste, onion, molasses, garlic, pumpkin seeds, cumin, and oregano. Bring the mixture to a boil over high heat and cook for 2 minutes; then lower the heat to a simmer and cook for 20 minutes more. Using an immersion blender, puree the mixture until completely smooth. Return to the heat and simmer, uncovered, for another 15 to 20 minutes. (If you dont have an immersion blender, carefully ladle the sauce into a food processor, and process until smooth, working in batches; then return to the pot.) Set the sauce aside until ready to serve with the corndogs, or if you are making this ahead of time, once the sauce has cooled, transfer it to a container and refrigerate. To prepare the corn dogs: In a mixing bowl, combine the masa harina, cornmeal, cup of the rice flour, baking powder, brown sugar, and salt and mix to combine. Add the eggs, one at a time, mixing well to combine. Add the rice milk and lime juice and mix to combine. The mixture should resemble a thick pancake batter; if more milk is needed, add by the tablespoonful. Cover and refrigerate the mixture if you are not going to be frying right away. When you are ready to cook, heat the oil in a saucepan until it registers 350F on a deep-frying thermometer. While the oil is heating, place the remaining rice flour on a paper plate and set aside. Cut each chicken sausage in half crosswise, to make eight pieces. Roll each piece of sausage in the rice flour to lightly coat. Thread the moistened bamboo skewers through the sausage pieces, so that the tips of the skewers are not quite poking out the top. Holding it by its skewer, dip a floured sausage piece into the batter, until it is completely coated. Carefully lift the stick and hold it over the bowl for a few seconds, allowing any excess batter to drip off. Repeat with another skewer. Carefully place two corn dogs into the hot oil and cook until they are crusty on the outside, and dark golden brown, 3 to 4 minutes. Drain on paper towels and keep warm. Repeat with each skewered sausage, allowing the oil to return to 350F in between. Serve immediately with the chili.", + analyzedInstructions: [ + { + name: "To prepare the skewers", + steps: [ + { + number: 1, + step: "Soak 8 bamboo skewers in water for at least 30 minutes. Set aside.", + ingredients: [ + { + id: 14412, + name: "water", + localizedName: "water", + image: "water.png" + } + ], + equipment: [ + { + id: 3065, + name: "skewers", + localizedName: "skewers", + image: "https://spoonacular.com/cdn/equipment_100x100/wooden-skewers.jpg" + } + ], + length: { + number: 30, + unit: "minutes" + } + } + ] + }, + { + name: "To make the sauce", + steps: [ + { + number: 1, + step: "Cut the top of the dried chili and shake out the seeds.", + ingredients: [ + { + id: 10111962, + name: "dried chili pepper", + localizedName: "dried chili pepper", + image: "dried-arbol-chiles.jpg" + }, + { + id: 93818, + name: "seeds", + localizedName: "seeds", + image: "sunflower-seeds.jpg" + }, + { + id: 0, + name: "shake", + localizedName: "shake", + image: "" + } + ], + equipment: [] + }, + { + number: 2, + step: "Transfer them into a saucepan along with the prunes, broth, tomatoes, tomato paste, onion, molasses, garlic, pumpkin seeds, cumin, and oregano. Bring the mixture to a boil over high heat and cook for 2 minutes; then lower the heat to a simmer and cook for 20 minutes more.", + ingredients: [ + { + id: 12014, + name: "pumpkin seeds", + localizedName: "pumpkin seeds", + image: "pumpkin-seeds.jpg" + }, + { + id: 11887, + name: "tomato paste", + localizedName: "tomato paste", + image: "tomato-paste.jpg" + }, + { + id: 19304, + name: "molasses", + localizedName: "molasses", + image: "molasses.jpg" + }, + { + id: 11529, + name: "tomato", + localizedName: "tomato", + image: "tomato.png" + }, + { + id: 2027, + name: "oregano", + localizedName: "oregano", + image: "oregano.jpg" + }, + { + id: 11215, + name: "garlic", + localizedName: "garlic", + image: "garlic.png" + }, + { + id: 9291, + name: "prunes", + localizedName: "prunes", + image: "prunes.jpg" + }, + { + id: 1006615, + name: "broth", + localizedName: "broth", + image: "chicken-broth.png" + }, + { + id: 1002014, + name: "cumin", + localizedName: "cumin", + image: "ground-cumin.jpg" + }, + { + id: 11282, + name: "onion", + localizedName: "onion", + image: "brown-onion.png" + } + ], + equipment: [ + { + id: 404669, + name: "sauce pan", + localizedName: "sauce pan", + image: "https://spoonacular.com/cdn/equipment_100x100/sauce-pan.jpg" + } + ], + length: { + number: 22, + unit: "minutes" + } + }, + { + number: 3, + step: "Using an immersion blender, puree the mixture until completely smooth. Return to the heat and simmer, uncovered, for another 15 to 20 minutes. (If you dont have an immersion blender, carefully ladle the sauce into a food processor, and process until smooth, working in batches; then return to the pot.) Set the sauce aside until ready to serve with the corndogs, or if you are making this ahead of time, once the sauce has cooled, transfer it to a container and refrigerate.", + ingredients: [ + { + id: 0, + name: "sauce", + localizedName: "sauce", + image: "" + } + ], + equipment: [ + { + id: 404776, + name: "immersion blender", + localizedName: "immersion blender", + image: "https://spoonacular.com/cdn/equipment_100x100/immersion-blender.png" + }, + { + id: 404771, + name: "food processor", + localizedName: "food processor", + image: "https://spoonacular.com/cdn/equipment_100x100/food-processor.png" + }, + { + id: 404630, + name: "ladle", + localizedName: "ladle", + image: "https://spoonacular.com/cdn/equipment_100x100/ladle.jpg" + }, + { + id: 404752, + name: "pot", + localizedName: "pot", + image: "https://spoonacular.com/cdn/equipment_100x100/stock-pot.jpg" + } + ], + length: { + number: 15, + unit: "minutes" + } + } + ] + }, + { + name: "To prepare the corn dogs", + steps: [ + { + number: 1, + step: "In a mixing bowl, combine the masa harina, cornmeal, cup of the rice flour, baking powder, brown sugar, and salt and mix to combine.", + ingredients: [ + { + id: 18369, + name: "baking powder", + localizedName: "baking powder", + image: "white-powder.jpg" + }, + { + id: 19334, + name: "brown sugar", + localizedName: "brown sugar", + image: "dark-brown-sugar.png" + }, + { + id: 20317, + name: "masa harina", + localizedName: "masa harina", + image: "corn-flour.jpg" + }, + { + id: 20061, + name: "rice flour", + localizedName: "rice flour", + image: "white-powder.jpg" + }, + { + id: 35137, + name: "cornmeal", + localizedName: "cornmeal", + image: "cornmeal.png" + }, + { + id: 2047, + name: "salt", + localizedName: "salt", + image: "salt.jpg" + } + ], + equipment: [ + { + id: 405907, + name: "mixing bowl", + localizedName: "mixing bowl", + image: "https://spoonacular.com/cdn/equipment_100x100/mixing-bowl.jpg" + } + ] + }, + { + number: 2, + step: "Add the eggs, one at a time, mixing well to combine.", + ingredients: [ + { + id: 1123, + name: "egg", + localizedName: "egg", + image: "egg.png" + } + ], + equipment: [] + }, + { + number: 3, + step: "Add the rice milk and lime juice and mix to combine. The mixture should resemble a thick pancake batter; if more milk is needed, add by the tablespoonful. Cover and refrigerate the mixture if you are not going to be frying right away.", + ingredients: [ + { + id: 9160, + name: "lime juice", + localizedName: "lime juice", + image: "lime-juice.png" + }, + { + id: 93761, + name: "rice milk", + localizedName: "rice milk", + image: "rice-milk.png" + }, + { + id: 1077, + name: "milk", + localizedName: "milk", + image: "milk.png" + } + ], + equipment: [] + }, + { + number: 4, + step: "When you are ready to cook, heat the oil in a saucepan until it registers 350F on a deep-frying thermometer. While the oil is heating, place the remaining rice flour on a paper plate and set aside.", + ingredients: [ + { + id: 20061, + name: "rice flour", + localizedName: "rice flour", + image: "white-powder.jpg" + }, + { + id: 4582, + name: "cooking oil", + localizedName: "cooking oil", + image: "vegetable-oil.jpg" + } + ], + equipment: [ + { + id: 404789, + name: "kitchen thermometer", + localizedName: "kitchen thermometer", + image: "https://spoonacular.com/cdn/equipment_100x100/food-thermometer.jpg" + }, + { + id: 404669, + name: "sauce pan", + localizedName: "sauce pan", + image: "https://spoonacular.com/cdn/equipment_100x100/sauce-pan.jpg" + } + ] + }, + { + number: 5, + step: "Cut each chicken sausage in half crosswise, to make eight pieces.", + ingredients: [ + { + id: 93668, + name: "chicken sausage", + localizedName: "chicken sausage", + image: "chicken-or-turkey-sausage.jpg" + } + ], + equipment: [] + }, + { + number: 6, + step: "Roll each piece of sausage in the rice flour to lightly coat. Thread the moistened bamboo skewers through the sausage pieces, so that the tips of the skewers are not quite poking out the top. Holding it by its skewer, dip a floured sausage piece into the batter, until it is completely coated. Carefully lift the stick and hold it over the bowl for a few seconds, allowing any excess batter to drip off. Repeat with another skewer. Carefully place two corn dogs into the hot oil and cook until they are crusty on the outside, and dark golden brown, 3 to 4 minutes.", + ingredients: [ + { + id: 20061, + name: "rice flour", + localizedName: "rice flour", + image: "white-powder.jpg" + }, + { + id: 1017063, + name: "sausage", + localizedName: "sausage", + image: "raw-pork-sausage.png" + }, + { + id: 11168, + name: "corn", + localizedName: "corn", + image: "corn.png" + }, + { + id: 21118, + name: "hot dogs", + localizedName: "hot dogs", + image: "hotdogs.png" + }, + { + id: 0, + name: "roll", + localizedName: "roll", + image: "dinner-yeast-rolls.jpg" + }, + { + id: 0, + name: "dip", + localizedName: "dip", + image: "" + }, + { + id: 4582, + name: "cooking oil", + localizedName: "cooking oil", + image: "vegetable-oil.jpg" + } + ], + equipment: [ + { + id: 3065, + name: "skewers", + localizedName: "skewers", + image: "https://spoonacular.com/cdn/equipment_100x100/wooden-skewers.jpg" + }, + { + id: 404783, + name: "bowl", + localizedName: "bowl", + image: "https://spoonacular.com/cdn/equipment_100x100/bowl.jpg" + } + ], + length: { + number: 3, + unit: "minutes" + } + }, + { + number: 7, + step: "Drain on paper towels and keep warm. Repeat with each skewered sausage, allowing the oil to return to 350F in between.", + ingredients: [ + { + id: 1017063, + name: "sausage", + localizedName: "sausage", + image: "raw-pork-sausage.png" + }, + { + id: 4582, + name: "cooking oil", + localizedName: "cooking oil", + image: "vegetable-oil.jpg" + } + ], + equipment: [ + { + id: 405895, + name: "paper towels", + localizedName: "paper towels", + image: "https://spoonacular.com/cdn/equipment_100x100/paper-towels.jpg" + } + ] + }, + { + number: 8, + step: "Serve immediately with the chili.", + ingredients: [ + { + id: 11819, + name: "chili pepper", + localizedName: "chili pepper", + image: "red-chili.jpg" + } + ], + equipment: [] + } + ] + } + ], + originalId: null, + spoonacularScore: 50.55707550048828, + spoonacularSourceUrl: "https://spoonacular.com/spicy-chicken-corn-dogs-with-homemade-chili-sauce-661048" + }, + { + id: 654432, + image: "https://img.spoonacular.com/recipes/654432-556x370.jpg", + imageType: "jpg", + title: "Pan Seared Lamb Loin With Chimichurri & Roasted Trio Squash Salad With Goat Cheese and Pinenuts", + readyInMinutes: 45, + servings: 4, + sourceUrl: "https://www.foodista.com/recipe/46RBKQJ7/pan-seared-lamb-loin-with-chimmichurri-roasted-trio-squash-salad-with-goat-cheese-and-pinenuts", + vegetarian: false, + vegan: false, + glutenFree: true, + dairyFree: true, + veryHealthy: false, + cheap: false, + veryPopular: false, + sustainable: false, + lowFodmap: false, + weightWatcherSmartPoints: 16, + gaps: "no", + preparationMinutes: null, + cookingMinutes: null, + aggregateLikes: 56, + healthScore: 25, + creditsText: "foodista.com", + license: null, + sourceName: "foodista.com", + pricePerServing: 382.58, + extendedIngredients: [ + { + id: 11165, + aisle: "Produce", + image: "cilantro.png", + consistency: "SOLID", + name: "cilantro", + nameClean: "cilantro", + original: "1/4 cup cilantro, finely chopped", + originalName: "cilantro, finely chopped", + amount: 0.25, + unit: "cup", + meta: [ + "finely chopped" + ], + measures: { + us: { + amount: 0.25, + unitShort: "cups", + unitLong: "cups" + }, + metric: { + amount: 4, + unitShort: "g", + unitLong: "grams" + } + } + }, + { + id: 1034053, + aisle: "Oil, Vinegar, Salad Dressing", + image: "olive-oil.jpg", + consistency: "LIQUID", + name: "extra virgin olive oil", + nameClean: "extra virgin olive oil", + original: "2 tablespoons extra virgin olive oil", + originalName: "extra virgin olive oil", + amount: 2, + unit: "tablespoons", + meta: [], + measures: { + us: { + amount: 2, + unitShort: "Tbsps", + unitLong: "Tbsps" + }, + metric: { + amount: 2, + unitShort: "Tbsps", + unitLong: "Tbsps" + } + } + }, + { + id: 10311297, + aisle: "Produce", + image: "parsley.jpg", + consistency: "SOLID", + name: "flat leaf parsley", + nameClean: "flat leaf parsley", + original: "1/4 cup flat leaf parsley, finely chopped", + originalName: "flat leaf parsley, finely chopped", + amount: 0.25, + unit: "cup", + meta: [ + "finely chopped" + ], + measures: { + us: { + amount: 0.25, + unitShort: "cups", + unitLong: "cups" + }, + metric: { + amount: 15, + unitShort: "g", + unitLong: "grams" + } + } + }, + { + id: 10211215, + aisle: "Produce", + image: "garlic.jpg", + consistency: "SOLID", + name: "garlic clove", + nameClean: "garlic clove", + original: "1 garlic clove, finely minced", + originalName: "garlic clove, finely minced", + amount: 1, + unit: "", + meta: [ + "finely minced" + ], + measures: { + us: { + amount: 1, + unitShort: "", + unitLong: "" + }, + metric: { + amount: 1, + unitShort: "", + unitLong: "" + } + } + }, + { + id: 1002030, + aisle: "Spices and Seasonings", + image: "pepper.jpg", + consistency: "SOLID", + name: "ground pepper", + nameClean: "ground pepper", + original: "ground black pepper to taste", + originalName: "ground black pepper to taste", + amount: 4, + unit: "servings", + meta: [ + "black", + "to taste" + ], + measures: { + us: { + amount: 4, + unitShort: "servings", + unitLong: "servings" + }, + metric: { + amount: 4, + unitShort: "servings", + unitLong: "servings" + } + } + }, + { + id: 1102047, + aisle: "Spices and Seasonings", + image: "salt-and-pepper.jpg", + consistency: "SOLID", + name: "kosher salt and pepper", + nameClean: "kosher salt and pepper", + original: "kosher salt and pepper to taste", + originalName: "kosher salt and pepper to taste", + amount: 4, + unit: "servings", + meta: [ + "to taste" + ], + measures: { + us: { + amount: 4, + unitShort: "servings", + unitLong: "servings" + }, + metric: { + amount: 4, + unitShort: "servings", + unitLong: "servings" + } + } + }, + { + id: 17023, + aisle: "Meat", + image: "lamb-chops.png", + consistency: "SOLID", + name: "lamb loin chops", + nameClean: "lamb loin chops", + original: "4 lamb loin chops", + originalName: "lamb loin chops", + amount: 4, + unit: "", + meta: [], + measures: { + us: { + amount: 4, + unitShort: "", + unitLong: "" + }, + metric: { + amount: 4, + unitShort: "", + unitLong: "" + } + } + }, + { + id: 9150, + aisle: "Produce", + image: "lemon.png", + consistency: "SOLID", + name: "lemon", + nameClean: "lemon", + original: "1 lemon, freshly squeezed", + originalName: "lemon, freshly squeezed", + amount: 1, + unit: "", + meta: [ + "freshly squeezed" + ], + measures: { + us: { + amount: 1, + unitShort: "", + unitLong: "" + }, + metric: { + amount: 1, + unitShort: "", + unitLong: "" + } + } + }, + { + id: 2064, + aisle: "Produce", + image: "mint.jpg", + consistency: "SOLID", + name: "mint", + nameClean: "mint", + original: "1/4 cup mint, finely chopped", + originalName: "mint, finely chopped", + amount: 0.25, + unit: "cup", + meta: [ + "finely chopped" + ], + measures: { + us: { + amount: 0.25, + unitShort: "cups", + unitLong: "cups" + }, + metric: { + amount: 11.25, + unitShort: "g", + unitLong: "grams" + } + } + }, + { + id: 12147, + aisle: "Produce", + image: "pine-nuts.png", + consistency: "SOLID", + name: "pinenuts", + nameClean: "pinenuts", + original: "1/4 cup pinenuts, toasted, finely chopped", + originalName: "pinenuts, toasted, finely chopped", + amount: 0.25, + unit: "cup", + meta: [ + "toasted", + "finely chopped" + ], + measures: { + us: { + amount: 0.25, + unitShort: "cups", + unitLong: "cups" + }, + metric: { + amount: 33.75, + unitShort: "g", + unitLong: "grams" + } + } + }, + { + id: 1032009, + aisle: "Spices and Seasonings", + image: "red-pepper-flakes.jpg", + consistency: "SOLID", + name: "pepper flakes", + nameClean: "pepper flakes", + original: "1 tablespoon red pepper flakes, chopped", + originalName: "red pepper flakes, chopped", + amount: 1, + unit: "tablespoon", + meta: [ + "red", + "chopped" + ], + measures: { + us: { + amount: 1, + unitShort: "Tbsp", + unitLong: "Tbsp" + }, + metric: { + amount: 1, + unitShort: "Tbsp", + unitLong: "Tbsp" + } + } + }, + { + id: 11677, + aisle: "Produce", + image: "shallots.jpg", + consistency: "SOLID", + name: "shallot", + nameClean: "shallot", + original: "1 shallot, finely minced", + originalName: "shallot, finely minced", + amount: 1, + unit: "", + meta: [ + "finely minced" + ], + measures: { + us: { + amount: 1, + unitShort: "", + unitLong: "" + }, + metric: { + amount: 1, + unitShort: "", + unitLong: "" + } + } + } + ], + summary: "Pan Seared Lamb Loin With Chimichurri & Roasted Trio Squash Salad With Goat Cheese and Pinenuts is a gluten free, dairy free, paleolithic, and primal recipe with 4 servings. This main course has 492 calories, 21g of protein, and 43g of fat per serving. For $3.83 per serving, this recipe covers 21% of your daily requirements of vitamins and minerals. From preparation to the plate, this recipe takes about 45 minutes. 56 people have made this recipe and would make it again. It is a rather pricey recipe for fans of Latin American food. Head to the store and pick up cilantro, shallot, flat leaf parsley, and a few other things to make it today. It is brought to you by Foodista. Overall, this recipe earns a tremendous spoonacular score of 85%. If you like this recipe, take a look at these similar recipes: Pan-seared Loin Of Lamb, Pan-Roasted Lamb Chops with Honey-Balsamic Figs and Goat Cheese, and Pan Seared Steaks with Balsamic Red Onions and Roasted Garlic and Porcini Mushroom Goat Cheese Butter.", + cuisines: [ + "South American", + "Latin American" + ], + dishTypes: [ + "lunch", + "main course", + "main dish", + "dinner" + ], + diets: [ + "gluten free", + "dairy free", + "paleolithic", + "primal", + "whole 30", + "ketogenic" + ], + occasions: [], + instructions: "
  1. Preheat oven to 400F.
  2. For the Chimichurri, place all of the ingredients in a large bowl and incorporate together. Season with salt and pepper.
  3. Heat a large, heavy bottomed pan with the oil. Sprinkle each side of the lamb loin evenly with salt and pepper. (This cooking process is exactly like the way you make steak). Once the oil is hot (it will smoke a little bit), sear the lamb loin, about 2 minutes per side and allow the lamb to cook the rest of the way in the oven. The cooking times are as follows:
  4. If you like your lamb rare, place it in the oven for no more than 2-3 minutes. If you like your lamb medium rare place it in the oven for about 6-8 minutes. If you like your lamb medium place it in the oven for 9 to 11 minutes. If you like it well done leave it in there for 12-14 minutes. Remember, the lamb will continue to cook after you take it out so plan accordingly.
", + analyzedInstructions: [ + { + name: "", + steps: [ + { + number: 1, + step: "Preheat oven to 400F.For the Chimichurri, place all of the ingredients in a large bowl and incorporate together. Season with salt and pepper.", + ingredients: [ + { + id: 1102047, + name: "salt and pepper", + localizedName: "salt and pepper", + image: "salt-and-pepper.jpg" + }, + { + id: 0, + name: "chimichurri", + localizedName: "chimichurri", + image: "" + } + ], + equipment: [ + { + id: 404783, + name: "bowl", + localizedName: "bowl", + image: "https://spoonacular.com/cdn/equipment_100x100/bowl.jpg" + }, + { + id: 404784, + name: "oven", + localizedName: "oven", + image: "https://spoonacular.com/cdn/equipment_100x100/oven.jpg", + temperature: { + number: 400, + unit: "Fahrenheit" + } + } + ] + }, + { + number: 2, + step: "Heat a large, heavy bottomed pan with the oil.", + ingredients: [ + { + id: 4582, + name: "cooking oil", + localizedName: "cooking oil", + image: "vegetable-oil.jpg" + } + ], + equipment: [ + { + id: 404645, + name: "frying pan", + localizedName: "frying pan", + image: "https://spoonacular.com/cdn/equipment_100x100/pan.png" + } + ] + }, + { + number: 3, + step: "Sprinkle each side of the lamb loin evenly with salt and pepper. (This cooking process is exactly like the way you make steak). Once the oil is hot (it will smoke a little bit), sear the lamb loin, about 2 minutes per side and allow the lamb to cook the rest of the way in the oven. The cooking times are as follows:If you like your lamb rare, place it in the oven for no more than 2-3 minutes. If you like your lamb medium rare place it in the oven for about 6-8 minutes. If you like your lamb medium place it in the oven for 9 to 11 minutes. If you like it well done leave it in there for 12-14 minutes. Remember, the lamb will continue to cook after you take it out so plan accordingly.", + ingredients: [ + { + id: 1102047, + name: "salt and pepper", + localizedName: "salt and pepper", + image: "salt-and-pepper.jpg" + }, + { + id: 10017026, + name: "lamb loin", + localizedName: "lamb loin", + image: "lamb-chops.png" + }, + { + id: 23232, + name: "steak", + localizedName: "steak", + image: "ribeye-raw.jpg" + }, + { + id: 10017224, + name: "lamb", + localizedName: "lamb", + image: "lamb-shanks.jpg" + }, + { + id: 4582, + name: "cooking oil", + localizedName: "cooking oil", + image: "vegetable-oil.jpg" + } + ], + equipment: [ + { + id: 404784, + name: "oven", + localizedName: "oven", + image: "https://spoonacular.com/cdn/equipment_100x100/oven.jpg" + } + ], + length: { + number: 36, + unit: "minutes" + } + } + ] + } + ], + originalId: null, + spoonacularScore: 87.03909301757812, + spoonacularSourceUrl: "https://spoonacular.com/pan-seared-lamb-loin-with-chimichurri-roasted-trio-squash-salad-with-goat-cheese-and-pinenuts-654432" + }, + { + id: 647563, + image: "https://img.spoonacular.com/recipes/647563-556x370.jpg", + imageType: "jpg", + title: "How Sweet It Is Sweet Potato Lasagne", + readyInMinutes: 45, + servings: 6, + sourceUrl: "https://www.foodista.com/recipe/LYPLYH8P/how-sweet-it-is-sweet-potato-lasagne", + vegetarian: true, + vegan: false, + glutenFree: true, + dairyFree: false, + veryHealthy: false, + cheap: false, + veryPopular: false, + sustainable: false, + lowFodmap: false, + weightWatcherSmartPoints: 12, + gaps: "no", + preparationMinutes: null, + cookingMinutes: null, + aggregateLikes: 2, + healthScore: 52, + creditsText: "foodista.com", + license: null, + sourceName: "foodista.com", + pricePerServing: 439.95, + extendedIngredients: [ + { + id: 11265, + aisle: "Produce", + image: "portabello-mushrooms.jpg", + consistency: "SOLID", + name: "baby portabella mushrooms", + nameClean: "baby portabella mushrooms", + original: "12 Baby Portabella Mushrooms, sliced", + originalName: "Baby Portabella Mushrooms, sliced", + amount: 12, + unit: "", + meta: [ + "sliced" + ], + measures: { + us: { + amount: 12, + unitShort: "", + unitLong: "" + }, + metric: { + amount: 12, + unitShort: "", + unitLong: "" + } + } + }, + { + id: 2015, + aisle: "Spices and Seasonings", + image: "curry-powder.jpg", + consistency: "SOLID", + name: "curry powder", + nameClean: "curry powder", + original: "3 tablespoons Dry Curry Powder", + originalName: "Dry Curry Powder", + amount: 3, + unit: "tablespoons", + meta: [ + "dry" + ], + measures: { + us: { + amount: 3, + unitShort: "Tbsps", + unitLong: "Tbsps" + }, + metric: { + amount: 3, + unitShort: "Tbsps", + unitLong: "Tbsps" + } + } + }, + { + id: 2003, + aisle: "Spices and Seasonings", + image: "basil.jpg", + consistency: "SOLID", + name: "basil leaves", + nameClean: "basil leaves", + original: "2 tablespoons Dried Basil Leaves", + originalName: "Dried Basil Leaves", + amount: 2, + unit: "tablespoons", + meta: [ + "dried" + ], + measures: { + us: { + amount: 2, + unitShort: "Tbsps", + unitLong: "Tbsps" + }, + metric: { + amount: 2, + unitShort: "Tbsps", + unitLong: "Tbsps" + } + } + }, + { + id: 11209, + aisle: "Produce", + image: "eggplant.png", + consistency: "SOLID", + name: "eggplants", + nameClean: "eggplants", + original: "1 Eggplants", + originalName: "Eggplants", + amount: 1, + unit: "", + meta: [], + measures: { + us: { + amount: 1, + unitShort: "", + unitLong: "" + }, + metric: { + amount: 1, + unitShort: "", + unitLong: "" + } + } + }, + { + id: 11463, + aisle: "Frozen", + image: "spinach-frozen.jpg", + consistency: "SOLID", + name: "spinach", + nameClean: "spinach", + original: "10 ounces Frozen chopped Spinach, with excess water squeezed out", + originalName: "Frozen chopped Spinach, with excess water squeezed out", + amount: 10, + unit: "ounces", + meta: [ + "frozen", + "with excess water squeezed out", + "chopped" + ], + measures: { + us: { + amount: 10, + unitShort: "oz", + unitLong: "ounces" + }, + metric: { + amount: 283.495, + unitShort: "g", + unitLong: "grams" + } + } + }, + { + id: 1049, + aisle: "Milk, Eggs, Other Dairy", + image: "fluid-cream.jpg", + consistency: "SOLID", + name: "heavy cream", + nameClean: "heavy cream", + original: "1/2 cup Half & Half or Heavy Cream", + originalName: "Half & Half or Heavy Cream", + amount: 0.5, + unit: "cup", + meta: [], + measures: { + us: { + amount: 0.5, + unitShort: "cups", + unitLong: "cups" + }, + metric: { + amount: 121, + unitShort: "ml", + unitLong: "milliliters" + } + } + }, + { + id: 1001025, + aisle: "Cheese", + image: "shredded-cheese-white.jpg", + consistency: "SOLID", + name: "montery jack & cheddar cheese mix", + nameClean: "montery jack & cheddar cheese mix", + original: "12 ounces Montery Jack & Cheddar Cheese Mix", + originalName: "Montery Jack & Cheddar Cheese Mix", + amount: 12, + unit: "ounces", + meta: [], + measures: { + us: { + amount: 12, + unitShort: "oz", + unitLong: "ounces" + }, + metric: { + amount: 340.194, + unitShort: "g", + unitLong: "grams" + } + } + }, + { + id: 11979, + aisle: "Ethnic Foods", + image: "jalapeno-pepper.png", + consistency: "SOLID", + name: "jalapenos", + nameClean: "jalapenos", + original: "2 Jalapenos, finely chopped", + originalName: "Jalapenos, finely chopped", + amount: 2, + unit: "", + meta: [ + "finely chopped" + ], + measures: { + us: { + amount: 2, + unitShort: "", + unitLong: "" + }, + metric: { + amount: 2, + unitShort: "", + unitLong: "" + } + } + }, + { + id: 10111549, + aisle: "Pasta and Rice", + image: "tomato-sauce-or-pasta-sauce.jpg", + consistency: "SOLID", + name: "marinara sauce", + nameClean: "marinara sauce", + original: "3 cups Marinara Sauce (home made or a jar of 24 oz store bought)", + originalName: "Marinara Sauce (home made or a jar of 24 oz store bought)", + amount: 3, + unit: "cups", + meta: [ + "store bought", + "(home made or a jar of 24 oz )" + ], + measures: { + us: { + amount: 3, + unitShort: "cups", + unitLong: "cups" + }, + metric: { + amount: 735, + unitShort: "ml", + unitLong: "milliliters" + } + } + }, + { + id: 1102047, + aisle: "Spices and Seasonings", + image: "salt-and-pepper.jpg", + consistency: "SOLID", + name: "salt & pepper", + nameClean: "salt & pepper", + original: "Salt & Pepper, to taste", + originalName: "Salt & Pepper, to taste", + amount: 6, + unit: "servings", + meta: [ + "to taste" + ], + measures: { + us: { + amount: 6, + unitShort: "servings", + unitLong: "servings" + }, + metric: { + amount: 6, + unitShort: "servings", + unitLong: "servings" + } + } + }, + { + id: 11507, + aisle: "Produce", + image: "sweet-potato.png", + consistency: "SOLID", + name: "sweet potatoes", + nameClean: "sweet potatoes", + original: "4 Sweet Potatoes", + originalName: "Sweet Potatoes", + amount: 4, + unit: "", + meta: [], + measures: { + us: { + amount: 4, + unitShort: "", + unitLong: "" + }, + metric: { + amount: 4, + unitShort: "", + unitLong: "" + } + } + }, + { + id: 4669, + aisle: "Oil, Vinegar, Salad Dressing", + image: "vegetable-oil.jpg", + consistency: "LIQUID", + name: "vegetable cooking oil", + nameClean: "vegetable cooking oil", + original: "1 tablespoon Canola or Vegetable Cooking Oil", + originalName: "Canola or Vegetable Cooking Oil", + amount: 1, + unit: "tablespoon", + meta: [], + measures: { + us: { + amount: 1, + unitShort: "Tbsp", + unitLong: "Tbsp" + }, + metric: { + amount: 1, + unitShort: "Tbsp", + unitLong: "Tbsp" + } + } + } + ], + summary: "How Sweet It Is Sweet Potato Lasagne is a main course that serves 6. For $4.4 per serving, this recipe covers 44% of your daily requirements of vitamins and minerals. One serving contains 501 calories, 25g of protein, and 24g of fat. This recipe from Foodista has 2 fans. This recipe is typical of Mediterranean cuisine. It is a good option if you're following a gluten free and lacto ovo vegetarian diet. If you have eggplants, jalapenos, basil leaves, and a few other ingredients on hand, you can make it. From preparation to the plate, this recipe takes about 45 minutes. Overall, this recipe earns an amazing spoonacular score of 84%. Similar recipes are How Sweet It Is Sweet Potato Lasagne, Twice Baked Sweet Potato Potato Skins with Pecan Streusel (akan Individual Sweet Potato Casserole), and Twice Baked Sweet Potato Potato Skins with Pecan Streusel (akan Individual Sweet Potato Casserole).", + cuisines: [ + "Mediterranean", + "Italian", + "European" + ], + dishTypes: [ + "lunch", + "main course", + "main dish", + "dinner" + ], + diets: [ + "gluten free", + "lacto ovo vegetarian" + ], + occasions: [], + instructions: "
  1. Slice the Sweet Potato into 1/4 inch thick slices. Boil until semi-cooked (about 10 min). Rub the slices with a dry curry powder & olive oil (1cup) mixture. Set aside and let marinate for at least 10 min.
  2. Slice Eggplants into 1/4 inch thick slices and rub all over with an olive oil (1 cup)/dried basil/salt & pepper mix. Set aside and let marinate for at least 15 min.
  3. Pour canola or vegetable cooking oil into a pan. Saute spinach and mushrooms for about 3-5 min, add in jalapenos and salt & pepper to taste.
  4. Turn the heat down and add in some heavy cream and about 1/2 of the mexican cheeses until mixture is creamy, but not watery.
  5. Start layering the lasagne in this order: Sweet Potatoes, Spinach/Mushroom Mix, Eggplants, Marinara Sauce, Sweet Potatoes, Spinach/Mushrom Mix, Eggplants, Then finally sprinkle the remaining Monterey Jack/Cheddar Cheese Blend on top.
  6. Bake at 350-375 for about 35-45 min, depending on how your oven works. You'll know it's ready when you can pass through a fork easily through all the layers.
  7. Devour with Passion
", + analyzedInstructions: [ + { + name: "", + steps: [ + { + number: 1, + step: "Slice the Sweet Potato into 1/4 inch thick slices. Boil until semi-cooked (about 10 min). Rub the slices with a dry curry powder & olive oil (1cup) mixture. Set aside and let marinate for at least 10 min.Slice Eggplants into 1/4 inch thick slices and rub all over with an olive oil (1 cup)/dried basil/salt & pepper mix. Set aside and let marinate for at least 15 min.", + ingredients: [ + { + id: 1102047, + name: "salt and pepper", + localizedName: "salt and pepper", + image: "salt-and-pepper.jpg" + }, + { + id: 2015, + name: "curry powder", + localizedName: "curry powder", + image: "curry-powder.jpg" + }, + { + id: 11507, + name: "sweet potato", + localizedName: "sweet potato", + image: "sweet-potato.png" + }, + { + id: 2003, + name: "dried basil", + localizedName: "dried basil", + image: "basil.jpg" + }, + { + id: 11209, + name: "eggplant", + localizedName: "eggplant", + image: "eggplant.png" + }, + { + id: 4053, + name: "olive oil", + localizedName: "olive oil", + image: "olive-oil.jpg" + }, + { + id: 1012034, + name: "dry seasoning rub", + localizedName: "dry seasoning rub", + image: "seasoning.png" + } + ], + equipment: [], + length: { + number: 35, + unit: "minutes" + } + }, + { + number: 2, + step: "Pour canola or vegetable cooking oil into a pan.", + ingredients: [ + { + id: 4669, + name: "vegetable oil", + localizedName: "vegetable oil", + image: "vegetable-oil.jpg" + } + ], + equipment: [ + { + id: 404645, + name: "frying pan", + localizedName: "frying pan", + image: "https://spoonacular.com/cdn/equipment_100x100/pan.png" + } + ] + }, + { + number: 3, + step: "Saute spinach and mushrooms for about 3-5 min, add in jalapenos and salt & pepper to taste.Turn the heat down and add in some heavy cream and about 1/2 of the mexican cheeses until mixture is creamy, but not watery.Start layering the lasagne in this order: Sweet Potatoes, Spinach/Mushroom", + ingredients: [ + { + id: 11507, + name: "sweet potato", + localizedName: "sweet potato", + image: "sweet-potato.png" + }, + { + id: 1102047, + name: "salt and pepper", + localizedName: "salt and pepper", + image: "salt-and-pepper.jpg" + }, + { + id: 1053, + name: "heavy cream", + localizedName: "heavy cream", + image: "fluid-cream.jpg" + }, + { + id: 11979, + name: "jalapeno pepper", + localizedName: "jalapeno pepper", + image: "jalapeno-pepper.png" + }, + { + id: 11260, + name: "mushrooms", + localizedName: "mushrooms", + image: "https://spoonacular.com/cdn/ingredients_100x100/mushrooms.png" + }, + { + id: 10011457, + name: "spinach", + localizedName: "spinach", + image: "spinach.jpg" + } + ], + equipment: [], + length: { + number: 5, + unit: "minutes" + } + }, + { + number: 4, + step: "Mix, Eggplants, Marinara Sauce, Sweet Potatoes, Spinach/Mushrom", + ingredients: [ + { + id: 10111549, + name: "marinara sauce", + localizedName: "marinara sauce", + image: "tomato-sauce-or-pasta-sauce.jpg" + }, + { + id: 11507, + name: "sweet potato", + localizedName: "sweet potato", + image: "sweet-potato.png" + }, + { + id: 11209, + name: "eggplant", + localizedName: "eggplant", + image: "eggplant.png" + }, + { + id: 10011457, + name: "spinach", + localizedName: "spinach", + image: "spinach.jpg" + } + ], + equipment: [] + }, + { + number: 5, + step: "Mix, Eggplants, Then finally sprinkle the remaining Monterey Jack/Cheddar Cheese Blend on top.", + ingredients: [ + { + id: 1009, + name: "cheddar cheese", + localizedName: "cheddar cheese", + image: "cheddar-cheese.png" + }, + { + id: 1001025, + name: "monterey jack cheese", + localizedName: "monterey jack cheese", + image: "shredded-cheese-white.jpg" + }, + { + id: 11209, + name: "eggplant", + localizedName: "eggplant", + image: "eggplant.png" + } + ], + equipment: [] + }, + { + number: 6, + step: "Bake at 350-375 for about 35-45 min, depending on how your oven works. You'll know it's ready when you can pass through a fork easily through all the layers.Devour with Passion", + ingredients: [], + equipment: [ + { + id: 404784, + name: "oven", + localizedName: "oven", + image: "https://spoonacular.com/cdn/equipment_100x100/oven.jpg" + } + ], + length: { + number: 45, + unit: "minutes" + } + } + ] + } + ], + originalId: null, + spoonacularScore: 86.44890594482422, + spoonacularSourceUrl: "https://spoonacular.com/how-sweet-it-is-sweet-potato-lasagne-647563" + } + ] +} \ No newline at end of file diff --git a/index.html b/index.html index 6dde2e155..dd6bc82fa 100644 --- a/index.html +++ b/index.html @@ -5,12 +5,56 @@ Recipe project + + +

Recipe Library

+ + +
+ +
+

Filter on kitchen

+ +
+ + + + + + + +
+ +
+ + + +
+

Sort on time

+
+ + +
+
+ + +
+
+ + + +
+ + + +
+ \ No newline at end of file diff --git a/script.js b/script.js index e69de29bb..b135a4607 100644 --- a/script.js +++ b/script.js @@ -0,0 +1,319 @@ +//API VARIABLES +const apiKey = "bd0cc269e37b44dc9363d356be6f251a"; +const url = `https://api.spoonacular.com/recipes/random?number=5&apiKey=${apiKey}`; +const url2 = `https://api.spoonacular.com/recipes/complexSearch?number=5&addRecipeInformation=true&apiKey=${apiKey}&cuisine=Asian,Italian,Mexican,Mediterranean,Middle Eastern,European`; + + + +//DOM ELEMENTS +const recipesContainer = document.getElementById('recipesContainer'); +const filterBtns = document.querySelectorAll('.filter-btn'); +const sortBtns = document.querySelectorAll('.sort-btn'); +const randomBtn = document.getElementById('randomBtn'); + +//GLOBALS + + + +// API GOES HERE +// let recipesData = [ +// { +// id: 1, +// title: "Vegan Lentil Soup", +// image: "./chicken.webp", +// readyInMinutes: 30, +// servings: 4, +// sourceUrl: "https://example.com/vegan-lentil-soup", +// diets: ["vegan"], +// cuisine: "Mediterranean", +// ingredients: [ +// "red lentils", +// "carrots", +// "onion", +// "garlic", +// "tomato paste", +// "cumin", +// "paprika", +// "vegetable broth", +// "olive oil", +// "salt" +// ], +// pricePerServing: 2.5, +// popularity: 85 +// }, +// { +// id: 2, +// title: "Vegetarian Pesto Pasta", +// image: "./chicken.webp", +// readyInMinutes: 25, +// servings: 2, +// sourceUrl: "https://example.com/vegetarian-pesto-pasta", +// diets: ["vegetarian"], +// cuisine: "Italian", +// ingredients: [ +// "pasta", +// "basil", +// "parmesan cheese", +// "garlic", +// "pine nuts", +// "olive oil", +// "salt", +// "black pepper" +// ], +// pricePerServing: 3.0, +// popularity: 92 +// }, +// { +// id: 3, +// title: "Gluten-Free Chicken Stir-Fry", +// image: "./chicken.webp", +// readyInMinutes: 20, +// servings: 3, +// sourceUrl: "https://example.com/gluten-free-chicken-stir-fry", +// diets: ["gluten-free"], +// cuisine: "Asian", +// ingredients: [ +// "chicken breast", +// "broccoli", +// "bell pepper", +// "carrot", +// "soy sauce (gluten-free)", +// "ginger", +// "garlic", +// "sesame oil", +// "cornstarch", +// "green onion", +// "sesame seeds", +// "rice" +// ], +// pricePerServing: 4.0, +// popularity: 78 +// }, +// { +// id: 4, +// title: "Dairy-Free Tacos", +// image: "./chicken.webp", +// readyInMinutes: 15, +// servings: 2, +// sourceUrl: "https://example.com/dairy-free-tacos", +// diets: ["dairy-free"], +// cuisine: "Mexican", +// ingredients: [ +// "corn tortillas", +// "ground beef", +// "taco seasoning", +// "lettuce", +// "tomato", +// "avocado" +// ], +// pricePerServing: 2.8, +// popularity: 88 +// }, +// { +// id: 5, +// title: "Middle Eastern Hummus", +// image: "./chicken.webp", +// readyInMinutes: 10, +// servings: 4, +// sourceUrl: "https://example.com/middle-eastern-hummus", +// diets: ["vegan", "gluten-free"], +// cuisine: "Middle Eastern", +// ingredients: [ +// "chickpeas", +// "tahini", +// "garlic", +// "lemon juice", +// "olive oil" +// ], +// pricePerServing: 1.5, +// popularity: 95 +// }, +// { +// id: 6, +// title: "Quick Avocado Toast", +// image: "./chicken.webp", +// readyInMinutes: 5, +// servings: 1, +// sourceUrl: "https://example.com/quick-avocado-toast", +// diets: ["vegan"], +// cuisine: "Mediterranean", +// ingredients: [ +// "bread", +// "avocado", +// "lemon juice", +// "salt" +// ], +// pricePerServing: 2.0, +// popularity: 90 +// }, +// { +// id: 7, +// title: "Beef Stew", +// image: "./chicken.webp", +// readyInMinutes: 90, +// servings: 5, +// sourceUrl: "https://example.com/beef-stew", +// diets: [], +// cuisine: "European", +// ingredients: [ +// "beef chunks", +// "potatoes", +// "carrots", +// "onion", +// "garlic", +// "tomato paste", +// "beef broth", +// "red wine", +// "bay leaves", +// "thyme", +// "salt", +// "black pepper", +// "butter", +// "flour", +// "celery", +// "mushrooms" +// ], +// pricePerServing: 5.5, +// popularity: 80 +// } +// ] + +let recipesData = []; +let currentRecipes = []; + +//test + +const normalizeCuisine = (cuisine) => { + if (!cuisine) return "Unknown"; + + const asianCuisines = ["Chinese", "Japanese", "Thai", "Korean", "Vietnamese", "Indian"]; + const middleEasternCuisines = ["Turkish", "Lebanese", "Persian", "Israeli", "Egyptian"]; + const europeanCuisines = ["French", "Spanish", "German", "Greek", "British"]; + + if (asianCuisines.includes(cuisine)) return "Asian"; + if (middleEasternCuisines.includes(cuisine)) return "Middle Eastern"; + if (europeanCuisines.includes(cuisine)) return "European"; + + return cuisine; +}; + + +const fetchData = () => { + fetch(url2) + .then(res => res.json()) + .then(data => { + recipesData = data.results.map(recipe => ({ + // ändrat till results från recipes för att fixa complexsearch + id: recipe.id, + title: recipe.title, + image: recipe.image, + readyInMinutes: recipe.readyInMinutes, + cuisine: normalizeCuisine(recipe.cuisines?.[0]), + // cuisine: recipe.cuisines[0] || "Unknown", detta ör ändrat till den över + })); + currentRecipes = recipesData; + showRecipes(recipesData); + }) + .catch(err => console.error("Error fetching data:", err)); //lagg till api quota been reacheddddd +}; + + +fetchData(); + + + +// FUNCTION TO SHOW RECIPES +const showRecipes = (recipesToShow = recipesData) => { + + currentRecipes = recipesToShow; // store the current state + recipesContainer.innerHTML = ''; + + recipesToShow.forEach(recipe => { + recipesContainer.innerHTML += ` +
+

Title: ${recipe.title}

+

This dish is from ${recipe.cuisine}

+ ${recipe.title} +

This dish is ready in ${recipe.readyInMinutes} minutes!

+
+ + + `; + }); +}; + +// FUNCTION FOR BUTTONS + +//filTER BUTTONS +filterBtns.forEach(btn => { + btn.addEventListener("click", () => { + const selectedCuisine = btn.id.toLowerCase(); + + const filtered = + selectedCuisine === "all" + ? recipesData + : recipesData.filter(r => r.cuisine.toLowerCase() === selectedCuisine); + + filterBtns.forEach(b => b.classList.remove("active")); + btn.classList.add("active"); + + showRecipes(filtered); + }); +}); + +// filterBtns.forEach(btn => { +// btn.addEventListener("click", () => { +// const selectedCuisine = btn.id.toLowerCase(); + +// const filtered = +// selectedCuisine === "all" +// ? recipesData +// : recipesData.filter(r => r.cuisine.toLowerCase() === selectedCuisine); + +// filterBtns.forEach(b => b.classList.remove("active")); +// btn.classList.add("active"); + +// if (filtered.length === 0) { +// showMessage(`No ${selectedCuisine} recipes found.`); +// } else { +// showRecipes(filtered); +// // } +// // }); +// // }); + + + + +// SORT BUTTONS +sortBtns.forEach(btn => { + btn.addEventListener("click", () => { + const order = btn.id; // "ascending" or "descending" + + const sorted = [...currentRecipes].sort((a, b) => + order === "ascending" + ? a.readyInMinutes - b.readyInMinutes + : b.readyInMinutes - a.readyInMinutes + ); + + sortBtns.forEach(b => b.classList.remove("active")); + btn.classList.add("active"); + + showRecipes(sorted); + }); +}); + + + +// RANDOMBUTTON + + +randomBtn.addEventListener('click', () => { + //RANDOMNUMBER + const randomIndex = Math.floor(Math.random() * recipesData.length); + + //GETRECIPE + const randomRecipe = recipesData[randomIndex]; + + //SHOW THAT RECIPE + showRecipes([randomRecipe]); +}); \ No newline at end of file diff --git a/style.css b/style.css index e69de29bb..7626db4e6 100644 --- a/style.css +++ b/style.css @@ -0,0 +1,157 @@ +:root { + --primary-blue: #0018A4; + ; + --filter-default-background: #ccffe2; + --filter-hover-selected-color: #0018A4; + + + --sort-default-background: #FFECEA; + --sort-hover-selected-color: #FF6589; + + --space-1: 1rem; +} + +font-family: 'Futura', +sans-serif; + +body { + background-color: #FAFBFF; +} + +h1 { + color: #0018A4; + font-family: Futura; + font-size: 4em; + font-style: normal; + font-weight: 700; + line-height: normal; +} + +h2 { + color: #000; + font-family: Futura; + font-size: 22px; + font-style: normal; + font-weight: 700; + line-height: normal; +} + + + + +.filter-sort-container { + display: inline-flex; + flex-direction: column; + align-items: flex-start; + gap: 88px; +} + +.Filter-section { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 16px; +} + +.Sort-section { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 16px; +} + + +.button-section { + display: flex; + align-items: flex-start; + gap: 12px; +} + +.filter-btn { + background-color: var(--filter-default-background); + color: var(--filter-hover-selected-color); + border: none; + display: flex; + padding: 8px 16px; + flex-direction: column; + justify-content: center; + align-items: center; + gap: 10px; + border-radius: 50px; + border: 2px solid transparent; + transition: border-color 0.2s ease; +} + +.filter-btn:hover { + border: 2px solid #0018A4 +} + +.filter-btn.active { + background-color: #0018A4; + color: white; +} + +.sort-btn { + border: none; + background-color: var(--sort-default-background); + color: var(--filter-hover-selected-color); + display: flex; + padding: 8px 16px; + flex-direction: column; + justify-content: center; + align-items: center; + gap: 10px; + border-radius: 50px; + border: 2px solid transparent; + transition: border-color 0.2s ease; +} + +.sort-btn:hover { + color: white; + border: 2px solid #0018A4; + background-color: var(--sort-hover-selected-color); +} + +.sort-btn.active { + background-color: var(--sort-hover-selected-color); + color: white; +} + + +.recipe-card { + display: flex; + width: 300px; + padding: 16px 16px 24px 16px; + flex-direction: column; + align-items: flex-start; + gap: 16px; + border: 2px solid blue; + border-radius: 16px; + +} + +.recipe-card img { + width: 100%; + border-radius: 8px; +} + + +.random-recipe-btn { + background-color: var(--primary-blue); + color: white; + border: none; + display: flex; + padding: 8px 16px; + flex-direction: column; + justify-content: center; + align-items: center; + gap: 10px; + border-radius: 50px; + border: 2px solid transparent; + transition: border-color 0.2s ease; + margin-top: var(--space-1); +} + +.random-recipe-btn:hover { + cursor: pointer; +} \ No newline at end of file From 39997db633ae7ff7ebe2fbd84d808236cb5d7267 Mon Sep 17 00:00:00 2001 From: "Leon.Ekelund" Date: Fri, 10 Oct 2025 01:00:33 +0200 Subject: [PATCH 03/10] Fix mediaqueries and other issues --- index.html | 4 ++-- style.css | 66 +++++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 63 insertions(+), 7 deletions(-) diff --git a/index.html b/index.html index dd6bc82fa..eed9c4e1c 100644 --- a/index.html +++ b/index.html @@ -17,7 +17,7 @@

Recipe Library

-
+

Filter on kitchen

@@ -34,7 +34,7 @@

Filter on kitchen

-
+

Sort on time

diff --git a/style.css b/style.css index 7626db4e6..ad5b2bd70 100644 --- a/style.css +++ b/style.css @@ -16,15 +16,21 @@ sans-serif; body { background-color: #FAFBFF; + overflow-x: hidden; } + + + + h1 { color: #0018A4; font-family: Futura; - font-size: 4em; + font-size: 2em; font-style: normal; font-weight: 700; line-height: normal; + text-align: center; } h2 { @@ -34,6 +40,7 @@ h2 { font-style: normal; font-weight: 700; line-height: normal; + text-align: center; } @@ -42,10 +49,13 @@ h2 { .filter-sort-container { display: inline-flex; flex-direction: column; - align-items: flex-start; gap: 88px; + width: 100%; } + + + .Filter-section { display: flex; flex-direction: column; @@ -61,10 +71,12 @@ h2 { } + .button-section { display: flex; - align-items: flex-start; + flex-direction: column; gap: 12px; + } .filter-btn { @@ -97,7 +109,6 @@ h2 { color: var(--filter-hover-selected-color); display: flex; padding: 8px 16px; - flex-direction: column; justify-content: center; align-items: center; gap: 10px; @@ -142,7 +153,6 @@ h2 { border: none; display: flex; padding: 8px 16px; - flex-direction: column; justify-content: center; align-items: center; gap: 10px; @@ -150,8 +160,54 @@ h2 { border: 2px solid transparent; transition: border-color 0.2s ease; margin-top: var(--space-1); + margin: 0 auto; + } .random-recipe-btn:hover { cursor: pointer; +} + + + +/* MEDIA QUERIES FOR DESKTOP */ + +@media (min-width: 768px) { + + h1 { + font-size: 2.5em; + } + + h2 { + text-align: start; + + } + + .filter-sort-container { + display: inline-flex; + flex-direction: row; + align-items: flex-start; + gap: 88px; + } + + + + .button-section { + display: flex; + flex-direction: row; + flex-wrap: wrap; + gap: 12px; + justify-content: flex-start; + } + + .button-section button { + width: auto; + display: inline-flex; + } + + + + + + } \ No newline at end of file From 68e07cf3d5972a26b49505f3b90b2966ce666e69 Mon Sep 17 00:00:00 2001 From: "Leon.Ekelund" Date: Fri, 10 Oct 2025 11:28:00 +0200 Subject: [PATCH 04/10] Fix some more CSS issues --- backupData.js | 3 +- index.html | 3 +- script.js | 182 +++----------------------------------------------- style.css | 36 ++++++++-- 4 files changed, 44 insertions(+), 180 deletions(-) diff --git a/backupData.js b/backupData.js index b570d2c61..6080dc603 100644 --- a/backupData.js +++ b/backupData.js @@ -627,7 +627,8 @@ occasions: [ "super bowl" ], - instructions: "To prepare the skewers: Soak 8 bamboo skewers in water for at least 30 minutes. Set aside. To make the sauce: Cut the top of the dried chili and shake out the seeds. Transfer them into a saucepan along with the prunes, broth, tomatoes, tomato paste, onion, molasses, garlic, pumpkin seeds, cumin, and oregano. Bring the mixture to a boil over high heat and cook for 2 minutes; then lower the heat to a simmer and cook for 20 minutes more. Using an immersion blender, puree the mixture until completely smooth. Return to the heat and simmer, uncovered, for another 15 to 20 minutes. (If you dont have an immersion blender, carefully ladle the sauce into a food processor, and process until smooth, working in batches; then return to the pot.) Set the sauce aside until ready to serve with the corndogs, or if you are making this ahead of time, once the sauce has cooled, transfer it to a container and refrigerate. To prepare the corn dogs: In a mixing bowl, combine the masa harina, cornmeal, cup of the rice flour, baking powder, brown sugar, and salt and mix to combine. Add the eggs, one at a time, mixing well to combine. Add the rice milk and lime juice and mix to combine. The mixture should resemble a thick pancake batter; if more milk is needed, add by the tablespoonful. Cover and refrigerate the mixture if you are not going to be frying right away. When you are ready to cook, heat the oil in a saucepan until it registers 350F on a deep-frying thermometer. While the oil is heating, place the remaining rice flour on a paper plate and set aside. Cut each chicken sausage in half crosswise, to make eight pieces. Roll each piece of sausage in the rice flour to lightly coat. Thread the moistened bamboo skewers through the sausage pieces, so that the tips of the skewers are not quite poking out the top. Holding it by its skewer, dip a floured sausage piece into the batter, until it is completely coated. Carefully lift the stick and hold it over the bowl for a few seconds, allowing any excess batter to drip off. Repeat with another skewer. Carefully place two corn dogs into the hot oil and cook until they are crusty on the outside, and dark golden brown, 3 to 4 minutes. Drain on paper towels and keep warm. Repeat with each skewered sausage, allowing the oil to return to 350F in between. Serve immediately with the chili.", + + : "To prepare the skewers: Soak 8 bamboo skewers in water for at least 30 minutes. Set aside. To make the sauce: Cut the top of the dried chili and shake out the seeds. Transfer them into a saucepan along with the prunes, broth, tomatoes, tomato paste, onion, molasses, garlic, pumpkin seeds, cumin, and oregano. Bring the mixture to a boil over high heat and cook for 2 minutes; then lower the heat to a simmer and cook for 20 minutes more. Using an immersion blender, puree the mixture until completely smooth. Return to the heat and simmer, uncovered, for another 15 to 20 minutes. (If you dont have an immersion blender, carefully ladle the sauce into a food processor, and process until smooth, working in batches; then return to the pot.) Set the sauce aside until ready to serve with the corndogs, or if you are making this ahead of time, once the sauce has cooled, transfer it to a container and refrigerate. To prepare the corn dogs: In a mixing bowl, combine the masa harina, cornmeal, cup of the rice flour, baking powder, brown sugar, and salt and mix to combine. Add the eggs, one at a time, mixing well to combine. Add the rice milk and lime juice and mix to combine. The mixture should resemble a thick pancake batter; if more milk is needed, add by the tablespoonful. Cover and refrigerate the mixture if you are not going to be frying right away. When you are ready to cook, heat the oil in a saucepan until it registers 350F on a deep-frying thermometer. While the oil is heating, place the remaining rice flour on a paper plate and set aside. Cut each chicken sausage in half crosswise, to make eight pieces. Roll each piece of sausage in the rice flour to lightly coat. Thread the moistened bamboo skewers through the sausage pieces, so that the tips of the skewers are not quite poking out the top. Holding it by its skewer, dip a floured sausage piece into the batter, until it is completely coated. Carefully lift the stick and hold it over the bowl for a few seconds, allowing any excess batter to drip off. Repeat with another skewer. Carefully place two corn dogs into the hot oil and cook until they are crusty on the outside, and dark golden brown, 3 to 4 minutes. Drain on paper towels and keep warm. Repeat with each skewered sausage, allowing the oil to return to 350F in between. Serve immediately with the chili.", analyzedInstructions: [ { name: "To prepare the skewers", diff --git a/index.html b/index.html index eed9c4e1c..8f279d106 100644 --- a/index.html +++ b/index.html @@ -13,6 +13,7 @@

Recipe Library

+
@@ -39,6 +40,7 @@

Sort on time

+
@@ -46,7 +48,6 @@

Sort on time



-
diff --git a/script.js b/script.js index b135a4607..d18438fad 100644 --- a/script.js +++ b/script.js @@ -1,6 +1,5 @@ //API VARIABLES const apiKey = "bd0cc269e37b44dc9363d356be6f251a"; -const url = `https://api.spoonacular.com/recipes/random?number=5&apiKey=${apiKey}`; const url2 = `https://api.spoonacular.com/recipes/complexSearch?number=5&addRecipeInformation=true&apiKey=${apiKey}&cuisine=Asian,Italian,Mexican,Mediterranean,Middle Eastern,European`; @@ -11,172 +10,7 @@ const filterBtns = document.querySelectorAll('.filter-btn'); const sortBtns = document.querySelectorAll('.sort-btn'); const randomBtn = document.getElementById('randomBtn'); -//GLOBALS - - - -// API GOES HERE -// let recipesData = [ -// { -// id: 1, -// title: "Vegan Lentil Soup", -// image: "./chicken.webp", -// readyInMinutes: 30, -// servings: 4, -// sourceUrl: "https://example.com/vegan-lentil-soup", -// diets: ["vegan"], -// cuisine: "Mediterranean", -// ingredients: [ -// "red lentils", -// "carrots", -// "onion", -// "garlic", -// "tomato paste", -// "cumin", -// "paprika", -// "vegetable broth", -// "olive oil", -// "salt" -// ], -// pricePerServing: 2.5, -// popularity: 85 -// }, -// { -// id: 2, -// title: "Vegetarian Pesto Pasta", -// image: "./chicken.webp", -// readyInMinutes: 25, -// servings: 2, -// sourceUrl: "https://example.com/vegetarian-pesto-pasta", -// diets: ["vegetarian"], -// cuisine: "Italian", -// ingredients: [ -// "pasta", -// "basil", -// "parmesan cheese", -// "garlic", -// "pine nuts", -// "olive oil", -// "salt", -// "black pepper" -// ], -// pricePerServing: 3.0, -// popularity: 92 -// }, -// { -// id: 3, -// title: "Gluten-Free Chicken Stir-Fry", -// image: "./chicken.webp", -// readyInMinutes: 20, -// servings: 3, -// sourceUrl: "https://example.com/gluten-free-chicken-stir-fry", -// diets: ["gluten-free"], -// cuisine: "Asian", -// ingredients: [ -// "chicken breast", -// "broccoli", -// "bell pepper", -// "carrot", -// "soy sauce (gluten-free)", -// "ginger", -// "garlic", -// "sesame oil", -// "cornstarch", -// "green onion", -// "sesame seeds", -// "rice" -// ], -// pricePerServing: 4.0, -// popularity: 78 -// }, -// { -// id: 4, -// title: "Dairy-Free Tacos", -// image: "./chicken.webp", -// readyInMinutes: 15, -// servings: 2, -// sourceUrl: "https://example.com/dairy-free-tacos", -// diets: ["dairy-free"], -// cuisine: "Mexican", -// ingredients: [ -// "corn tortillas", -// "ground beef", -// "taco seasoning", -// "lettuce", -// "tomato", -// "avocado" -// ], -// pricePerServing: 2.8, -// popularity: 88 -// }, -// { -// id: 5, -// title: "Middle Eastern Hummus", -// image: "./chicken.webp", -// readyInMinutes: 10, -// servings: 4, -// sourceUrl: "https://example.com/middle-eastern-hummus", -// diets: ["vegan", "gluten-free"], -// cuisine: "Middle Eastern", -// ingredients: [ -// "chickpeas", -// "tahini", -// "garlic", -// "lemon juice", -// "olive oil" -// ], -// pricePerServing: 1.5, -// popularity: 95 -// }, -// { -// id: 6, -// title: "Quick Avocado Toast", -// image: "./chicken.webp", -// readyInMinutes: 5, -// servings: 1, -// sourceUrl: "https://example.com/quick-avocado-toast", -// diets: ["vegan"], -// cuisine: "Mediterranean", -// ingredients: [ -// "bread", -// "avocado", -// "lemon juice", -// "salt" -// ], -// pricePerServing: 2.0, -// popularity: 90 -// }, -// { -// id: 7, -// title: "Beef Stew", -// image: "./chicken.webp", -// readyInMinutes: 90, -// servings: 5, -// sourceUrl: "https://example.com/beef-stew", -// diets: [], -// cuisine: "European", -// ingredients: [ -// "beef chunks", -// "potatoes", -// "carrots", -// "onion", -// "garlic", -// "tomato paste", -// "beef broth", -// "red wine", -// "bay leaves", -// "thyme", -// "salt", -// "black pepper", -// "butter", -// "flour", -// "celery", -// "mushrooms" -// ], -// pricePerServing: 5.5, -// popularity: 80 -// } -// ] + let recipesData = []; let currentRecipes = []; @@ -209,6 +43,7 @@ const fetchData = () => { image: recipe.image, readyInMinutes: recipe.readyInMinutes, cuisine: normalizeCuisine(recipe.cuisines?.[0]), + summary: recipe.summary, // cuisine: recipe.cuisines[0] || "Unknown", detta ör ändrat till den över })); currentRecipes = recipesData; @@ -230,13 +65,18 @@ const showRecipes = (recipesToShow = recipesData) => { recipesToShow.forEach(recipe => { recipesContainer.innerHTML += ` +
-

Title: ${recipe.title}

-

This dish is from ${recipe.cuisine}

+

${recipe.title}

+
+

Cuisine: ${recipe.cuisine}

+
${recipe.title} -

This dish is ready in ${recipe.readyInMinutes} minutes!

+
+

Cooking time: ${recipe.readyInMinutes} minutes!

+

${recipe.summary}

- +
`; }); diff --git a/style.css b/style.css index ad5b2bd70..0fa335c89 100644 --- a/style.css +++ b/style.css @@ -11,12 +11,10 @@ --space-1: 1rem; } -font-family: 'Futura', -sans-serif; - body { background-color: #FAFBFF; overflow-x: hidden; + font-family: "Futura", "Trebuchet MS", Arial, sans-serif; } @@ -136,8 +134,10 @@ h2 { flex-direction: column; align-items: flex-start; gap: 16px; - border: 2px solid blue; + border: 2px solid #E9E9E9; + background: #FFF; border-radius: 16px; + margin: 0 auto; } @@ -146,6 +146,10 @@ h2 { border-radius: 8px; } +.recipe-card:hover { + box-shadow: 0 0 30px 0 rgba(0, 24, 164, 0.20); + border: 2px solid #0018A4; +} .random-recipe-btn { background-color: var(--primary-blue); @@ -161,6 +165,7 @@ h2 { transition: border-color 0.2s ease; margin-top: var(--space-1); margin: 0 auto; + margin-bottom: 100px; } @@ -168,6 +173,13 @@ h2 { cursor: pointer; } +.recipe-title { + font-weight: bold; +} + +.divider { + width: 95%; +} /* MEDIA QUERIES FOR DESKTOP */ @@ -175,7 +187,7 @@ h2 { @media (min-width: 768px) { h1 { - font-size: 2.5em; + font-size: 64px; } h2 { @@ -184,7 +196,7 @@ h2 { } .filter-sort-container { - display: inline-flex; + display: flex; flex-direction: row; align-items: flex-start; gap: 88px; @@ -205,9 +217,19 @@ h2 { display: inline-flex; } + .recipes-container { + display: flex; + gap: 32px; + } + .random-recipe-btn { + margin-bottom: 100px; + } - +.recipe-card-wrapper { + display: flex; + justify-content: start; +} } \ No newline at end of file From 9b4ea3d203fab44311136eae0cafe910e189d380 Mon Sep 17 00:00:00 2001 From: "Leon.Ekelund" Date: Fri, 10 Oct 2025 11:41:20 +0200 Subject: [PATCH 05/10] fix further CSS styling issues with media queries --- script.js | 9 +++++---- style.css | 10 +++++++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/script.js b/script.js index d18438fad..1d39afc55 100644 --- a/script.js +++ b/script.js @@ -1,6 +1,6 @@ //API VARIABLES const apiKey = "bd0cc269e37b44dc9363d356be6f251a"; -const url2 = `https://api.spoonacular.com/recipes/complexSearch?number=5&addRecipeInformation=true&apiKey=${apiKey}&cuisine=Asian,Italian,Mexican,Mediterranean,Middle Eastern,European`; +const url2 = `https://api.spoonacular.com/recipes/complexSearch?number=5&sort=random&addRecipeInformation=true&apiKey=${apiKey}&cuisine=Asian,Italian,Mexican,Mediterranean,Middle Eastern,European`; @@ -37,19 +37,20 @@ const fetchData = () => { .then(res => res.json()) .then(data => { recipesData = data.results.map(recipe => ({ - // ändrat till results från recipes för att fixa complexsearch id: recipe.id, title: recipe.title, image: recipe.image, readyInMinutes: recipe.readyInMinutes, cuisine: normalizeCuisine(recipe.cuisines?.[0]), - summary: recipe.summary, // cuisine: recipe.cuisines[0] || "Unknown", detta ör ändrat till den över + summary: recipe.summary })); currentRecipes = recipesData; showRecipes(recipesData); }) .catch(err => console.error("Error fetching data:", err)); //lagg till api quota been reacheddddd + + }; @@ -156,4 +157,4 @@ randomBtn.addEventListener('click', () => { //SHOW THAT RECIPE showRecipes([randomRecipe]); -}); \ No newline at end of file +}); diff --git a/style.css b/style.css index 0fa335c89..4e937df38 100644 --- a/style.css +++ b/style.css @@ -129,7 +129,7 @@ h2 { .recipe-card { display: flex; - width: 300px; + width: 250px; padding: 16px 16px 24px 16px; flex-direction: column; align-items: flex-start; @@ -138,12 +138,14 @@ h2 { background: #FFF; border-radius: 16px; margin: 0 auto; + margin-bottom: 50px; } .recipe-card img { - width: 100%; + width: 80%; border-radius: 8px; + margin: 0 auto; } .recipe-card:hover { @@ -202,7 +204,9 @@ h2 { gap: 88px; } - +..recipe-card { + width: 300pxgit; +} .button-section { display: flex; From e3892261ce0c9cd20b95873a309a1ddc63c7d9d9 Mon Sep 17 00:00:00 2001 From: "Leon.Ekelund" Date: Fri, 10 Oct 2025 11:43:37 +0200 Subject: [PATCH 06/10] Add a readme file that is updated --- README.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 58f1a8a66..02a65ac01 100644 --- a/README.md +++ b/README.md @@ -1 +1,11 @@ -# js-project-recipe-library +Welcome to my Recipe Project — a clean, interactive web app that helps you explore and organize recipes by cuisine and cooking time. + +Features: +Filter by cuisine: Italian, Mexican, Mediterranean, Asian, Middle Eastern, European +Sort by time: Quickly find recipes based on how long they take +Responsive layout and easy to navigate + +Tech Stack: +Built with modern web tools (HTML, CSS, JavaScript) and deployed via Netlify. + +LINK: https://leonekelund-recipe-project.netlify.app/ From f17f84f3b6ee1f4606f54c05baa60622e9e35f4b Mon Sep 17 00:00:00 2001 From: "Leon.Ekelund" Date: Sun, 12 Oct 2025 21:34:04 +0200 Subject: [PATCH 07/10] Clean up the code and add empty-state and API error messages --- index.html | 2 +- script.js | 68 +++++++++++++++++++++++++----------------------------- style.css | 26 +++++++++++++-------- 3 files changed, 49 insertions(+), 47 deletions(-) diff --git a/index.html b/index.html index 8f279d106..d8c49737d 100644 --- a/index.html +++ b/index.html @@ -13,7 +13,7 @@

Recipe Library

- +
diff --git a/script.js b/script.js index 1d39afc55..2aed88e12 100644 --- a/script.js +++ b/script.js @@ -10,13 +10,18 @@ const filterBtns = document.querySelectorAll('.filter-btn'); const sortBtns = document.querySelectorAll('.sort-btn'); const randomBtn = document.getElementById('randomBtn'); - +const showMessage = (message) => { + recipesContainer.innerHTML = ` +
+

${message}

+
+ `; +}; let recipesData = []; let currentRecipes = []; -//test - +// NORMALIZE THE CUISINES const normalizeCuisine = (cuisine) => { if (!cuisine) return "Unknown"; @@ -31,26 +36,36 @@ const normalizeCuisine = (cuisine) => { return cuisine; }; - +// FETCHING API const fetchData = () => { fetch(url2) .then(res => res.json()) .then(data => { + if (!data.results) { + showMessage("Daily API quota reached or an error occurred. Please try again later."); + return; + } + recipesData = data.results.map(recipe => ({ id: recipe.id, title: recipe.title, image: recipe.image, readyInMinutes: recipe.readyInMinutes, cuisine: normalizeCuisine(recipe.cuisines?.[0]), - // cuisine: recipe.cuisines[0] || "Unknown", detta ör ändrat till den över summary: recipe.summary })); - currentRecipes = recipesData; - showRecipes(recipesData); - }) - .catch(err => console.error("Error fetching data:", err)); //lagg till api quota been reacheddddd + currentRecipes = recipesData; + if (recipesData.length === 0) { + showMessage("No recipes found."); + } else { + showRecipes(recipesData); + } + }) + .catch(() => { + showMessage("Unable to load recipes. Please check your connection or try again later."); + }); }; @@ -61,7 +76,7 @@ fetchData(); // FUNCTION TO SHOW RECIPES const showRecipes = (recipesToShow = recipesData) => { - currentRecipes = recipesToShow; // store the current state + currentRecipes = recipesToShow; recipesContainer.innerHTML = ''; recipesToShow.forEach(recipe => { @@ -85,7 +100,7 @@ const showRecipes = (recipesToShow = recipesData) => { // FUNCTION FOR BUTTONS -//filTER BUTTONS +//FILTER BUTTONS filterBtns.forEach(btn => { btn.addEventListener("click", () => { const selectedCuisine = btn.id.toLowerCase(); @@ -98,31 +113,14 @@ filterBtns.forEach(btn => { filterBtns.forEach(b => b.classList.remove("active")); btn.classList.add("active"); - showRecipes(filtered); + if (filtered.length === 0) { + showMessage(`No ${selectedCuisine} recipes found.`); + } else { + showRecipes(filtered); + } }); }); -// filterBtns.forEach(btn => { -// btn.addEventListener("click", () => { -// const selectedCuisine = btn.id.toLowerCase(); - -// const filtered = -// selectedCuisine === "all" -// ? recipesData -// : recipesData.filter(r => r.cuisine.toLowerCase() === selectedCuisine); - -// filterBtns.forEach(b => b.classList.remove("active")); -// btn.classList.add("active"); - -// if (filtered.length === 0) { -// showMessage(`No ${selectedCuisine} recipes found.`); -// } else { -// showRecipes(filtered); -// // } -// // }); -// // }); - - // SORT BUTTONS @@ -146,15 +144,11 @@ sortBtns.forEach(btn => { // RANDOMBUTTON - - randomBtn.addEventListener('click', () => { //RANDOMNUMBER const randomIndex = Math.floor(Math.random() * recipesData.length); - //GETRECIPE const randomRecipe = recipesData[randomIndex]; - //SHOW THAT RECIPE showRecipes([randomRecipe]); }); diff --git a/style.css b/style.css index 4e937df38..21cd254a6 100644 --- a/style.css +++ b/style.css @@ -11,10 +11,11 @@ --space-1: 1rem; } +html, body { background-color: #FAFBFF; - overflow-x: hidden; font-family: "Futura", "Trebuchet MS", Arial, sans-serif; + overflow-x: hidden; } @@ -45,7 +46,7 @@ h2 { .filter-sort-container { - display: inline-flex; + display: flex; flex-direction: column; gap: 88px; width: 100%; @@ -66,6 +67,7 @@ h2 { flex-direction: column; align-items: flex-start; gap: 16px; + } @@ -74,6 +76,7 @@ h2 { display: flex; flex-direction: column; gap: 12px; + align-items: center; } @@ -90,6 +93,7 @@ h2 { border-radius: 50px; border: 2px solid transparent; transition: border-color 0.2s ease; + width: fit-content; } .filter-btn:hover { @@ -113,6 +117,7 @@ h2 { border-radius: 50px; border: 2px solid transparent; transition: border-color 0.2s ease; + width: fit-content; } .sort-btn:hover { @@ -184,6 +189,8 @@ h2 { } + + /* MEDIA QUERIES FOR DESKTOP */ @media (min-width: 768px) { @@ -204,9 +211,9 @@ h2 { gap: 88px; } -..recipe-card { - width: 300pxgit; -} + .recipe-card { + width: 300px; + } .button-section { display: flex; @@ -214,6 +221,7 @@ h2 { flex-wrap: wrap; gap: 12px; justify-content: flex-start; + } .button-section button { @@ -231,9 +239,9 @@ h2 { margin-bottom: 100px; } -.recipe-card-wrapper { - display: flex; - justify-content: start; -} + .recipe-card-wrapper { + display: flex; + justify-content: start; + } } \ No newline at end of file From ee345ece09becf3c81c8a51b40bf48d5f278551f Mon Sep 17 00:00:00 2001 From: "Leon.Ekelund" Date: Sun, 12 Oct 2025 22:07:05 +0200 Subject: [PATCH 08/10] Fix the not active all button when loading the page --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index d8c49737d..233972356 100644 --- a/index.html +++ b/index.html @@ -22,7 +22,7 @@

Recipe Library

Filter on kitchen

- + From 793b29c8e9b64e6d4d0b60379d871e88f683fc39 Mon Sep 17 00:00:00 2001 From: "Leon.Ekelund" Date: Sun, 12 Oct 2025 22:10:07 +0200 Subject: [PATCH 09/10] Remove the backupdata.js file --- backupData.js | 2117 ------------------------------------------------- 1 file changed, 2117 deletions(-) delete mode 100644 backupData.js diff --git a/backupData.js b/backupData.js deleted file mode 100644 index 6080dc603..000000000 --- a/backupData.js +++ /dev/null @@ -1,2117 +0,0 @@ -{ - recipes: [ - {}, - {}, - { - id: 661048, - image: "https://img.spoonacular.com/recipes/661048-556x370.", - imageType: "", - title: "Spicy Chicken Corn Dogs with Homemade Chili Sauce", - readyInMinutes: 45, - servings: 8, - sourceUrl: "https://www.foodista.com/recipe/VVLHPBNS/spicy-chicken-corn-dogs-with-homemade-chili-sauce", - vegetarian: false, - vegan: false, - glutenFree: true, - dairyFree: true, - veryHealthy: false, - cheap: false, - veryPopular: false, - sustainable: false, - lowFodmap: false, - weightWatcherSmartPoints: 16, - gaps: "no", - preparationMinutes: null, - cookingMinutes: null, - aggregateLikes: 10, - healthScore: 6, - creditsText: "foodista.com", - license: null, - sourceName: "foodista.com", - pricePerServing: 161.29, - extendedIngredients: [ - { - id: 10211962, - aisle: "Ethnic Foods", - image: "dried-arbol-chiles.jpg", - consistency: "SOLID", - name: "ancho chili pepper", - nameClean: "ancho chili pepper", - original: "1 ancho chili pepper", - originalName: "ancho chili pepper", - amount: 1, - unit: "", - meta: [], - measures: { - us: { - amount: 1, - unitShort: "", - unitLong: "" - }, - metric: { - amount: 1, - unitShort: "", - unitLong: "" - } - } - }, - { - id: 9291, - aisle: "Dried Fruits", - image: "prunes.jpg", - consistency: "SOLID", - name: "prunes", - nameClean: "prunes", - original: "2 large pitted prunes", - originalName: "pitted prunes", - amount: 2, - unit: "large", - meta: [ - "pitted" - ], - measures: { - us: { - amount: 2, - unitShort: "large", - unitLong: "larges" - }, - metric: { - amount: 2, - unitShort: "large", - unitLong: "larges" - } - } - }, - { - id: 10093741, - aisle: "Canned and Jarred", - image: "beef-broth.png", - consistency: "LIQUID", - name: "beef broth", - nameClean: "beef broth", - original: "1 cup low-sodium chicken or beef broth", - originalName: "low-sodium chicken or beef broth", - amount: 1, - unit: "cup", - meta: [ - "low-sodium" - ], - measures: { - us: { - amount: 1, - unitShort: "cup", - unitLong: "cup" - }, - metric: { - amount: 240, - unitShort: "ml", - unitLong: "milliliters" - } - } - }, - { - id: 98849, - aisle: "Canned and Jarred", - image: "tomatoes-canned.png", - consistency: "SOLID", - name: "fire-roasted tomatoes", - nameClean: "fire-roasted tomatoes", - original: "1 cup fire-roasted tomatoes", - originalName: "fire-roasted tomatoes", - amount: 1, - unit: "cup", - meta: [], - measures: { - us: { - amount: 1, - unitShort: "cup", - unitLong: "cup" - }, - metric: { - amount: 260, - unitShort: "g", - unitLong: "grams" - } - } - }, - { - id: 11887, - aisle: "Pasta and Rice", - image: "tomato-paste.jpg", - consistency: "SOLID", - name: "tomato paste", - nameClean: "tomato paste", - original: "¼ cup tomato paste", - originalName: "tomato paste", - amount: 0.25, - unit: "cup", - meta: [], - measures: { - us: { - amount: 0.25, - unitShort: "cups", - unitLong: "cups" - }, - metric: { - amount: 65.5, - unitShort: "ml", - unitLong: "milliliters" - } - } - }, - { - id: 11282, - aisle: "Produce", - image: "brown-onion.png", - consistency: "SOLID", - name: "onion", - nameClean: "onion", - original: "1 small onion, peeled cut into quarters", - originalName: "onion, peeled cut into quarters", - amount: 1, - unit: "small", - meta: [ - "peeled", - "cut into quarters" - ], - measures: { - us: { - amount: 1, - unitShort: "small", - unitLong: "small" - }, - metric: { - amount: 1, - unitShort: "small", - unitLong: "small" - } - } - }, - { - id: 19304, - aisle: "Baking", - image: "molasses.jpg", - consistency: "SOLID", - name: "molasses", - nameClean: "molasses", - original: "1 teaspoon molasses", - originalName: "molasses", - amount: 1, - unit: "teaspoon", - meta: [], - measures: { - us: { - amount: 1, - unitShort: "tsp", - unitLong: "teaspoon" - }, - metric: { - amount: 1, - unitShort: "tsp", - unitLong: "teaspoon" - } - } - }, - { - id: 11215, - aisle: "Produce", - image: "garlic.png", - consistency: "SOLID", - name: "garlic", - nameClean: "garlic", - original: "2 cloves garlic, peeled", - originalName: "garlic, peeled", - amount: 2, - unit: "cloves", - meta: [ - "peeled" - ], - measures: { - us: { - amount: 2, - unitShort: "cloves", - unitLong: "cloves" - }, - metric: { - amount: 2, - unitShort: "cloves", - unitLong: "cloves" - } - } - }, - { - id: 12016, - aisle: "Savory Snacks", - image: "pumpkin-seeds.jpg", - consistency: "SOLID", - name: "pumpkin seeds", - nameClean: "pumpkin seeds", - original: "¼ cup raw, unsalted pumpkin seeds", - originalName: "raw, unsalted pumpkin seeds", - amount: 0.25, - unit: "cup", - meta: [ - "raw", - "unsalted" - ], - measures: { - us: { - amount: 0.25, - unitShort: "cups", - unitLong: "cups" - }, - metric: { - amount: 29.5, - unitShort: "g", - unitLong: "grams" - } - } - }, - { - id: 1012014, - aisle: "Spices and Seasonings", - image: "ground-cumin.jpg", - consistency: "SOLID", - name: "ground cumin", - nameClean: "ground cumin", - original: "1 teaspoon ground cumin", - originalName: "ground cumin", - amount: 1, - unit: "teaspoon", - meta: [], - measures: { - us: { - amount: 1, - unitShort: "tsp", - unitLong: "teaspoon" - }, - metric: { - amount: 1, - unitShort: "tsp", - unitLong: "teaspoon" - } - } - }, - { - id: 2027, - aisle: "Spices and Seasonings", - image: "oregano.jpg", - consistency: "SOLID", - name: "oregano", - nameClean: "oregano", - original: "1 teaspoon fresh oregano", - originalName: "fresh oregano", - amount: 1, - unit: "teaspoon", - meta: [ - "fresh" - ], - measures: { - us: { - amount: 1, - unitShort: "tsp", - unitLong: "teaspoon" - }, - metric: { - amount: 1, - unitShort: "tsp", - unitLong: "teaspoon" - } - } - }, - { - id: 20317, - aisle: "Baking", - image: "corn-flour.jpg", - consistency: "SOLID", - name: "masa harina", - nameClean: "masa harina", - original: "½ cup masa harina, Masabrosa preferred (see Kitchen Tip #1)", - originalName: "masa harina, Masabrosa preferred (see Kitchen Tip #1)", - amount: 0.5, - unit: "cup", - meta: [ - "(see Kitchen Tip #1)" - ], - measures: { - us: { - amount: 0.5, - unitShort: "cups", - unitLong: "cups" - }, - metric: { - amount: 57, - unitShort: "g", - unitLong: "grams" - } - } - }, - { - id: 35137, - aisle: "Baking", - image: "cornmeal.png", - consistency: "SOLID", - name: "cornmeal", - nameClean: "cornmeal", - original: "¼ cup stone-ground cornmeal", - originalName: "stone-ground cornmeal", - amount: 0.25, - unit: "cup", - meta: [ - "stone-ground" - ], - measures: { - us: { - amount: 0.25, - unitShort: "cups", - unitLong: "cups" - }, - metric: { - amount: 39.75, - unitShort: "g", - unitLong: "grams" - } - } - }, - { - id: 20061, - aisle: "Health Foods", - image: "white-powder.jpg", - consistency: "SOLID", - name: "rice flour", - nameClean: "rice flour", - original: "1 cup rice flour, divided", - originalName: "rice flour, divided", - amount: 1, - unit: "cup", - meta: [ - "divided" - ], - measures: { - us: { - amount: 1, - unitShort: "cup", - unitLong: "cup" - }, - metric: { - amount: 160, - unitShort: "g", - unitLong: "grams" - } - } - }, - { - id: 18369, - aisle: "Baking", - image: "white-powder.jpg", - consistency: "SOLID", - name: "baking powder", - nameClean: "baking powder", - original: "1 teaspoon baking powder", - originalName: "baking powder", - amount: 1, - unit: "teaspoon", - meta: [], - measures: { - us: { - amount: 1, - unitShort: "tsp", - unitLong: "teaspoon" - }, - metric: { - amount: 1, - unitShort: "tsp", - unitLong: "teaspoon" - } - } - }, - { - id: 19334, - aisle: "Baking", - image: "light-brown-sugar.jpg", - consistency: "SOLID", - name: "brown sugar", - nameClean: "brown sugar", - original: "2 tablespoons brown sugar", - originalName: "brown sugar", - amount: 2, - unit: "tablespoons", - meta: [], - measures: { - us: { - amount: 2, - unitShort: "Tbsps", - unitLong: "Tbsps" - }, - metric: { - amount: 2, - unitShort: "Tbsps", - unitLong: "Tbsps" - } - } - }, - { - id: 1082047, - aisle: "Spices and Seasonings", - image: "salt.jpg", - consistency: "SOLID", - name: "kosher salt", - nameClean: "kosher salt", - original: "½ teaspoon kosher salt", - originalName: "kosher salt", - amount: 0.5, - unit: "teaspoon", - meta: [], - measures: { - us: { - amount: 0.5, - unitShort: "tsps", - unitLong: "teaspoons" - }, - metric: { - amount: 0.5, - unitShort: "tsps", - unitLong: "teaspoons" - } - } - }, - { - id: 1123, - aisle: "Milk, Eggs, Other Dairy", - image: "egg.png", - consistency: "SOLID", - name: "eggs", - nameClean: "eggs", - original: "2 large eggs", - originalName: "eggs", - amount: 2, - unit: "large", - meta: [], - measures: { - us: { - amount: 2, - unitShort: "large", - unitLong: "larges" - }, - metric: { - amount: 2, - unitShort: "large", - unitLong: "larges" - } - } - }, - { - id: 9160, - aisle: "Produce", - image: "lime-juice.png", - consistency: "LIQUID", - name: "juice of lime", - nameClean: "juice of lime", - original: "Juice of 1 lime", - originalName: "Juice of lime", - amount: 1, - unit: "", - meta: [], - measures: { - us: { - amount: 1, - unitShort: "", - unitLong: "" - }, - metric: { - amount: 1, - unitShort: "", - unitLong: "" - } - } - }, - { - id: 93761, - aisle: "Milk, Eggs, Other Dairy", - image: "rice-milk.png", - consistency: "LIQUID", - name: "rice milk", - nameClean: "rice milk", - original: "½ cup plus 2 tablespoons rice milk", - originalName: "rice milk", - amount: 0.5, - unit: "cup", - meta: [], - measures: { - us: { - amount: 0.5, - unitShort: "cups", - unitLong: "cups" - }, - metric: { - amount: 120, - unitShort: "ml", - unitLong: "milliliters" - } - } - }, - { - id: 1014582, - aisle: "Oil, Vinegar, Salad Dressing", - image: "vegetable-oil.jpg", - consistency: "LIQUID", - name: "canola oil", - nameClean: "canola oil", - original: "5 cups peanut or canola oil", - originalName: "peanut or canola oil", - amount: 5, - unit: "cups", - meta: [], - measures: { - us: { - amount: 5, - unitShort: "cups", - unitLong: "cups" - }, - metric: { - amount: 1.12, - unitShort: "l", - unitLong: "liters" - } - } - }, - { - id: 93668, - aisle: "Meat", - image: "chicken-or-turkey-sausage.jpg", - consistency: "SOLID", - name: "spicy chicken sausage links", - nameClean: "spicy chicken sausage links", - original: "4 spicy cooked chicken sausage links", - originalName: "spicy cooked chicken sausage links", - amount: 4, - unit: "", - meta: [ - "cooked" - ], - measures: { - us: { - amount: 4, - unitShort: "", - unitLong: "" - }, - metric: { - amount: 4, - unitShort: "", - unitLong: "" - } - } - } - ], - summary: "If you want to add more American recipes to your recipe box, Spicy Chicken Corn Dogs with Homemade Chili Sauce might be a recipe you should try. This gluten free and dairy free recipe serves 8 and costs $1.61 per serving. One portion of this dish contains approximately 13g of protein, 38g of fat, and a total of 555 calories. It works best as a hor d'oeuvre, and is done in about 45 minutes. The Super Bowl will be even more special with this recipe. 10 people have made this recipe and would make it again. If you have ground cumin, onion, oregano, and a few other ingredients on hand, you can make it. It is brought to you by Foodista. Overall, this recipe earns a good spoonacular score of 42%. Users who liked this recipe also liked Hot Dogs Three Ways – Pepper Jam/Chili Sauce, Bourbon Caramelized Onions and Spicy Tomato Relish, Grilled Corn with Spicy Chili Mayo, Coconut, and Fish Sauce, and Homemade Corn Dogs.", - cuisines: [ - "American" - ], - dishTypes: [ - "fingerfood", - "antipasti", - "lunch", - "main course", - "starter", - "snack", - "appetizer", - "main dish", - "antipasto", - "hor d'oeuvre", - "dinner" - ], - diets: [ - "gluten free", - "dairy free" - ], - occasions: [ - "super bowl" - ], - - : "To prepare the skewers: Soak 8 bamboo skewers in water for at least 30 minutes. Set aside. To make the sauce: Cut the top of the dried chili and shake out the seeds. Transfer them into a saucepan along with the prunes, broth, tomatoes, tomato paste, onion, molasses, garlic, pumpkin seeds, cumin, and oregano. Bring the mixture to a boil over high heat and cook for 2 minutes; then lower the heat to a simmer and cook for 20 minutes more. Using an immersion blender, puree the mixture until completely smooth. Return to the heat and simmer, uncovered, for another 15 to 20 minutes. (If you dont have an immersion blender, carefully ladle the sauce into a food processor, and process until smooth, working in batches; then return to the pot.) Set the sauce aside until ready to serve with the corndogs, or if you are making this ahead of time, once the sauce has cooled, transfer it to a container and refrigerate. To prepare the corn dogs: In a mixing bowl, combine the masa harina, cornmeal, cup of the rice flour, baking powder, brown sugar, and salt and mix to combine. Add the eggs, one at a time, mixing well to combine. Add the rice milk and lime juice and mix to combine. The mixture should resemble a thick pancake batter; if more milk is needed, add by the tablespoonful. Cover and refrigerate the mixture if you are not going to be frying right away. When you are ready to cook, heat the oil in a saucepan until it registers 350F on a deep-frying thermometer. While the oil is heating, place the remaining rice flour on a paper plate and set aside. Cut each chicken sausage in half crosswise, to make eight pieces. Roll each piece of sausage in the rice flour to lightly coat. Thread the moistened bamboo skewers through the sausage pieces, so that the tips of the skewers are not quite poking out the top. Holding it by its skewer, dip a floured sausage piece into the batter, until it is completely coated. Carefully lift the stick and hold it over the bowl for a few seconds, allowing any excess batter to drip off. Repeat with another skewer. Carefully place two corn dogs into the hot oil and cook until they are crusty on the outside, and dark golden brown, 3 to 4 minutes. Drain on paper towels and keep warm. Repeat with each skewered sausage, allowing the oil to return to 350F in between. Serve immediately with the chili.", - analyzedInstructions: [ - { - name: "To prepare the skewers", - steps: [ - { - number: 1, - step: "Soak 8 bamboo skewers in water for at least 30 minutes. Set aside.", - ingredients: [ - { - id: 14412, - name: "water", - localizedName: "water", - image: "water.png" - } - ], - equipment: [ - { - id: 3065, - name: "skewers", - localizedName: "skewers", - image: "https://spoonacular.com/cdn/equipment_100x100/wooden-skewers.jpg" - } - ], - length: { - number: 30, - unit: "minutes" - } - } - ] - }, - { - name: "To make the sauce", - steps: [ - { - number: 1, - step: "Cut the top of the dried chili and shake out the seeds.", - ingredients: [ - { - id: 10111962, - name: "dried chili pepper", - localizedName: "dried chili pepper", - image: "dried-arbol-chiles.jpg" - }, - { - id: 93818, - name: "seeds", - localizedName: "seeds", - image: "sunflower-seeds.jpg" - }, - { - id: 0, - name: "shake", - localizedName: "shake", - image: "" - } - ], - equipment: [] - }, - { - number: 2, - step: "Transfer them into a saucepan along with the prunes, broth, tomatoes, tomato paste, onion, molasses, garlic, pumpkin seeds, cumin, and oregano. Bring the mixture to a boil over high heat and cook for 2 minutes; then lower the heat to a simmer and cook for 20 minutes more.", - ingredients: [ - { - id: 12014, - name: "pumpkin seeds", - localizedName: "pumpkin seeds", - image: "pumpkin-seeds.jpg" - }, - { - id: 11887, - name: "tomato paste", - localizedName: "tomato paste", - image: "tomato-paste.jpg" - }, - { - id: 19304, - name: "molasses", - localizedName: "molasses", - image: "molasses.jpg" - }, - { - id: 11529, - name: "tomato", - localizedName: "tomato", - image: "tomato.png" - }, - { - id: 2027, - name: "oregano", - localizedName: "oregano", - image: "oregano.jpg" - }, - { - id: 11215, - name: "garlic", - localizedName: "garlic", - image: "garlic.png" - }, - { - id: 9291, - name: "prunes", - localizedName: "prunes", - image: "prunes.jpg" - }, - { - id: 1006615, - name: "broth", - localizedName: "broth", - image: "chicken-broth.png" - }, - { - id: 1002014, - name: "cumin", - localizedName: "cumin", - image: "ground-cumin.jpg" - }, - { - id: 11282, - name: "onion", - localizedName: "onion", - image: "brown-onion.png" - } - ], - equipment: [ - { - id: 404669, - name: "sauce pan", - localizedName: "sauce pan", - image: "https://spoonacular.com/cdn/equipment_100x100/sauce-pan.jpg" - } - ], - length: { - number: 22, - unit: "minutes" - } - }, - { - number: 3, - step: "Using an immersion blender, puree the mixture until completely smooth. Return to the heat and simmer, uncovered, for another 15 to 20 minutes. (If you dont have an immersion blender, carefully ladle the sauce into a food processor, and process until smooth, working in batches; then return to the pot.) Set the sauce aside until ready to serve with the corndogs, or if you are making this ahead of time, once the sauce has cooled, transfer it to a container and refrigerate.", - ingredients: [ - { - id: 0, - name: "sauce", - localizedName: "sauce", - image: "" - } - ], - equipment: [ - { - id: 404776, - name: "immersion blender", - localizedName: "immersion blender", - image: "https://spoonacular.com/cdn/equipment_100x100/immersion-blender.png" - }, - { - id: 404771, - name: "food processor", - localizedName: "food processor", - image: "https://spoonacular.com/cdn/equipment_100x100/food-processor.png" - }, - { - id: 404630, - name: "ladle", - localizedName: "ladle", - image: "https://spoonacular.com/cdn/equipment_100x100/ladle.jpg" - }, - { - id: 404752, - name: "pot", - localizedName: "pot", - image: "https://spoonacular.com/cdn/equipment_100x100/stock-pot.jpg" - } - ], - length: { - number: 15, - unit: "minutes" - } - } - ] - }, - { - name: "To prepare the corn dogs", - steps: [ - { - number: 1, - step: "In a mixing bowl, combine the masa harina, cornmeal, cup of the rice flour, baking powder, brown sugar, and salt and mix to combine.", - ingredients: [ - { - id: 18369, - name: "baking powder", - localizedName: "baking powder", - image: "white-powder.jpg" - }, - { - id: 19334, - name: "brown sugar", - localizedName: "brown sugar", - image: "dark-brown-sugar.png" - }, - { - id: 20317, - name: "masa harina", - localizedName: "masa harina", - image: "corn-flour.jpg" - }, - { - id: 20061, - name: "rice flour", - localizedName: "rice flour", - image: "white-powder.jpg" - }, - { - id: 35137, - name: "cornmeal", - localizedName: "cornmeal", - image: "cornmeal.png" - }, - { - id: 2047, - name: "salt", - localizedName: "salt", - image: "salt.jpg" - } - ], - equipment: [ - { - id: 405907, - name: "mixing bowl", - localizedName: "mixing bowl", - image: "https://spoonacular.com/cdn/equipment_100x100/mixing-bowl.jpg" - } - ] - }, - { - number: 2, - step: "Add the eggs, one at a time, mixing well to combine.", - ingredients: [ - { - id: 1123, - name: "egg", - localizedName: "egg", - image: "egg.png" - } - ], - equipment: [] - }, - { - number: 3, - step: "Add the rice milk and lime juice and mix to combine. The mixture should resemble a thick pancake batter; if more milk is needed, add by the tablespoonful. Cover and refrigerate the mixture if you are not going to be frying right away.", - ingredients: [ - { - id: 9160, - name: "lime juice", - localizedName: "lime juice", - image: "lime-juice.png" - }, - { - id: 93761, - name: "rice milk", - localizedName: "rice milk", - image: "rice-milk.png" - }, - { - id: 1077, - name: "milk", - localizedName: "milk", - image: "milk.png" - } - ], - equipment: [] - }, - { - number: 4, - step: "When you are ready to cook, heat the oil in a saucepan until it registers 350F on a deep-frying thermometer. While the oil is heating, place the remaining rice flour on a paper plate and set aside.", - ingredients: [ - { - id: 20061, - name: "rice flour", - localizedName: "rice flour", - image: "white-powder.jpg" - }, - { - id: 4582, - name: "cooking oil", - localizedName: "cooking oil", - image: "vegetable-oil.jpg" - } - ], - equipment: [ - { - id: 404789, - name: "kitchen thermometer", - localizedName: "kitchen thermometer", - image: "https://spoonacular.com/cdn/equipment_100x100/food-thermometer.jpg" - }, - { - id: 404669, - name: "sauce pan", - localizedName: "sauce pan", - image: "https://spoonacular.com/cdn/equipment_100x100/sauce-pan.jpg" - } - ] - }, - { - number: 5, - step: "Cut each chicken sausage in half crosswise, to make eight pieces.", - ingredients: [ - { - id: 93668, - name: "chicken sausage", - localizedName: "chicken sausage", - image: "chicken-or-turkey-sausage.jpg" - } - ], - equipment: [] - }, - { - number: 6, - step: "Roll each piece of sausage in the rice flour to lightly coat. Thread the moistened bamboo skewers through the sausage pieces, so that the tips of the skewers are not quite poking out the top. Holding it by its skewer, dip a floured sausage piece into the batter, until it is completely coated. Carefully lift the stick and hold it over the bowl for a few seconds, allowing any excess batter to drip off. Repeat with another skewer. Carefully place two corn dogs into the hot oil and cook until they are crusty on the outside, and dark golden brown, 3 to 4 minutes.", - ingredients: [ - { - id: 20061, - name: "rice flour", - localizedName: "rice flour", - image: "white-powder.jpg" - }, - { - id: 1017063, - name: "sausage", - localizedName: "sausage", - image: "raw-pork-sausage.png" - }, - { - id: 11168, - name: "corn", - localizedName: "corn", - image: "corn.png" - }, - { - id: 21118, - name: "hot dogs", - localizedName: "hot dogs", - image: "hotdogs.png" - }, - { - id: 0, - name: "roll", - localizedName: "roll", - image: "dinner-yeast-rolls.jpg" - }, - { - id: 0, - name: "dip", - localizedName: "dip", - image: "" - }, - { - id: 4582, - name: "cooking oil", - localizedName: "cooking oil", - image: "vegetable-oil.jpg" - } - ], - equipment: [ - { - id: 3065, - name: "skewers", - localizedName: "skewers", - image: "https://spoonacular.com/cdn/equipment_100x100/wooden-skewers.jpg" - }, - { - id: 404783, - name: "bowl", - localizedName: "bowl", - image: "https://spoonacular.com/cdn/equipment_100x100/bowl.jpg" - } - ], - length: { - number: 3, - unit: "minutes" - } - }, - { - number: 7, - step: "Drain on paper towels and keep warm. Repeat with each skewered sausage, allowing the oil to return to 350F in between.", - ingredients: [ - { - id: 1017063, - name: "sausage", - localizedName: "sausage", - image: "raw-pork-sausage.png" - }, - { - id: 4582, - name: "cooking oil", - localizedName: "cooking oil", - image: "vegetable-oil.jpg" - } - ], - equipment: [ - { - id: 405895, - name: "paper towels", - localizedName: "paper towels", - image: "https://spoonacular.com/cdn/equipment_100x100/paper-towels.jpg" - } - ] - }, - { - number: 8, - step: "Serve immediately with the chili.", - ingredients: [ - { - id: 11819, - name: "chili pepper", - localizedName: "chili pepper", - image: "red-chili.jpg" - } - ], - equipment: [] - } - ] - } - ], - originalId: null, - spoonacularScore: 50.55707550048828, - spoonacularSourceUrl: "https://spoonacular.com/spicy-chicken-corn-dogs-with-homemade-chili-sauce-661048" - }, - { - id: 654432, - image: "https://img.spoonacular.com/recipes/654432-556x370.jpg", - imageType: "jpg", - title: "Pan Seared Lamb Loin With Chimichurri & Roasted Trio Squash Salad With Goat Cheese and Pinenuts", - readyInMinutes: 45, - servings: 4, - sourceUrl: "https://www.foodista.com/recipe/46RBKQJ7/pan-seared-lamb-loin-with-chimmichurri-roasted-trio-squash-salad-with-goat-cheese-and-pinenuts", - vegetarian: false, - vegan: false, - glutenFree: true, - dairyFree: true, - veryHealthy: false, - cheap: false, - veryPopular: false, - sustainable: false, - lowFodmap: false, - weightWatcherSmartPoints: 16, - gaps: "no", - preparationMinutes: null, - cookingMinutes: null, - aggregateLikes: 56, - healthScore: 25, - creditsText: "foodista.com", - license: null, - sourceName: "foodista.com", - pricePerServing: 382.58, - extendedIngredients: [ - { - id: 11165, - aisle: "Produce", - image: "cilantro.png", - consistency: "SOLID", - name: "cilantro", - nameClean: "cilantro", - original: "1/4 cup cilantro, finely chopped", - originalName: "cilantro, finely chopped", - amount: 0.25, - unit: "cup", - meta: [ - "finely chopped" - ], - measures: { - us: { - amount: 0.25, - unitShort: "cups", - unitLong: "cups" - }, - metric: { - amount: 4, - unitShort: "g", - unitLong: "grams" - } - } - }, - { - id: 1034053, - aisle: "Oil, Vinegar, Salad Dressing", - image: "olive-oil.jpg", - consistency: "LIQUID", - name: "extra virgin olive oil", - nameClean: "extra virgin olive oil", - original: "2 tablespoons extra virgin olive oil", - originalName: "extra virgin olive oil", - amount: 2, - unit: "tablespoons", - meta: [], - measures: { - us: { - amount: 2, - unitShort: "Tbsps", - unitLong: "Tbsps" - }, - metric: { - amount: 2, - unitShort: "Tbsps", - unitLong: "Tbsps" - } - } - }, - { - id: 10311297, - aisle: "Produce", - image: "parsley.jpg", - consistency: "SOLID", - name: "flat leaf parsley", - nameClean: "flat leaf parsley", - original: "1/4 cup flat leaf parsley, finely chopped", - originalName: "flat leaf parsley, finely chopped", - amount: 0.25, - unit: "cup", - meta: [ - "finely chopped" - ], - measures: { - us: { - amount: 0.25, - unitShort: "cups", - unitLong: "cups" - }, - metric: { - amount: 15, - unitShort: "g", - unitLong: "grams" - } - } - }, - { - id: 10211215, - aisle: "Produce", - image: "garlic.jpg", - consistency: "SOLID", - name: "garlic clove", - nameClean: "garlic clove", - original: "1 garlic clove, finely minced", - originalName: "garlic clove, finely minced", - amount: 1, - unit: "", - meta: [ - "finely minced" - ], - measures: { - us: { - amount: 1, - unitShort: "", - unitLong: "" - }, - metric: { - amount: 1, - unitShort: "", - unitLong: "" - } - } - }, - { - id: 1002030, - aisle: "Spices and Seasonings", - image: "pepper.jpg", - consistency: "SOLID", - name: "ground pepper", - nameClean: "ground pepper", - original: "ground black pepper to taste", - originalName: "ground black pepper to taste", - amount: 4, - unit: "servings", - meta: [ - "black", - "to taste" - ], - measures: { - us: { - amount: 4, - unitShort: "servings", - unitLong: "servings" - }, - metric: { - amount: 4, - unitShort: "servings", - unitLong: "servings" - } - } - }, - { - id: 1102047, - aisle: "Spices and Seasonings", - image: "salt-and-pepper.jpg", - consistency: "SOLID", - name: "kosher salt and pepper", - nameClean: "kosher salt and pepper", - original: "kosher salt and pepper to taste", - originalName: "kosher salt and pepper to taste", - amount: 4, - unit: "servings", - meta: [ - "to taste" - ], - measures: { - us: { - amount: 4, - unitShort: "servings", - unitLong: "servings" - }, - metric: { - amount: 4, - unitShort: "servings", - unitLong: "servings" - } - } - }, - { - id: 17023, - aisle: "Meat", - image: "lamb-chops.png", - consistency: "SOLID", - name: "lamb loin chops", - nameClean: "lamb loin chops", - original: "4 lamb loin chops", - originalName: "lamb loin chops", - amount: 4, - unit: "", - meta: [], - measures: { - us: { - amount: 4, - unitShort: "", - unitLong: "" - }, - metric: { - amount: 4, - unitShort: "", - unitLong: "" - } - } - }, - { - id: 9150, - aisle: "Produce", - image: "lemon.png", - consistency: "SOLID", - name: "lemon", - nameClean: "lemon", - original: "1 lemon, freshly squeezed", - originalName: "lemon, freshly squeezed", - amount: 1, - unit: "", - meta: [ - "freshly squeezed" - ], - measures: { - us: { - amount: 1, - unitShort: "", - unitLong: "" - }, - metric: { - amount: 1, - unitShort: "", - unitLong: "" - } - } - }, - { - id: 2064, - aisle: "Produce", - image: "mint.jpg", - consistency: "SOLID", - name: "mint", - nameClean: "mint", - original: "1/4 cup mint, finely chopped", - originalName: "mint, finely chopped", - amount: 0.25, - unit: "cup", - meta: [ - "finely chopped" - ], - measures: { - us: { - amount: 0.25, - unitShort: "cups", - unitLong: "cups" - }, - metric: { - amount: 11.25, - unitShort: "g", - unitLong: "grams" - } - } - }, - { - id: 12147, - aisle: "Produce", - image: "pine-nuts.png", - consistency: "SOLID", - name: "pinenuts", - nameClean: "pinenuts", - original: "1/4 cup pinenuts, toasted, finely chopped", - originalName: "pinenuts, toasted, finely chopped", - amount: 0.25, - unit: "cup", - meta: [ - "toasted", - "finely chopped" - ], - measures: { - us: { - amount: 0.25, - unitShort: "cups", - unitLong: "cups" - }, - metric: { - amount: 33.75, - unitShort: "g", - unitLong: "grams" - } - } - }, - { - id: 1032009, - aisle: "Spices and Seasonings", - image: "red-pepper-flakes.jpg", - consistency: "SOLID", - name: "pepper flakes", - nameClean: "pepper flakes", - original: "1 tablespoon red pepper flakes, chopped", - originalName: "red pepper flakes, chopped", - amount: 1, - unit: "tablespoon", - meta: [ - "red", - "chopped" - ], - measures: { - us: { - amount: 1, - unitShort: "Tbsp", - unitLong: "Tbsp" - }, - metric: { - amount: 1, - unitShort: "Tbsp", - unitLong: "Tbsp" - } - } - }, - { - id: 11677, - aisle: "Produce", - image: "shallots.jpg", - consistency: "SOLID", - name: "shallot", - nameClean: "shallot", - original: "1 shallot, finely minced", - originalName: "shallot, finely minced", - amount: 1, - unit: "", - meta: [ - "finely minced" - ], - measures: { - us: { - amount: 1, - unitShort: "", - unitLong: "" - }, - metric: { - amount: 1, - unitShort: "", - unitLong: "" - } - } - } - ], - summary: "Pan Seared Lamb Loin With Chimichurri & Roasted Trio Squash Salad With Goat Cheese and Pinenuts is a gluten free, dairy free, paleolithic, and primal recipe with 4 servings. This main course has 492 calories, 21g of protein, and 43g of fat per serving. For $3.83 per serving, this recipe covers 21% of your daily requirements of vitamins and minerals. From preparation to the plate, this recipe takes about 45 minutes. 56 people have made this recipe and would make it again. It is a rather pricey recipe for fans of Latin American food. Head to the store and pick up cilantro, shallot, flat leaf parsley, and a few other things to make it today. It is brought to you by Foodista. Overall, this recipe earns a tremendous spoonacular score of 85%. If you like this recipe, take a look at these similar recipes: Pan-seared Loin Of Lamb, Pan-Roasted Lamb Chops with Honey-Balsamic Figs and Goat Cheese, and Pan Seared Steaks with Balsamic Red Onions and Roasted Garlic and Porcini Mushroom Goat Cheese Butter.", - cuisines: [ - "South American", - "Latin American" - ], - dishTypes: [ - "lunch", - "main course", - "main dish", - "dinner" - ], - diets: [ - "gluten free", - "dairy free", - "paleolithic", - "primal", - "whole 30", - "ketogenic" - ], - occasions: [], - instructions: "
  1. Preheat oven to 400F.
  2. For the Chimichurri, place all of the ingredients in a large bowl and incorporate together. Season with salt and pepper.
  3. Heat a large, heavy bottomed pan with the oil. Sprinkle each side of the lamb loin evenly with salt and pepper. (This cooking process is exactly like the way you make steak). Once the oil is hot (it will smoke a little bit), sear the lamb loin, about 2 minutes per side and allow the lamb to cook the rest of the way in the oven. The cooking times are as follows:
  4. If you like your lamb rare, place it in the oven for no more than 2-3 minutes. If you like your lamb medium rare place it in the oven for about 6-8 minutes. If you like your lamb medium place it in the oven for 9 to 11 minutes. If you like it well done leave it in there for 12-14 minutes. Remember, the lamb will continue to cook after you take it out so plan accordingly.
", - analyzedInstructions: [ - { - name: "", - steps: [ - { - number: 1, - step: "Preheat oven to 400F.For the Chimichurri, place all of the ingredients in a large bowl and incorporate together. Season with salt and pepper.", - ingredients: [ - { - id: 1102047, - name: "salt and pepper", - localizedName: "salt and pepper", - image: "salt-and-pepper.jpg" - }, - { - id: 0, - name: "chimichurri", - localizedName: "chimichurri", - image: "" - } - ], - equipment: [ - { - id: 404783, - name: "bowl", - localizedName: "bowl", - image: "https://spoonacular.com/cdn/equipment_100x100/bowl.jpg" - }, - { - id: 404784, - name: "oven", - localizedName: "oven", - image: "https://spoonacular.com/cdn/equipment_100x100/oven.jpg", - temperature: { - number: 400, - unit: "Fahrenheit" - } - } - ] - }, - { - number: 2, - step: "Heat a large, heavy bottomed pan with the oil.", - ingredients: [ - { - id: 4582, - name: "cooking oil", - localizedName: "cooking oil", - image: "vegetable-oil.jpg" - } - ], - equipment: [ - { - id: 404645, - name: "frying pan", - localizedName: "frying pan", - image: "https://spoonacular.com/cdn/equipment_100x100/pan.png" - } - ] - }, - { - number: 3, - step: "Sprinkle each side of the lamb loin evenly with salt and pepper. (This cooking process is exactly like the way you make steak). Once the oil is hot (it will smoke a little bit), sear the lamb loin, about 2 minutes per side and allow the lamb to cook the rest of the way in the oven. The cooking times are as follows:If you like your lamb rare, place it in the oven for no more than 2-3 minutes. If you like your lamb medium rare place it in the oven for about 6-8 minutes. If you like your lamb medium place it in the oven for 9 to 11 minutes. If you like it well done leave it in there for 12-14 minutes. Remember, the lamb will continue to cook after you take it out so plan accordingly.", - ingredients: [ - { - id: 1102047, - name: "salt and pepper", - localizedName: "salt and pepper", - image: "salt-and-pepper.jpg" - }, - { - id: 10017026, - name: "lamb loin", - localizedName: "lamb loin", - image: "lamb-chops.png" - }, - { - id: 23232, - name: "steak", - localizedName: "steak", - image: "ribeye-raw.jpg" - }, - { - id: 10017224, - name: "lamb", - localizedName: "lamb", - image: "lamb-shanks.jpg" - }, - { - id: 4582, - name: "cooking oil", - localizedName: "cooking oil", - image: "vegetable-oil.jpg" - } - ], - equipment: [ - { - id: 404784, - name: "oven", - localizedName: "oven", - image: "https://spoonacular.com/cdn/equipment_100x100/oven.jpg" - } - ], - length: { - number: 36, - unit: "minutes" - } - } - ] - } - ], - originalId: null, - spoonacularScore: 87.03909301757812, - spoonacularSourceUrl: "https://spoonacular.com/pan-seared-lamb-loin-with-chimichurri-roasted-trio-squash-salad-with-goat-cheese-and-pinenuts-654432" - }, - { - id: 647563, - image: "https://img.spoonacular.com/recipes/647563-556x370.jpg", - imageType: "jpg", - title: "How Sweet It Is Sweet Potato Lasagne", - readyInMinutes: 45, - servings: 6, - sourceUrl: "https://www.foodista.com/recipe/LYPLYH8P/how-sweet-it-is-sweet-potato-lasagne", - vegetarian: true, - vegan: false, - glutenFree: true, - dairyFree: false, - veryHealthy: false, - cheap: false, - veryPopular: false, - sustainable: false, - lowFodmap: false, - weightWatcherSmartPoints: 12, - gaps: "no", - preparationMinutes: null, - cookingMinutes: null, - aggregateLikes: 2, - healthScore: 52, - creditsText: "foodista.com", - license: null, - sourceName: "foodista.com", - pricePerServing: 439.95, - extendedIngredients: [ - { - id: 11265, - aisle: "Produce", - image: "portabello-mushrooms.jpg", - consistency: "SOLID", - name: "baby portabella mushrooms", - nameClean: "baby portabella mushrooms", - original: "12 Baby Portabella Mushrooms, sliced", - originalName: "Baby Portabella Mushrooms, sliced", - amount: 12, - unit: "", - meta: [ - "sliced" - ], - measures: { - us: { - amount: 12, - unitShort: "", - unitLong: "" - }, - metric: { - amount: 12, - unitShort: "", - unitLong: "" - } - } - }, - { - id: 2015, - aisle: "Spices and Seasonings", - image: "curry-powder.jpg", - consistency: "SOLID", - name: "curry powder", - nameClean: "curry powder", - original: "3 tablespoons Dry Curry Powder", - originalName: "Dry Curry Powder", - amount: 3, - unit: "tablespoons", - meta: [ - "dry" - ], - measures: { - us: { - amount: 3, - unitShort: "Tbsps", - unitLong: "Tbsps" - }, - metric: { - amount: 3, - unitShort: "Tbsps", - unitLong: "Tbsps" - } - } - }, - { - id: 2003, - aisle: "Spices and Seasonings", - image: "basil.jpg", - consistency: "SOLID", - name: "basil leaves", - nameClean: "basil leaves", - original: "2 tablespoons Dried Basil Leaves", - originalName: "Dried Basil Leaves", - amount: 2, - unit: "tablespoons", - meta: [ - "dried" - ], - measures: { - us: { - amount: 2, - unitShort: "Tbsps", - unitLong: "Tbsps" - }, - metric: { - amount: 2, - unitShort: "Tbsps", - unitLong: "Tbsps" - } - } - }, - { - id: 11209, - aisle: "Produce", - image: "eggplant.png", - consistency: "SOLID", - name: "eggplants", - nameClean: "eggplants", - original: "1 Eggplants", - originalName: "Eggplants", - amount: 1, - unit: "", - meta: [], - measures: { - us: { - amount: 1, - unitShort: "", - unitLong: "" - }, - metric: { - amount: 1, - unitShort: "", - unitLong: "" - } - } - }, - { - id: 11463, - aisle: "Frozen", - image: "spinach-frozen.jpg", - consistency: "SOLID", - name: "spinach", - nameClean: "spinach", - original: "10 ounces Frozen chopped Spinach, with excess water squeezed out", - originalName: "Frozen chopped Spinach, with excess water squeezed out", - amount: 10, - unit: "ounces", - meta: [ - "frozen", - "with excess water squeezed out", - "chopped" - ], - measures: { - us: { - amount: 10, - unitShort: "oz", - unitLong: "ounces" - }, - metric: { - amount: 283.495, - unitShort: "g", - unitLong: "grams" - } - } - }, - { - id: 1049, - aisle: "Milk, Eggs, Other Dairy", - image: "fluid-cream.jpg", - consistency: "SOLID", - name: "heavy cream", - nameClean: "heavy cream", - original: "1/2 cup Half & Half or Heavy Cream", - originalName: "Half & Half or Heavy Cream", - amount: 0.5, - unit: "cup", - meta: [], - measures: { - us: { - amount: 0.5, - unitShort: "cups", - unitLong: "cups" - }, - metric: { - amount: 121, - unitShort: "ml", - unitLong: "milliliters" - } - } - }, - { - id: 1001025, - aisle: "Cheese", - image: "shredded-cheese-white.jpg", - consistency: "SOLID", - name: "montery jack & cheddar cheese mix", - nameClean: "montery jack & cheddar cheese mix", - original: "12 ounces Montery Jack & Cheddar Cheese Mix", - originalName: "Montery Jack & Cheddar Cheese Mix", - amount: 12, - unit: "ounces", - meta: [], - measures: { - us: { - amount: 12, - unitShort: "oz", - unitLong: "ounces" - }, - metric: { - amount: 340.194, - unitShort: "g", - unitLong: "grams" - } - } - }, - { - id: 11979, - aisle: "Ethnic Foods", - image: "jalapeno-pepper.png", - consistency: "SOLID", - name: "jalapenos", - nameClean: "jalapenos", - original: "2 Jalapenos, finely chopped", - originalName: "Jalapenos, finely chopped", - amount: 2, - unit: "", - meta: [ - "finely chopped" - ], - measures: { - us: { - amount: 2, - unitShort: "", - unitLong: "" - }, - metric: { - amount: 2, - unitShort: "", - unitLong: "" - } - } - }, - { - id: 10111549, - aisle: "Pasta and Rice", - image: "tomato-sauce-or-pasta-sauce.jpg", - consistency: "SOLID", - name: "marinara sauce", - nameClean: "marinara sauce", - original: "3 cups Marinara Sauce (home made or a jar of 24 oz store bought)", - originalName: "Marinara Sauce (home made or a jar of 24 oz store bought)", - amount: 3, - unit: "cups", - meta: [ - "store bought", - "(home made or a jar of 24 oz )" - ], - measures: { - us: { - amount: 3, - unitShort: "cups", - unitLong: "cups" - }, - metric: { - amount: 735, - unitShort: "ml", - unitLong: "milliliters" - } - } - }, - { - id: 1102047, - aisle: "Spices and Seasonings", - image: "salt-and-pepper.jpg", - consistency: "SOLID", - name: "salt & pepper", - nameClean: "salt & pepper", - original: "Salt & Pepper, to taste", - originalName: "Salt & Pepper, to taste", - amount: 6, - unit: "servings", - meta: [ - "to taste" - ], - measures: { - us: { - amount: 6, - unitShort: "servings", - unitLong: "servings" - }, - metric: { - amount: 6, - unitShort: "servings", - unitLong: "servings" - } - } - }, - { - id: 11507, - aisle: "Produce", - image: "sweet-potato.png", - consistency: "SOLID", - name: "sweet potatoes", - nameClean: "sweet potatoes", - original: "4 Sweet Potatoes", - originalName: "Sweet Potatoes", - amount: 4, - unit: "", - meta: [], - measures: { - us: { - amount: 4, - unitShort: "", - unitLong: "" - }, - metric: { - amount: 4, - unitShort: "", - unitLong: "" - } - } - }, - { - id: 4669, - aisle: "Oil, Vinegar, Salad Dressing", - image: "vegetable-oil.jpg", - consistency: "LIQUID", - name: "vegetable cooking oil", - nameClean: "vegetable cooking oil", - original: "1 tablespoon Canola or Vegetable Cooking Oil", - originalName: "Canola or Vegetable Cooking Oil", - amount: 1, - unit: "tablespoon", - meta: [], - measures: { - us: { - amount: 1, - unitShort: "Tbsp", - unitLong: "Tbsp" - }, - metric: { - amount: 1, - unitShort: "Tbsp", - unitLong: "Tbsp" - } - } - } - ], - summary: "How Sweet It Is Sweet Potato Lasagne is a main course that serves 6. For $4.4 per serving, this recipe covers 44% of your daily requirements of vitamins and minerals. One serving contains 501 calories, 25g of protein, and 24g of fat. This recipe from Foodista has 2 fans. This recipe is typical of Mediterranean cuisine. It is a good option if you're following a gluten free and lacto ovo vegetarian diet. If you have eggplants, jalapenos, basil leaves, and a few other ingredients on hand, you can make it. From preparation to the plate, this recipe takes about 45 minutes. Overall, this recipe earns an amazing spoonacular score of 84%. Similar recipes are How Sweet It Is Sweet Potato Lasagne, Twice Baked Sweet Potato Potato Skins with Pecan Streusel (akan Individual Sweet Potato Casserole), and Twice Baked Sweet Potato Potato Skins with Pecan Streusel (akan Individual Sweet Potato Casserole).", - cuisines: [ - "Mediterranean", - "Italian", - "European" - ], - dishTypes: [ - "lunch", - "main course", - "main dish", - "dinner" - ], - diets: [ - "gluten free", - "lacto ovo vegetarian" - ], - occasions: [], - instructions: "
  1. Slice the Sweet Potato into 1/4 inch thick slices. Boil until semi-cooked (about 10 min). Rub the slices with a dry curry powder & olive oil (1cup) mixture. Set aside and let marinate for at least 10 min.
  2. Slice Eggplants into 1/4 inch thick slices and rub all over with an olive oil (1 cup)/dried basil/salt & pepper mix. Set aside and let marinate for at least 15 min.
  3. Pour canola or vegetable cooking oil into a pan. Saute spinach and mushrooms for about 3-5 min, add in jalapenos and salt & pepper to taste.
  4. Turn the heat down and add in some heavy cream and about 1/2 of the mexican cheeses until mixture is creamy, but not watery.
  5. Start layering the lasagne in this order: Sweet Potatoes, Spinach/Mushroom Mix, Eggplants, Marinara Sauce, Sweet Potatoes, Spinach/Mushrom Mix, Eggplants, Then finally sprinkle the remaining Monterey Jack/Cheddar Cheese Blend on top.
  6. Bake at 350-375 for about 35-45 min, depending on how your oven works. You'll know it's ready when you can pass through a fork easily through all the layers.
  7. Devour with Passion
", - analyzedInstructions: [ - { - name: "", - steps: [ - { - number: 1, - step: "Slice the Sweet Potato into 1/4 inch thick slices. Boil until semi-cooked (about 10 min). Rub the slices with a dry curry powder & olive oil (1cup) mixture. Set aside and let marinate for at least 10 min.Slice Eggplants into 1/4 inch thick slices and rub all over with an olive oil (1 cup)/dried basil/salt & pepper mix. Set aside and let marinate for at least 15 min.", - ingredients: [ - { - id: 1102047, - name: "salt and pepper", - localizedName: "salt and pepper", - image: "salt-and-pepper.jpg" - }, - { - id: 2015, - name: "curry powder", - localizedName: "curry powder", - image: "curry-powder.jpg" - }, - { - id: 11507, - name: "sweet potato", - localizedName: "sweet potato", - image: "sweet-potato.png" - }, - { - id: 2003, - name: "dried basil", - localizedName: "dried basil", - image: "basil.jpg" - }, - { - id: 11209, - name: "eggplant", - localizedName: "eggplant", - image: "eggplant.png" - }, - { - id: 4053, - name: "olive oil", - localizedName: "olive oil", - image: "olive-oil.jpg" - }, - { - id: 1012034, - name: "dry seasoning rub", - localizedName: "dry seasoning rub", - image: "seasoning.png" - } - ], - equipment: [], - length: { - number: 35, - unit: "minutes" - } - }, - { - number: 2, - step: "Pour canola or vegetable cooking oil into a pan.", - ingredients: [ - { - id: 4669, - name: "vegetable oil", - localizedName: "vegetable oil", - image: "vegetable-oil.jpg" - } - ], - equipment: [ - { - id: 404645, - name: "frying pan", - localizedName: "frying pan", - image: "https://spoonacular.com/cdn/equipment_100x100/pan.png" - } - ] - }, - { - number: 3, - step: "Saute spinach and mushrooms for about 3-5 min, add in jalapenos and salt & pepper to taste.Turn the heat down and add in some heavy cream and about 1/2 of the mexican cheeses until mixture is creamy, but not watery.Start layering the lasagne in this order: Sweet Potatoes, Spinach/Mushroom", - ingredients: [ - { - id: 11507, - name: "sweet potato", - localizedName: "sweet potato", - image: "sweet-potato.png" - }, - { - id: 1102047, - name: "salt and pepper", - localizedName: "salt and pepper", - image: "salt-and-pepper.jpg" - }, - { - id: 1053, - name: "heavy cream", - localizedName: "heavy cream", - image: "fluid-cream.jpg" - }, - { - id: 11979, - name: "jalapeno pepper", - localizedName: "jalapeno pepper", - image: "jalapeno-pepper.png" - }, - { - id: 11260, - name: "mushrooms", - localizedName: "mushrooms", - image: "https://spoonacular.com/cdn/ingredients_100x100/mushrooms.png" - }, - { - id: 10011457, - name: "spinach", - localizedName: "spinach", - image: "spinach.jpg" - } - ], - equipment: [], - length: { - number: 5, - unit: "minutes" - } - }, - { - number: 4, - step: "Mix, Eggplants, Marinara Sauce, Sweet Potatoes, Spinach/Mushrom", - ingredients: [ - { - id: 10111549, - name: "marinara sauce", - localizedName: "marinara sauce", - image: "tomato-sauce-or-pasta-sauce.jpg" - }, - { - id: 11507, - name: "sweet potato", - localizedName: "sweet potato", - image: "sweet-potato.png" - }, - { - id: 11209, - name: "eggplant", - localizedName: "eggplant", - image: "eggplant.png" - }, - { - id: 10011457, - name: "spinach", - localizedName: "spinach", - image: "spinach.jpg" - } - ], - equipment: [] - }, - { - number: 5, - step: "Mix, Eggplants, Then finally sprinkle the remaining Monterey Jack/Cheddar Cheese Blend on top.", - ingredients: [ - { - id: 1009, - name: "cheddar cheese", - localizedName: "cheddar cheese", - image: "cheddar-cheese.png" - }, - { - id: 1001025, - name: "monterey jack cheese", - localizedName: "monterey jack cheese", - image: "shredded-cheese-white.jpg" - }, - { - id: 11209, - name: "eggplant", - localizedName: "eggplant", - image: "eggplant.png" - } - ], - equipment: [] - }, - { - number: 6, - step: "Bake at 350-375 for about 35-45 min, depending on how your oven works. You'll know it's ready when you can pass through a fork easily through all the layers.Devour with Passion", - ingredients: [], - equipment: [ - { - id: 404784, - name: "oven", - localizedName: "oven", - image: "https://spoonacular.com/cdn/equipment_100x100/oven.jpg" - } - ], - length: { - number: 45, - unit: "minutes" - } - } - ] - } - ], - originalId: null, - spoonacularScore: 86.44890594482422, - spoonacularSourceUrl: "https://spoonacular.com/how-sweet-it-is-sweet-potato-lasagne-647563" - } - ] -} \ No newline at end of file From df2892646187927f6f5f194dea8755d67c85d07d Mon Sep 17 00:00:00 2001 From: "Leon.Ekelund" Date: Sun, 16 Nov 2025 18:27:03 +0100 Subject: [PATCH 10/10] fix issues with responsiveness and cleanup of some CSS --- style.css | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/style.css b/style.css index 21cd254a6..3fc9d2347 100644 --- a/style.css +++ b/style.css @@ -53,25 +53,15 @@ h2 { } - - -.Filter-section { - display: flex; - flex-direction: column; - align-items: flex-start; - gap: 16px; -} - -.Sort-section { +.filter-section, +.fort-section { display: flex; flex-direction: column; align-items: flex-start; gap: 16px; - } - .button-section { display: flex; flex-direction: column; @@ -97,11 +87,11 @@ h2 { } .filter-btn:hover { - border: 2px solid #0018A4 + border: 2px solid var(--primary-blue); } .filter-btn.active { - background-color: #0018A4; + background-color: var(--primary-blue); color: white; } @@ -122,7 +112,7 @@ h2 { .sort-btn:hover { color: white; - border: 2px solid #0018A4; + border: 2px solid var(--primary-blue); background-color: var(--sort-hover-selected-color); } @@ -161,7 +151,6 @@ h2 { .random-recipe-btn { background-color: var(--primary-blue); color: white; - border: none; display: flex; padding: 8px 16px; justify-content: center; @@ -232,6 +221,7 @@ h2 { .recipes-container { display: flex; gap: 32px; + flex-wrap: wrap; }