feat: add recipes module with CRUD functionality and integrate with meals

- Implemented new recipes page with UI for managing recipes.
- Added REST API routes for recipes including create, read, update, and delete operations.
- Introduced database schema for recipes and recipe ingredients.
- Updated meals to link with recipes, allowing meals to reference specific recipes.
- Enhanced validation for recipe-related fields in meals.
- Added styles for the recipes page and components.
This commit is contained in:
Serhiy Bobrov
2026-04-21 13:43:42 +03:00
committed by Ulas Kalayci
parent 41467a84b6
commit 0b54fe255b
25 changed files with 1421 additions and 48 deletions
+31 -2
View File
@@ -42,7 +42,8 @@
"settings": "Inställningar",
"main": "Huvudnavigering",
"navigation": "Navigering",
"quickActions": "Snabba åtgärder"
"quickActions": "Snabba åtgärder",
"recipes": "Recipes"
},
"dashboard": {
"title": "Översikt",
@@ -242,7 +243,11 @@
"loadingIndicator": "Laddar…",
"recipeUrlLabel": "Receptlänk (valfri)",
"recipeUrlPlaceholder": "https://…",
"openRecipe": "Öppna recept"
"openRecipe": "Öppna recept",
"savedRecipeLabel": "Saved recipe",
"savedRecipePlaceholder": "Select recipe",
"saveAsRecipe": "Save as recipe",
"recipeScaleLabel": "Scale ingredients"
},
"calendar": {
"title": "Kalender",
@@ -604,5 +609,29 @@
"unitWeeks": "veckor",
"unitMonth": "månad",
"unitMonths": "månader"
},
"recipes": {
"title": "Recipes",
"addRecipe": "Add recipe",
"editRecipe": "Edit recipe",
"emptyTitle": "No recipes yet",
"emptyDescription": "Save your favorite recipes and reuse them in meal planning.",
"titleLabel": "Title *",
"titlePlaceholder": "e.g. Pasta Carbonara",
"notesLabel": "Notes",
"notesPlaceholder": "Optional...",
"urlLabel": "Recipe link",
"urlPlaceholder": "https://...",
"ingredientsLabel": "Ingredients",
"addToMeals": "Add to meal plan",
"openLink": "Open recipe link",
"deleteConfirm": "Delete recipe \"{{title}}\"?",
"created": "Recipe saved.",
"updated": "Recipe updated.",
"deleted": "Recipe deleted.",
"titleRequired": "Title is required",
"duplicate": "Duplicate",
"duplicated": "Recipe duplicated.",
"copySuffix": "copy"
}
}