Demo Video: https://www.youtube.com/watch?v=-5nWFDj_86g
This app will help you decide on the best places to eat, to make the most out of your spontaneous trips. If you have downtime in a random city and want to visit a good restaurant that is also nearby, it can be hard to research and choose the best one right then and there. So, using a dating app style for restaurants, you can quickly see some pictures and basic information of each restaurant to determine if it will be the right fit for you. If you want to find places to visit in advance, you can also set your location to other areas to see whats around there.
- Category: Food, Planning
- Mobile: This app would be primarily developed for mobile due to its spontaneous nature. But would perhaps be just as viable on a computer, especially if I add more features regarding planning. Functionality wouldn't be limited to mobile devices, however mobile version could potentially have more features, such as the push notifications.
- Story: Retrieves data for restaurants around the area for the user to decide where to eat.
- Market: Any individual could choose to use this app.
- Habit: This app could be used as often or unoften as the user wanted depending on if they are visiting new cities or want to go out with friends and find places to eat.
- Scope: First we would start with spontaneous decisions and recommendations, then perhaps this could evolve into a foodie tour planning app with a map of saved locations, reminders to make reservations, and saving into custom folders. In adition, this could also become a restaurant recommendation sharing app amongst friends and popular food bloggers.
Required Must-have Stories (more focused on spontaneous)
- Users can log in
- Use current location and default radius or set a location and radius
- Filter search: Let the users select prices, open now
- Tinder-style swiping animation (use external library for visual polish requirement)
- Select yes or no for each restaurant
- Yes and No animations
- Detail view of restaurants with info about the restaurant and map view
- Animate transition between fragments (animation requirement)
- All the yes's go into saved tab
- Click on the restaurant in saved tab to open details view using parcelable
- Swipe to delete from the list (gesture requirement)
- Able to plan out a path to your destination to only show places along the way
- Optimize the search query to load restaurants along the path when the current list is exhausted so too many restaurants are not queried at once
- Use the Model–View–ViewModel architectural pattern to organize the code
- Use state flows to update the UI when the data changes
- Use retrofit for API calls
Optional Nice-to-have Stories
- Show directions to restaurant
- More filtering: rating, number of reviews
- Share yelp link of restaurant in details view by copying to clipboard to send
- Add an overall map view to your saved restaurants
- Click the markers to get information for each restaurant
- Able to filter map by category
- Sort saved restaurants in folders by location
- Use data from what the user liked to recommend a restaurant near you using push notifications
- Settings where you can change your username, password, email
Complex Features + ideas to execute them
- Set a destination from your current location to find restaurants along the way
- Use Google Maps API
- Find a path to get to your destination and set multiple small radii along those lines and show restaurants within those radii
- Optimize the search query
- Only add query additional restuarants along the path as the user exhausts the list instead of querying everything along the path
- Log In
- Users can log in
- Restaurants Screen
- Card view of restaurants to swipe through
- Can set radius, location, type of food
- Restaurants Detail view
- All info on resaurant
- Filters
- Categorize searches
- Saved
- All restaurants saved
- Profile/Settings
Tab Navigation (Tab to Screen)
- Restaurants
- Saved
- Profile/Settings
Flow Navigation (Screen to Screen)
- Log in screen
- Details screen
- Click on restaurant card
- Filters screen
- Location folder contents
- Map color coordination button
Restaurant Details
Property | Type | Description |
---|---|---|
restaurantId | String | Unique ID for restaurant |
restaurantName | String | Name of Restaurant |
rating | Number | Yelp rating of restaurant |
priceRange | String | Dollar sign range |
category | String | Type of food |
restaurantTimes | String | Times reataurant is open |
menu | File | Restaurant menu |
image | File | Pictures of food |
reviews | String | Reviews of restaurant |
restaurantAddress | String | Address of Restaurant |
phoneNumber | Number | Phone number of restaurant |
website | String | Website of restaurant |
User Details
Property | Type | Description |
---|---|---|
user | Pointer | User of the app |
location | String | User location or address |
List of network requests by screen
- Restaurants Screen
- (Read/GET) Get restaurant data from Yelp to display
- (Create/POST) Save the restaurant
- (Delete) Reject the restaurant
- Saved Restaurants Screen
- (Read/GET) Query all the restaurants that user has saved
- Profile Screen (Read/GET) Query logged in user object