===
- Category: Social Networking / Food
- Mobile: This app would be primarily developed for mobile but would perhaps be just as viable on a computer, such as Yelp or other similar apps. Functionality wouldn't be limited to mobile devices, however mobile version could potentially have more features.
- Story: Lists out local restaurants and allows users to form groups to eat out together.
- Market: Any individual could choose to use this app. For instanct, we are expecting Foodies to be widely used among college freshmen, when they first arrive at the campus and actively meeting new people.
- Habit: This app could be used as often or unoften as the user wanted depending on how frequent they go out for food or want to meet new people.
- Scope: First we would start with displaying restraunt information and letting users to form a group. Then perhaps add communication (e.g. group chat) and payment methods within the app. Large potential to work with local restaurants, giving them an advertisement platform.
Required Must-have Stories
- User logs in to access groups and previous chats.
- User creates profile when signing up for the first time. Necessary information includes username, password, interest tag (in general), short introduction, avatar.
- User sees a list of popular restaurants with basic information around his/her location.
- User picks a restaurant to view the restaurant details page, including two options: Create New Group or Join an Exisiting Group.
- The user who creates the group is the leader, and is responsible for setting up the time to meet, # of members. He/She also has the authority to accpet/deny new member application.
- User can check the profile page of each existing group member in a group.
- User joins the group chat with other group members upon joining a group, and he/she is automatically excluded from the group chat when he/she decides to quit the group.
Optional Nice-to-have Stories
- Search restaurant with a yelp search engine.
- Display surrounding restaurants in Map view.
- Direction to the restaurant (e.g. link to Google Map).
- User can sign in with other accounts (e.g. Google account).
- User can decided to share their past visits to restaurants (good credit!).
- Group members can rate each other after the set meeting/dining time (good credit!).
- Group displays extra information such as a short introduction or interest tags ("Movie", "Games", "Music")
- Group leader enters the total bill amount and splits the bill between group members.
- User views a list of saved restaurants.
- Login
- Automatic login when user closes and reopens the app after previous successful 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. When signing up, user needs to choose a username, password, profile photo and short description.
- Restaurant List
- Include location, type of cuisine, ratings, # of reviews, price range.
- Restaurant Detail
- Include location, short description, type of cuisine, ratings, price range, # of reviews (and actual reviews) .
- Messaging Screen - Chat for users to communicate in groups
- Upon joining a group, automatically join users to the group chat
- View previous group chats
- Profile Screen
- View other users' profile
- Allows user to edit profile information when viewing their own profile
- Settings Screen (optional) *
Tab Navigation (Tab to Screen)
- List of restaurants
- Profile
- Settings (optional)
Optional:
- Music/Encounter Queue
- Discover (Top Choices)
Flow Navigation (Screen to Screen)
- Forced Log-in -> Account creation if no log in is available
- Music Selection (Or Queue if Optional) -> Jumps to Chat
- Profile -> Text field to be modified.
- Settings -> Toggle settings
Property | Type | Description |
---|---|---|
objectId | String | unique id for the user (default field) |
createdAt | Date | date when user account is created (default field) |
updatedAt | Date | date when user account is last updated (default field) |
profile | File | user's profile photo |
Location | GeoPoint | user's current location (device location) |
username | String | displayed username in app |
password | String | user's password |
String | user's email. entered at sign up process | |
description | String | self-introduction |
groupList | Array | list of groups the user has joined so far |
Property | Type | Description |
---|---|---|
objectId | String | unique id for the group (default field) |
createdAt | Date | date when group is created (default field) |
updatedAt | Date | date when group information is last updated (default field) |
restaurantName | String | the name of the restaurant group plans to meet at |
restaurantAddress | String | address of the restaurant |
restaurantID | String | restaurant ID from Yelp API |
FounderID | Pointer to User | pointer to the user who created group |
description | String | group description (e.g. meeting purpose/goal) |
name | String | display name of the group |
Time | String | the time group will meet at restaurant |
Date | String | the date group will meet at restaurant |
full | Boolean | has the group reached max member number? |
memberList | Array | array of member IDs (user ID) |
curMember | Number | current number of members in the group |
maxMember | Number | maximum number of members allowed to join the group |
Property | Type | Description |
---|---|---|
objectId | String | unique id for the message (default field) |
createdAt | Date | date when message is sent (default field) |
updatedAt | Date | date when message is last updated (default field) |
userID | String | ID of the user who sent the message |
body | String | message content |
groupID | String | ID of the group this message was sent in |
- Discover Feed Screen
- (Read/GET) Query nearby restaurants from
- Restaurant Details Screen
- (Read/GET) Query restaurant details information from Yelp
- (Read/GET) Query list of groups under this restaurants name
- Group Details Screen
- (Read/GET) Read the group founder information as well as group member information
- Message Screen
- (Read/GET) Query the groups current user has joined
- Chatroom Screen
- (Read/Get) Query the messages sent to this chatroom
- (Create/Post) Create a new message in the chatroom
- Profile Screen
- (Read/GET) Query logged in user object
- (Update/PUT) Update user profile image
Here's a walkthrough of implemented user stories:
- Via Facebook
-
- Via email registration. User should use an active email to validate their Foodies account.
-
- Discover page. Restaurants are listed based on Yelp's recommendation order.
-
- Search example (keyward: french, burger)
-
For each restaurant, users can either choose to join a existing restaurant, or create their own.
- To create a new group, users must provide group name, description, maximum number of members, meeting time, and meeting location.
-
- Messages tab includes shows all groups group chats the user has joined before. When they join a group, they are automatically invited to the group chat.
-
-
On Foodies, users can post images and captions (like a mini-instagram)!
-
-
Users can change their profile image and bio (short description/introduction).
-
Users who joined via email, they can update user ID and password.
- Depending on where the user enters the map view (top right icon), they can view one of Restaurants, Groups, or Members' map view.
- Discover page --> Location of restaurants that are listed on the discover page
-
- Messages page --> Location of restaurants associated with each group.
-
- Group chat room --> Location of members of that group.
-