Project Speculate
- Alexandra Charland
- Feb 8, 2021
- 3 min read
Updated: Feb 9, 2021
The nutrition app I want to make will calculate the overall nutrition stats of a recipe based on the user's ingredient preferences. Other nutrition apps I've tried so far (MyPlate, MyFitnessPal, Chronometer, Nutritionix's app) allow you to search both general and specific ingredients to add to recipes, however some of them are not flexible in terms of measurements (referencing only the recommended serving size instead of the actual amount used in the recipe), and all of them so far make the user search through a long list of ingredients without saving the user's ingredient preferences. My app will be a simpler nutritional database for recipes that takes into account the user's grocery preferences by saving them. For now I'm keeping it simple in terms of features but I may add more features if time allows. I will start by implementing this application in iOS and try Android if I have time.
Features:
Back-end:
Nutrition API: The API that I will use for this app will be able to retrieve nutrition information for specific food ingredients (such as Horizon Organic 2% lowfat milk). Some APIs that I can use for this are the free Nutritionix API or the free USDA API.
Tab bar items:
Food Inventory: The user can store their preferred grocery items here in a personalized database with general nutrition information. To add an ingredient, the user will tap a plus button to bring up the new ingredient interface with a search bar. This is where all of the API calls should happen as the user searches for their grocery items. The information retrieved from the API can be saved in a tableview format here, where each row stores an ingredient's nutritional information to be used for local referencing in the recipe tab. The table of food ingredients will be organized by food type (dairy, vegetables, meats, etc.) in searchable, alphabetical order.
Recipes: The user can create and save recipes with their nutritional information in a tableview format here. This table of recipes will be automatically sorted in searchable, alphabetical order. To fill in each line, the user will type a number on the keypad and choose from a list of common measurements in a picker. Then the user can begin typing the ingredient into the search bar on the current line, and while they are doing this a suggestion prompt will come up with a reference to an existing ingredient in the food inventory. If the ingredient is not found, the user will be prompted in the suggestion to add the new ingredient to the food inventory, in which the interface to add a new ingredient will pop up. Once the user adds a new ingredient, the interface will close, the new ingredient will be autofilled in the current line, and the user can move on to the next line.
Work estimates
Here is a concise index of all the features ordered by probable implementation order and my estimated time for each:
View controller design (3 days):
Tab bar view controller (10 minutes)
Table views in each tab (10 minutes)
Interface for adding ingredients (20 minutes)
Interface for creating recipes (20 minutes)
Individual recipe nutrition details (1 hour)
Individual ingredient nutrition details (1 hour)
Navigation from recipe table view to recipe details (1 day)
Navigation from ingredient table view to ingredient details (1 day)
API data (1 week):
Display API data in ingredient table view (2 hours)
Display API data in individual ingredient page (2 hours)
Connect ingredient table view row to individual ingredient page (1 day)
Save API ingredient data to a back-end database/data persistence method (3 days)
Save recipes with ingredients to back-end database (3 days)
Search bars (1 day):
Search through saved food inventory (1 hour)
Search through saved recipes (1 hour)
Retrieve food inventory data while creating recipes (2 hours)
Calculation (3 days):
Calculate overall nutritional value for a recipe based on ingredients chosen and amount of each used (3 days)
Goal for Iteration 1:
By the end of iteration 1, I want to have a full prototype with all these features modeled.
Comments