What's for Dinner
This project is a recipe manager:
Keeps all your goodies in your pocket.
This app is in development, feedback is encouraged.
Current releases:
- Rolled out 1.11.218 on 4172022
- Rolled out 1.9.179 on 1/1/2022
- Rolled out 1.8 on 10/26/2021
- Rolled out 1.7 on 10/13/2021
- Rolled out 1.6 on 1/20/2021
The following ideas are to be considered for future releases (in no order).
- Official testing of all functions (documented).
- Consider being able to share your account with others. (Settings for username, etc.)
- Ability to delete ingredients (if they are not used anywhere?) ...
- Create a new way of dealing with the recipe when we want to make the recipe. (Wizard?)
- Disallow editing of ingredients that are in recipes? Perhaps a warning?
- Have an interface that you can select ingredients and see what recipes you can make with the stuff that you have.
API
There is an API for accessing the master ingredients list and the latest version of the ingredients list.
- https://bimmerboycoding.ddns.net/api/index.php/ingredients/version returns [{"version":1}]
- https://bimmerboycoding.ddns.net/api/index.php/ingredients/list returns JSON formatted list of all the master ingredients and the version.
Initially the Android app will have an empty database. The first call will be to retrieve the master list of ingredients. Any subsequent check for updates will compare the
version of the ingredients list that the application has in its local database with the version that the server returns from the version call. If the server version is greater
then the version your application has, use the list call to get the latest and update your local version of the data. This methodology saves requesting all the ingredients and synchronizing your local database every time the application is started.
The recipes that your account has access to wll behave similarly, they will have a version attribute to compare for sync purposes.
Design Document
Initial Startup
- The app will present the introduction screens for a short tutorial on the app and once finished or skipped, the app is presented with the menu bar open.
- The menu bar should contain:
- App Icon.
- App Name and version.
- For support contact email. Clicking the email should launch your email client.
- Navigation control items.
- Recipes -> recipe list interface.
- Ingredients -> ingredient list interface.
- Shopping -> shopping list interface.
- Help Docs -> the help document.
Recipe List
- Displays all recipes in their categories.
- Categories are in the following order:
- Breakfast
- Lunch
- Beverages
- Appetizers
- Soups
- Salads
- Main Dishes (Beef)
- Main Dishes (Poultry)
- Main Dishes (Pork)
- Main Dishes (Seafood)
- Main Dishes (Vegetarian)
- Side Dishes (Vegetables)
- Side Dishes (Other)
- Desserts
- Canning or Freezing
- Breads
- Holidays
- Entertaining
- Spices
- Recipes are sorted alphabetically in their categories.
- Options Menu is available and presents the Settings interface.
- Add Button is available and presents the Add Recipe interface.
- Swipe to Delete feature presents an undo message near the bottom of the interface, this allows you to undo your recipe deletion.
- When the Recipe is swiped, it is immediately removed from the recipe list and the undo message is displayed.
- After a few seconds, the deletion of the recipe is complete and can no longer be undone.
View Recipe
- Title Text Area
- Displays the recipe title. This title is dynamically sized when needed for space.
- Image Area
- The recipe image is displayed.
- Ingredients List
- A list of the ingredients for the recipe.
- Method Area
- The steps of the method for the recipe.
- Edit Recipe Option Menu
- The option menu is located in the upper right of the app and presents the option to edit the recipe.
Add/Edit Recipe
- Image Area (optional)
- Clicking on the image spawns the camera to allow the user to take a photo of their recipe. Clicking on an existing image allows you to replace your image with a new one that you can immediately take with your camera.
- Recipe Name Text Field (required)
- Enter the name of the recipe in this control.
- Recipe Category Select List
- Select a category for your recipe.
- Add Ingredients Button (min 1 ingredient required)
- Each click of this button, presents you with a list of ingredients to add to your recipe.
- This ingredient list is searchable by typing in a character or two to filter the list to the ingredient you are looking for.
- The ingredients listed (when editing the recipe) are sortable by dragging and dropping into the desired location, and if you swipe, they can be deleted. Swiping will present an undo option, if you choose to ignore the prompt, the ingredient will be deleted permanently.
- Method Create Text Area (required)
- List the steps to create the recipe. Create a new line in the text editor to separate the steps.
- Save Button
Ingredient List
- Displays all Ingredients in their Categories.
- Categories are sorted alphabetically.
- Ingredients are sorted alphabetically in their categories.
- Categories for ingredients are as follows:
- Baking
- Beverages
- Canned Goods
- Condiments
- Dairy
- Frozen Foods
- Meats
- Seafood
- Pantry
- Pasta and Rice
- Produce
- Spices
- Clicking an ingredient presents the Edit Ingredient interface.
- The Settings Option Menu (upper right) is available to access the Settings interface.
- Add Ingredient Button (lower right) available to access Add Ingredient interface.
Add/Edit Ingredient
- Ingredient Name Text Field
- Provide an input for the ingredient name.
- Category Select Control
- Select the category that the ingredient belongs to.
- Save Button
Shopping List
- Basic instruction area is presented with the recipes below.
- Lists all recipes in category order, alphabetically within each category.
- Selecting and de-selecting adds and removes from the list as indicated by highlighting.
- Clicking the button presents the items needed to be shopped for based on the recipes selected.
Shopping Results
- Presents instruction on clicking to remove the items you may already have.
- Ingredients are listed in alphabetical ordering.
- Ingredient quantities are accumulated for any ingredient that exists in more than one recipe.
- If recipe 1 has 1lb hamburger and recipe 2 has 2 lb hamburger, the resulting list should contain 3 lb hamburger.
Help Docs
- Contain a version of this document and should specify a version.
- Should scroll and read correctly.
Introductions
Starting the app initially displays the intro screens.
Once the user accepts the intro by clicking the skip or the finish buttons, the app will no longer start with the intro screens, instead the app will launch with the drawer open, displaying the menu items.
If the user wants to see the intro screens again, they can select the option in the settings interface accessed by the option menu on the upper right of the app.
Settings
The settings interface is accessible via the top right option menu item.
The settings interface has currently one control.
- Show Introduction Again
- Once the user has seen the intro, this setting will be off.
- Turning this setting back on will present the intro screens once the app is started up again.
Testing
If you are interested in helping the project by testing, we have some guidelines to help you in your testing efforts.
Ensure all the paths through the interfaces are covered when you create your test documentation.
Submit Bugs
Bugs should include "steps to reproduce" including what was used for inputs. You can refer to the design document to clarify what the expectations were and what results you observed.
Bug Management (in new window): Bug Server
Bugs should be properly prioritized and documented.
Test Case Example
When creating test cases, there are only two steps, the third is optional.
1. Review the Design Documentation for the feature you are testing.
2. Based on this design document, create test cases.
3. Optionally have a team member or developer review your test cases before you start testing.
Create a bug for all cases that fail, make sure to be clear regarding the steps you took to find the issue.