Skip to content

Latest commit

 

History

History
287 lines (236 loc) · 11.9 KB

README.md

File metadata and controls

287 lines (236 loc) · 11.9 KB

Feast

Table of Contents

  1. Overview
  2. Product Spec
  3. Wireframes
  4. Schema

Overview

Description

An app that gamifies and optimizes the selection process for the best restaurant that meets the criteria specified by the user. The app uses Tinder-like cards to show the different restaurants: the user can see restaurant details, filter the displayed businesses, compare them, like their favorite places and send a visit invite to their friends.

App Evaluation

  • Category: travel, food discovery, social
  • Mobile: mobile first experience
  • Story: In the main activity, users will see recommendations for restaurants near them and can swipe left to ignore them or right to move them to a next phase of elimination among other selected restaurants.
  • Market: Tourists, General public (people with access to an smartphone)
  • Habit: Users can discover new restaurants near them (they can see their information if they swipe up). Users can select and see their favorite restaurants.
  • Scope: At the beginning, the app is only directed towards exploration by the user, however, it can be expanded to generate partnerships with restaurants to offer coupons or promotions to users who visit them regularly or mark them as favorites. Also, the user could request an Uber through the application to reach the selected place. Finally, a feature can be added to invite friends to a selected restaurant (or even to be able to choose a restaurant among several people).

Product Spec

1. User Stories (Required and Optional)

Required Must-have Stories

  • User can login and logout.
  • User can create a new account
  • User can navigate to History and Profile screens, and be able to create a new visit
  • In the visit creation process:
    • User can select location
    • User can select a date
    • User can see a sequence of cards with restaurants near them
    • User can swipe right to select a restaurant (and left to ignore another)
    • User can click a card to see details of an specific restaurant
    • User can filter the displayed restaurants based on characteristics (price, location and categories)
    • User can sort selected restaurants based on Highest Rating, Lowest Prices and Nearest.
    • User can select "Go now!" button to select a restaurant and finish the search
  • User can see next visits and past visits (Visits stored in a database)
  • User can favorite a restaurant and see it in profile view

Optional Nice-to-have Stories

  • User can select "random pick" to select a restaurant
  • User can create a new visit from detail view
  • User can cancel a visit
  • A Google Maps route is displayed, which connects the user location with the restaurant location
  • User can search for other users and see their favorite restaurants
  • User can send friend requests to other users
  • User can invite their friends to visits
  • User can see notifications on visit and friend request acceptance.
  • A push notification is sent when the user receives a visit invitation or a friend request
  • User can edit a visit (invite more friends or change date)

2. Screen Archetypes

  • Login
    • User can login into existing account
  • Registration Screen
    • User can create new account
  • Explore screen
    • User can create a new visit
      * [x] User can select a date * [x] User can select location
    • User can see a sequence of cards with restaurants near them
    • User can swipe right to select a restaurant (and left to ignore another)
    • User can swipe up to see details of restaurants
    • User can only see restaurants that match the specified filters
  • Filters screen
    • User can select different characteristics of the restaurants that they want to see in the main stream.
  • Detail screen
    • User can see specific information of a restaurant
    • User can select "Go now!" (if they come from Explore screen) or "Create visit!" (if they come from history or profile screen) to instantly create a visit without any steps further
  • Compare screen
    • User can choose specific atributes to sort the selected restaurants
    • User can click on "Go!" button to finally select a restaurant and conclude the process
  • History screen
    • User can see next restaurant visits
    • User can see past restaurant visits
    • User can click on any visit to see the restaurant's detail screen
  • Profile screen
    • User can see their information (username and email)
    • User can logout
    • User can see favorite restaurants
    • User can click on favorited restaurants to open details for that restaurant

3. Navigation

Tab Navigation (Tab to Screen)

  • Login Screen
  • Registration Screen
  • Explore Screen
  • Filters Screen
  • Detail Screen
  • History Screen
  • Profile Screen
  • Compare screen
  • Favorites screen

Flow Navigation (Screen to Screen)

  • Login Screen
    • Explore Screen
  • Registration Screen
    • Explore Screen
  • Explore Screen
    • Details Screen
    • Filters Screen
    • Compare Screen
  • Filters Screen
    • Explore Screen
  • Details Screen
    • None
  • Compare screen
    • None
  • History Screen
    • Details Screen
  • Profile Screen
    • Details Screen

Digital Wireframes

Part 1 First wireframe Part 2 Second wireframe

Interactive prototype

You can see an interactive navigation prototype of this proyect at: https://www.figma.com/proto/FATivGVWvbM1oYVIUHpsfT/Untitled?node-id=7%3A83&scaling=min-zoom&page-id=0%3A1&starting-point-node-id=3%3A30

Schemas

Model: Restaurant

Property Type Description
objectID String Unique identifier for the Restaurant (default field)
name String Name of this business.
imageUrl String URL of photo for this business.
telephone String Phone number of the business
rating float Rating for this business (value ranges from 1, 1.5, ... 4.5, 5).
price String Price level of the business. Value is one of $, $$, $$$ and $$$$.
categories Array list of strings that represent the categories that the restaurant match
city String Represents the city in which the business is located
country String Represents the country in which the business is located
coordLatitude float Latitude coordinate of the restaurant's location
coordLongitude float Longitude coordinate of the restaurant's location
yelpId String Identifier for restaurant in Yelp's API

Model: User

Property Type Description
objectID String unique identifier for the User (default field)
createdAt DateTime date when user is created
username String name of the user
email String user's email
password String user's password
profileImage File user's profile picture
firstName String user's first name
lastName String user's last name
description String user's simple description of their person and their likes

Model: Visit

Property Type Description
objectID String unique identifier for the created Visit (default field)
createdAt DateTime date when visit is created
user Pointer to User user that liked the restaurant
restaurant Pointer to Restaurant restaurant that has been selected
date Date Date object that indicates when the visit is going to happen
dateStr String Date in string format so it is ready to be displayed to the user's screen
attendess Array Array of pointers to User objects representing the users that will attend the visit

Model: Like

Property Type Description
objectID String Unique identifier for the Like object (default field)
createdAt DateTime date when like is created
user Pointer to User User that liked the restaurant
restaurant Pointer to Restaurant reference to Restaurant object that this like belongs to

Model: Hour

Property Type Description
objectID String Unique identifier for the Hour object (default field)
day int From 0 to 6, representing day of the week from Monday to Sunday. Notice that you may get the same day of the week more than once if the business has more than one opening time slots.
open String Start of the opening hours in a day, in 24-hour clock notation, like 1000 means 10 AM.
end String End of the opening hours in a day, in 24-hour clock notation, like 2130 means 9:30 PM.
restaurant Pointer to Restaurant Reference to restaurant object for this hour

Model: VisitInvitation

Property Type Description
objectID String Unique identifier for the invitation (default field)
visit Pointer to Visit Visit related to this invitation
fromUser Pointer to User User that created the visit invitation
toUser Pointer to User User that is being invited to visit
status String current state of the invitation, can be "pending", "accepted" or "declined"

Model: FriendRequest

Property Type Description
objectID String Unique identifier for the friend relation (default field)
fromUser Pointer to User User that sent friend request
toUser Pointer to User User that received friend request
status String current state of the request, can be "pending", "accepted" or "declined"

Networking

Parse Network Requests

  • History Screen
    • (Read/GET) Query next visits
    • (Read/GET) Query past visits
    • (Read/GET) Query visit invites
    • (Delete) Delete existing visit
  • Profile Screen
    • (Read/GET) Query user object
    • (Read/GET) Query businesses liked by the user
    • (Create/POST) Send friend request
    • (Update/PUT) Update user profile images
  • Notifications Screen
    • (Read/GET) Query visit invitations results
    • (Read/GET) Query friend request results
    • (Update/PUT) Answer to friend requests
  • Details Screen
    • (Read/GET) Query business object
    • (Read/GET) Query if like for that object exists
    • (Create/POST) Create a new visit from details screen

APIs, SDKs and frameworks used

  • Yelp Fusion API
  • Google's Places API
  • Back4App SDK
  • Firebase SDK

Sprints walkthroughs

Sprint 1 (July 12th - July 16th)

  • User can go to create screen
    • User can select a date
    • User can select a location using Places API
    • User can see restaurants near them
    • Restaurants are displayed using Tinder-like cards, can swipe to left or right
  • User can go to filters screen and apply filters to specify the criteria for restaurant
  • User can go to compare screen and see the restaurants that were swiped to the left
  • Next visits and past visits are displayed on History screen
  • User can like restaurants on past visits
  • User can login
  • User can logout
  • User can see their favorite restaurants

Sprint 1 walkthrough

Sprint 2 (July 19th - July 23th)

  • User can search for other users
    • User can see other users liked restaurant
  • User can go to details screen and see other important info about the restaurant
  • User can like restaurants in Details Screen
  • User can send friend requests
  • User can answer friend requests on Notifications Screen
  • User can see Visit Invitations or Friend Requests results on notifications screen
  • User can see invitations in Next Visits

Sprint 2 walkthrough

Sprint 3 (July 26th - July 30th)

  • Complete UI redesign
  • User can cancel a visit
  • User can edit profile picture
  • Fixed various bugs

Sprint 3 walkthrough