---
# System prepended metadata

title: 'Unit 5: Group Milestone'

---

Unit 5: Group Milestone
===

# PROMOBOT

## Table of Contents
1. [Overview](#Overview)
1. [Product Spec](#Product-Spec)

## Overview
### Description
Track Kroger product promos. User can maintain a list of their favorite products and check if any of them has a promo.

### App Evaluation
- **Category:** Life Style
- **Mobile:** This app will be developed for mobile.
- **Story:** Kroger client will create a list of available Kroger products. Products can be searcheable. The app will look for which of the client's products have a current promo.
- **Market:** This app is supposed to be used for Kroger clients.
- **Habit:** This app could be used as often or unoften as the user wants depending on client's need for a product.
- **Scope:** First we would start with a promo hunt application based just on Kroger store and only on client preference. Then we can upscale to search for promos on whole products or other stores.

## Product Spec
### 1. User Stories (Required and Optional)

**Required Must-have Stories**

* User logs in to access application
* User picks what their favorite store products. The products are searchable.
* User picks what specific Kroger store.
* User creates a list based on their favorite product.
* Application wil look for a promo based on client's favorite products.

**Optional Nice-to-have Stories**

* Application can choose their specific Kroger store using a Google Maps windows.
* Store products in listing are presented with their images.
* Promos are not look for only client's favorite products, but for all store products. 
* Promos are ordered based on the highest amount of saving.
* Compare Krogers promos with other stores like Walmart, Aldi, Albertson.

### 2. Screen Archetypes

* Login 
* Register - User signs up or logs into their account
   * Upon Download/Reopening of the application, the user is prompted to log in to gain access to their profile information to be properly matched with another person. 
* Search Product screen
   * When user is creating the list, a text field with a button for search products is shown along with a stream screen showing the searched product results.
* List Screen 
   * Presents the list of user's favorite products.
* Promo Screen.
   * Presents the list of products from user's list that currently has a promo on it.
* Store location Screen
   * The user can select which store location is the one they usually buy on.

### 3. Navigation

**Tab Navigation** (Tab to Screen)
* Your List
* Your Store

Optional:
* Compare promos
* Lookup Whole Store promos

**Flow Navigation** (Screen to Screen)
* Forced Log-in -> Account creation if no log in is available -> Promo screen
* Your List -> List Creation -> Search for product
* Your Store -> Store Selection

## Wireframes
<img src="https://i.imgur.com/9CrjH1K.jpg" width=800><br>

## Schema 
### Models
#### Get

   | Property      | Type     | Description |
   | ------------- | -------- | ------------|
   | productId     | String   | unique id for the product |
   | userId        | String   | unique id for the user |
   | image         | File     | image of the product |
   | productName   | String   | name of the product |
   | storeId       | String   | unique id for the store |
   
### Networking
#### List of network requests by screen
   - Home Feed Screen
      - (Read/GET) Query all product promos
   - Create List Screen
      - (Read/GET) Query list of products
      - (Update/PUT) Insert a new list product
   - Change Store
      - (Read/GET) Query prefered store
      - (Update/PUT) Update prefered store
