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": "Paramètres",
"main": "Navigation principale",
"navigation": "Navigation",
"quickActions": "Actions rapides"
"quickActions": "Actions rapides",
"recipes": "Recipes"
},
"dashboard": {
"title": "Accueil",
@@ -242,7 +243,11 @@
"loadingIndicator": "Chargement…",
"recipeUrlLabel": "Lien recette (optionnel)",
"recipeUrlPlaceholder": "https://…",
"openRecipe": "Ouvrir la recette"
"openRecipe": "Ouvrir la recette",
"savedRecipeLabel": "Saved recipe",
"savedRecipePlaceholder": "Select recipe",
"saveAsRecipe": "Save as recipe",
"recipeScaleLabel": "Scale ingredients"
},
"calendar": {
"title": "Calendrier",
@@ -604,5 +609,29 @@
"unitWeeks": "semaines",
"unitMonth": "mois",
"unitMonths": "mois"
},
"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"
}
}