---
# System prepended metadata

title: BarHop

---

# BarHop

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

## Overview
### Description
A queuing app that lets businesses organize a queue for their bar, and lets consumers register so that they can use this app instead of waiting outside or for long periods of time.

### App Evaluation
[Evaluation of your app across the following attributes]
- **Category:** This mobile app would be considered in the Food/Drink/entertainment industy
- **Mobile:** This app will be able to be utilized on all mobile devices including tablets
- **Story:** We want to make the consumer experience more enjoyable when going to bars with their friends on the weekend, and BarHop is an application that looks to greatly decrease the time waited before going into bars during peak hours.
- **Market:** The target audience for BarHop would be college aged students in popular college towns or large cities where lines at bars can be extremely lengthy
- **Habit:** Our app will be targeted for all days, but the emphasis is for use on Fridays and Saturdays.
- **Scope:** Firstly, our app will be focused on a business facing model, with the consumer side coming afterwards.

## Product Spec

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

**Required Must-have Stories**

* Users can create a new account
* Users can login and logout of their account
* Users can create a queue for their bar
* Users can edit the queue (for business-side)
* Users can create and edit profiles for their bar
* Users can send consumers information about their spot in the queue and when they can enter the bar

**Optional Nice-to-have Stories**

* Consumers can choose a bar based on proximity
* Consumers can register their information (name and party size) into a queue
* Consumers can view history on a side panel

### 2. Screen Archetypes

* Login Screen
   * User can login (both business and consumer side)
* Registration Screen
   * Businesses can create a new account with all their bar bio
   * Consumers can register an account that stores their name and phone number
* Stream
    * Consumer can see different categories with different bars recommended to them
    * Businesses can see their queue and all the people on it
* Creation
    * Businesses can create and edit their bar queues
    * Consumers can create a new reservation with their name, phone number, and party size
* Search
    * Consumers can search for bars

### 3. Navigation

**Tab Navigation** (Tab to Screen)

* Home Feed (Consumer Side)
* Queue List (Business Side)
* BarHop History (Consumer Side)
* Settings

**Flow Navigation** (Screen to Screen)

* Login Screen 
   * Registration Screen
   * Login Screen for Businesses
* Registration Screen
   * Home Screen
* Stream Screen
    * For businesses, it would navigate to individual members of the queue and display detailed info 
    * For consumers, it would navigate to detailed screens for the individual bars
* Creation Screen
    * Home (after creating the reservation or creating the queue)
* Search Screen
    * None

## Wireframes
![](https://i.imgur.com/o1dtuN4.jpg)

### [BONUS] Digital Wireframes & Mockups

### [BONUS] Interactive Prototype

## Schema 
### Models
#### Business Object
| Property      | Type     | Description |
   | ------------- | -------- | ------------|
   | businessId    | String   | unique id for the user post (default field) |
   | owner         | Pointer to Owner of Business| Owner of Bar |
   | businessLogo  | File     | image that business can upload to set logo |
   | username      | String   | username stored for business |
   | password      | String   | password stored for business |
   | maxCapacity   | Integer  | maximum number of customers allowed into store |

#### Consumer Object
| Property      | Type     | Description |
   | ------------- | -------- | ------------|
   | customerName    | String   | name of customer used to track and give reservations |
   | customerPhone   | Integer  | phone number of customer used to text them with arrival details |
   | partySize       | Integer  | number of people in party |
   | timeArrived     | DataObject Value | records the time that the customer arrives |
   | rating          | Integer  | Gives customer rating of how satisfactory their visit was |
### Networking
Parsing Outline 
* Buisness Main Screen
    - (Read/GET) Query all posts where Customomer is in queue at the Buisness
    ```
    var customers = [PFObject]()
    let query = PFQuery(className: "Customers")
    query.includeKeys("name", "party_size", "timeRegistered")
    query.findObjectsInBackground { (customers, error) in
         if customers != nil {
             self.customers = customers!
             self.tableView.reloadData()
    if let error = error { 
        print(error.localizedDescription)
    } else if let posts = posts {
        print("Successfully retrieved \(posts.count) posts.")
        // TODO: Do something with posts...
    }
    ```
* Specific Customer Screen
    - (Create/POST) Send text to Customers
    - (Update/PUT) Change Customer position in queue
    - (Delete) Kick Customer from queue
* Profile Screen
    - (Read/GET) Query logged in user object
    - (Update/PUT) Update user profile image



## Sprints
### Sprint #1


- [x] Have Launch Screen and App Icon
- [x] Have Login Screen with auto sized features
- [x] Have Ability to stay logged in after launch
- [x] Have Register feature
- [x] Setup Parse server
- [x] Connect Parse server to application to allow for user tracking

### Sprint #2
- [x] Create customer object
- [x] Add feature to allow business to add customer
- [x] Add logout buttom
- [x] Customer information gets saved to server
- [x] Add autoformatting on login 

## Walkthroughs
![](https://i.imgur.com/o10JxKp.gif)


