Contents
- Group Information
- Design
- Libraries & APIs
3.1 Third Party Libraries
3.2 Native Libraries - Server Support
- Models
5.1 List Model
5.2 Pantry Model - View Controllers
6.1 ShoppingListViewController
6.2 IndividualListViewController
6.3 AddItemViewController
6.4 PantryViewController
6.5 RecipesViewController
6.6 SettingsViewController - Week Long Tasks
7.1 Week 1
7.2 Week 2
7.3 Week 3
7.4 Week 4 - Trello Board
- Github Classroom
- Testing Plan
Team: Adam Ali Will Chilcote Mark Nickerson Sydney Schiller
The following are the planned designs of the various screens/views:
- Splash/loading screen
- Master shopping list screen
- Individual shopping list
- Add item to list view
- Pantry view
- BarCode scanning view
- Random recipe view
- Settings view
Most of the third party libraries and APIs we'll be relying on revolve around accessing large databases of either foods or recipes. These are:
- Recipe & food database, found at Edamam.
- Food database with associated barcodes found at Open food facts.
- To make things look nice, various UI Design/Formatting cocoapods.
- AVFoundation framework, used for real-time barcode scanning.
To save the user's login and data, we will attempt to make use of iCloud for our serialization--wherein the user account will simply use the user's apple ID. However, if this becomes too much of a hassle, or is unreliable, we will implement Google login and Firebase as our means of handling the login/signup process and storing of user data.
The tentative outline of the models planned are a grocery list model and a pantry model.
The list model will contain all data relevant to the shopping list. Including:
- Item struct
- Name
- Expiration data
- Price
The list model will contain all data relevant to the pantry. Including:
- Expiration date flagging
- The date the item was added
Variables:
- Table view containing list of shopping lists (serializable)
View:
- A table view containing a list of the grocery lists you have made
- An add list button (creates list that the user can rename)
- An edit list button (delete buttons pop up near list items)
- Buttons to navigate to the PantryViewController, RecipesViewController, and the SettingsViewController
Delegates/Protocols:
- When an item is marked off/purchased, update list of items the user has over in the PantryViewController
- Deleting a list here will remove it from the list of shopping lists in the ShoppingListViewController
Variables:
- Items to purchase, entered into table view
- Table view
View:
- Back button (returns user to ShoppingListViewController)
- Edit button to add items to the list (takes user to AddItemViewController)
- Table view of items
Delegates/Protocols:
- Items added/removed here are added or removed to/from the IndividualListViewController/PantryViewController tableview
- Populates items on this view controller from IndividualListViewController or from the PantryViewController
Variables:
- List of items on relevant grocery list
View:
- Done button (returns user to that specific IndividualListViewController)
- Back button (returns user to that specific IndividualListViewController)
- Custom keyboard with name of item and amount to purchase
- Scan barcode button (takes user to BarcodeScannerViewController)
Delegates/Protocols:
- Items here are updated either manually or through IndividualListViewController input
Variables:
- List of items in pantry
- Table view of items in pantry
View:
- Manual add button (takes user to a AddItemViewController populated with with items from the pantry)
- Buttons to navigate to the ShoppingListViewController, RecipesViewController, and the SettingsViewController
- Table view containing the list of items in the pantry
View:
- Generate a random recipe when a button is pressed
- Buttons to navigate to the PantryViewController, ShoppingListViewController, and the SettingsViewController
Delegates/Protocols:
- Update the settings that apply to the specific view controller
View:
- A few text labels with buttons for the different settings
Delegates/Protocols:
- Return relevant information to AddItemViewController
Variables:
- An Image or whatever information returns from the API call
View:
- Standard camera view stuff
- Data flow: (scan barcode) -> (retrieve item from openfoodsfactDB using barcode match) -> (return food item name/info to user)
Set up main navigation and views.
Implement barcode scanning and shopping list support, ensuring shopping list serialization.
Add pantry view and details, ensuring cross-view updates.
Add recipe support if possible, hopefully base recipes off of what the user has in their pantry.
The team's Trello board can be found here.
The team's Github classroom can be found here.
For the testing of the app, we determined that the testing group types could be broken up as:
- Holding focus groups (pizza supplied) to get people to try out the app
- Family, friend, classmate testing
The three (more questions to come, surly) basic questions to ask we concluded were:
- rate the usefulness of the app
- rate the ease of use (signup/login and general use of the app)
- clarity of app purpose/use (gathered with or without prior instruction)
Lastly, the other miscellaneous things to keep an eye out for during testing sessions are:
- user suggestions
- observations we make while users used app