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.
- 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).
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)
- 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
- User can create a new visit
- 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
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
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
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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" |
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" |
- 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
- Yelp Fusion API
- Google's Places API
- Back4App SDK
- Firebase SDK
- 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
- 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
- Complete UI redesign
- User can cancel a visit
- User can edit profile picture
- Fixed various bugs