Design Document
This app will give you a variety of different recipes to choose from depending on what you are feeling on eating through the week. This application will then break down the recipes to what ingredients you will need in order to cook them and make it into a shopping list for you to be able to be prepared when going to the grocery store. One last important functionality will be being able to schedule times in which you plan to eat these meals in the day, and you will receive a notification of when you should eat your meal.
As a user interested in planning meals, I want to be able to search for recipes based on any part of the recipe; name of ingredient or name of meal I want to end up with.
Ingredient and recipe search data are available and easily accessible
Recipes are listed in English Recipes are named consistently
1.1
Given a feed of recipe data is available
When I search for ‘pizza’
Then I should receive at least one result with these attributes:
Recipe: Pizza
Ingredients: Flour, pepperoni, cheese
Time to prepare: 45 minutes (varies by kind of pizza)
1.2
Given a feed of recipe data is available
When I search for ‘garlic’
Then I should receive at least one result with these attributes:
1.3
Given a feed of recipe data is available
When I search for ‘askjhsdkjfbsjkdlbfvouihhjklukljh’
Then I should receive zero results.
As a user that has pulled search results for recipes, I would like to save recipes to a meal slot during the week.
Ingredient and recipe search data are available and easily accessible All recipes can be slotted into a meal during the week (breakfast, lunch, or dinner)
Ingredients are quantified consistently (i.e., garlic measure in cloves, pepperoni measured in pieces)
2.1
Given a feed of recipe data is available and I have found a recipe I want to make
When I want to plan the recipe for a meal slot during the week
Then I should be able to put a recipe in a planner for ‘Breakfast’, ‘lunch’, or ‘dinner’ on specified day of week
Recipe: Varies by recipe
Ingredients: Varies by recipe
Time to prepare: Varies by recipe
Button: Add to planner, specify day of week and what meal it is for (breakfast lunch or dinner)
2.2
Given a feed of recipe data is available and I have found a recipe I want to make
When I want to plan the recipe for a meal slot on a day that has already passed
Then I should receive an error preventing me to plan a meal that day
As a user interested in planning meals, I want to be able to use my week of planned recipes and compile a shopping list
Ingredient and recipe search data are available and easily accessible Week of planned meals has data stored All recipes can be slotted into a meal during the week (breakfast, lunch, or dinner) and be compiled together into a grocery list
Ingredients are quantified consistently (i.e., garlic measure in cloves, pepperoni measured in pieces) All recipes have a ‘time to prepare’ associated with them Ingredients can be consolidated easily, so one ingredient is not listed twice in different amounts because the app could not combine them
3.1
Given a feed of recipe data is available, I have found a recipe I want to make, and it is put in a meal slot during the week.
When I want to know what ingredients to buy
Then I should be able to put a shopping list together based on ingredients listed in the saved recipe
Ingredients: Totals combined from all planned recipes for the week
MainScreen: The screen that comes up when the app is started. This will have a a list of the various recipes the user can select.
RecipeDetails: A screen that shows details of an recipe.
MealPlanDetails: A screen that shows the shopping list story of the user.
RetrofitInstance: Boostrap class required for Retrofit.
Recipe: Noun class that represents a recipe.
Ingredient: Noun class that represents an ingredient.
MealPlan: Noun class that represents a meal plan.
IRecipeDAO: Interface for Retrofit to find and parse Recipe JSON.
IIngredientDAO: Interface for MealPlan to persist Ingredient data.
IMealPlanDAO: Interface for MealPlan to persist MealPlan data.
Tuesday at 4:30 PM. Use this link teams meeting link:
Meeting Information Teams Meeting