Skip to content

Latest commit

 

History

History
197 lines (169 loc) · 6.44 KB

README.md

File metadata and controls

197 lines (169 loc) · 6.44 KB

Can I Graduate Already, LLC

Contents

  1. Group Information
  2. Design
  3. Libraries & APIs
    3.1 Third Party Libraries
    3.2 Native Libraries
  4. Server Support
  5. Models
    5.1 List Model
    5.2 Pantry Model
  6. View Controllers
    6.1 ShoppingListViewController
    6.2 IndividualListViewController
    6.3 AddItemViewController
    6.4 PantryViewController
    6.5 RecipesViewController
    6.6 SettingsViewController
  7. Week Long Tasks
    7.1 Week 1
    7.2 Week 2
    7.3 Week 3
    7.4 Week 4
  8. Trello Board
  9. Github Classroom
  10. Testing Plan

1. Group Information

Team: Adam Ali Will Chilcote Mark Nickerson Sydney Schiller

2. Design

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

3. Libraries & APIs

3.1 Third Party Libraries

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.

3.2 Native Libraries

  • AVFoundation framework, used for real-time barcode scanning.

4. Server Support

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.

5. Models

The tentative outline of the models planned are a grocery list model and a pantry model.

5.1 List Model

The list model will contain all data relevant to the shopping list. Including:

  • Item struct
  • Name
  • Expiration data
  • Price

5.2 Pantry Model

The list model will contain all data relevant to the pantry. Including:

  • Expiration date flagging
  • The date the item was added

6. View Controllers

6.1 ShoppingListViewController

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

6.2 IndividualListViewController

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

6.3 AddItemViewController

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)

6.4 PantryViewController

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

6.5 RecipesViewController

View:

  • Generate a random recipe when a button is pressed
  • Buttons to navigate to the PantryViewController, ShoppingListViewController, and the SettingsViewController

6.6 SettingsViewController

Delegates/Protocols:

  • Update the settings that apply to the specific view controller

View:

  • A few text labels with buttons for the different settings

6.7 BarcodeScannerViewController

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)

7. Week Long Tasks

7.1 Week 1

Set up main navigation and views.

7.2 Week 2

Implement barcode scanning and shopping list support, ensuring shopping list serialization.

7.3 Week 3

Add pantry view and details, ensuring cross-view updates.

7.4 Week 4

Add recipe support if possible, hopefully base recipes off of what the user has in their pantry.

8. Trello Board

The team's Trello board can be found here.

9. Github Classroom

The team's Github classroom can be found here.

10. Testing Plan

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