---
# System prepended metadata

title: MVP Group

---

MVP Group
===

# Tasty Recipe Creations

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

## Overview
### Description
The Tasty Recipe Creations app will allow users to look up and capture online recipes. It will allow them to get ideas for a meal plan. It was also provide instructions on how to cook that specific meal.

### App Evaluation

- **Category:** Recipes 
- **Mobile:** Users can use the app to get recipes for certain meals.
- **Story:** Users can post before and after picture of how their meal looked. 
- **Market:** Anyone who enjoys cooking and learning new recipes will enjoy this app.
- **Habit:** Users can use this app at anytime of the day. They can get recipes for any meal of the day. Breakfast, snack, lunch, dinner and dessert.
- **Scope:** V1 would allow users can post and view recipes with images and to view a timeline of recipes posted by other users. V2 would allow user to comment on, like, and favorite other users' recipes. 

## Product Spec

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

**Required Must-have Stories**

* User can login 
* User can sign up
* User can post photos 
* User can view a feed of recipes
* User can search for recipes
* User can favorite a recipe
* User can have a favorite list
* User can view others meals

**Optional Nice-to-have Stories**

* User can add someone
* User can add a comment to a photo
* User can like a photo
* User can talk with other users
* User can get help from others

### 2. Screen Archetypes
* Login Screen (Only shows up when not logged in)
    * User can login here
* Sign Up Screen (Only shows up when not logged in)
    * User can create an account here
* Home Screen 
    * User can choose what type of recipes they want to see:
        * Breakfast
        * Lunch
        * Dinner
        * Dessert
    * User can view recipes
    * User can search recipes
    * User can favorite recipes
* Creation Screen
    * User can post a recipe with  directions and an image
* Saved Recipes Screen
    * User can view favorited/saved recipes
    * User can view favorited/saved recipes’ details
    * User can unfavorite recipes
  

### 3. Navigation

**Tab Navigation** (Tab to Screen)
* Home Screen
* Post Recipe Screen
* Saved Recipes Screen

**Flow Navigation** (Screen to Screen)
* Login Screen
    * => Sign Up Screen
    * => Home Screen
* Sign Up Screen
    * => Home Screen
* Home Screen (main page - allows us to select food category)
    * => Home Feed Screen (displays recipes of the selected category)
* Post Recipe Screen
    * => Post Success Screen
* Saved Recipes Screen
    * => Recipe Details Screen


## Wireframes
<img src="https://media.giphy.com/media/93D02kRJMY6T9thuIw/giphy.gif" width=600>

### [BONUS] Digital Wireframes & Mockups
#### Login Flow
<img
src="https://i.imgur.com/cmMzouF.jpg" width=600>
#### App Flow
<img
src="https://i.imgur.com/BrGf7eI.jpg" width=600>


### [BONUS] Interactive Prototype

![](https://media.giphy.com/media/87rw1zTPSzW23lJ6QZ/giphy.gif)
[](https://www.figma.com/proto/ynUmzvnTVpUYKy2m0ljzIf/MVP-Recipes-app?page-id=0%3A1&node-id=11%3A1036&viewport=278%2C281%2C0.19&scaling=scale-down&starting-point-node-id=1%3A2)
> [Link to prototype: https://www.figma.com/proto/ynUmzvnTVpUYKy2m0ljzIf/MVP-Recipes-app?page-id=0%3A1&node-id=11%3A1036&viewport=278%2C281%2C0.19&scaling=scale-down&starting-point-node-id=1%3A2]

## Schema 
### Models
#### Recipe

   | Property          | Type           | Description |
   | ----------------- | -------------- | ------------|
   | objectId          | String         | unique id for the user                                               posted recipe (default                                               field)                   |
   | author            | Pointer to User| author of recipe posted  |
   | recipeName        | String         | display name of recipe   |
   | description       | String         | subtitle or description of                                           recipe                   |
   | category          | String         | type of recipe (breakfast,                                           lunch, dinner or dessert)|
   | image             | File           | display image for the                                               recipe                   |
   | directions        | String         | directions for the recipe|
   | preparationTime   | Number         | time in minutes that it                                             will take to prepare the                                             recipe                   |
   | cookingTime       | Number         | time in minutes that it                                             will take to cook the                                               recipe                   |
   | createdAt         | DateTime       | date when recipe is                                                 created (default field)  |
   | updatedAt         | DateTime       | date when recipe is last                                             update (default field)   |
   
### Networking
#### List of network requests by screen
   - Home Feed Screen
      - (Read/GET) Query all Recipes where user is author
         ```swift
         let query = PFQuery(className:"Recipe")
         query.whereKey("author", equalTo: currentUser)
         query.order(byDescending: "createdAt")
         query.findObjectsInBackground { (posts: [PFObject]?, error: Error?) in
            if let error = error { 
               print(error.localizedDescription)
            } else if let recipes = recipes {
               print("Successfully retrieved \(recipes.count) recipes.")
           // TODO: Do something with recipes...
            }
         }
         ```
      - (Read/Get) get all recipes of a specific category
         ```swift
         let query = PFQuery(className:"Recipe")
         query.whereKey("category", equalTo: selectedRecipeCategory)
         query.order(byDescending: "createdAt")
         query.findObjectsInBackground { (posts: [PFObject]?, error: Error?) in
            if let error = error { 
               print(error.localizedDescription)
            } else if let recipes = recipes {
               print("Successfully retrieved \(recipes.count) recipes.")
            }
        ```
   - Create Recipe Screen
      - (Create/POST) Create a new recipe object
   - Profile Screen
      - (Read/GET) Query logged in user object
   - Saved Recipes screen
      - (Read/GET) Query user's favorited/saved recipes
      - (Delete) Delete saved recipes from saved list


