/DineOutBuddy

DineOutBuddy makes finding restaurants easy for groups with diverse dietary needs. Specify your preferences and restrictions, and get personalized recommendations for restaurants and dishes that work for you. Includes profiles, intelligent search, and an AI assistant. Built with React Native, Node.JS, and MongoDB.

Primary LanguageJavaScript

DineOutBuddy

Finding the perfect restaurant to accommodate your dietary needs or a group's preferences can be like finding a needle in a haystack. But fear no more with DineOutBuddy! This innovative app takes the hassle out of finding the perfect restaurant and makes it easier to search for you. Just tell our smart recommendation engine what you love, what you avoid, and what you're craving. DineOutBuddy will serve up the perfect restaurant options and menu items tailored to you. Do you have a quirky dietary restriction or burning food question? Ask our AI assistant for advice anytime, anywhere. With DineOutBuddy, you can finally stop stressing and have fun savoring every bite!


MVP 🏆

  • User account with secure authentication

    • Personal profile of dietary preferences
      • Lactose intolerance
      • Gluten intolerance
      • Vegetarianism
      • Kosher
      • Certain Meat
      • Preferences over certain foods
        • EX: Loves Chicken more than Beef, Hates Broccoli but loves Cauliflower
      • Etc.
  • Group profile of multiple dietary preferences

    • Can share dietary preferences with others using their username or QR code
  • List of restaurants

    • Displays based off location and filter option
    • Within each restaurant is their menu and more filtering options
      • Options include the user’s or group’s dietary preferences and/or manual preferences
    • If no options are available for the whole group then suggest multiple options for parts of the group.
      • EX: 3 out of the 5 in the group are best suited for a list of restaurants while the other 2 are better suited for another list of restaurants.
  • Personalized recommendations of dishes and restaurants

  • Chatbot for answering food-related questions

    • Clarify menu items based on user or group information
    • If the user is in the mood for a certain meal then the chatbot can recommend the best options and pairings.



Stretch Goals ⏳

  • OCR scanning feature to digitize paper menus
  • Language Conversion
  • Reservations and waitlist management integration
  • Gamification for restaurant exploration
  • Crowdsourced menu changes/updates, leaving reviews/ratings, and photos of food for others to view.

Milestones 📆

Week 1: Set Up 🚀

General:

  • Discuss with the team who’s frontend/backend and the overall project/tech stack
  • Set up communication, environments, and WhenToMeet(Link available in doc)
  • Go over GitHub basics
  • Create a Figma account and start working on UI designs
    • Start with Low Fidelity and then build up to High Fidelity

Backend:

  • Start looking into MERN Stack (MongoDB, Express, React Native, Node.js)
  • lay around with the APIs (use Postman)
  • Look into LLM for chatbot and start playing around with it

Week 2: Further Preparations 🔍

Frontend:

  • Go over some UI design basics and do’s/don’ts
  • Try to finish up the Figma Design by the end of this week

Backend:

  • Start setting up the User Authentication and the Database. Have a working prototype by the end of the 2nd week
  • Keep doing research with the MERN stack, APIs, and LLMs

Weeks 3/4: Coding 🧑‍💻

Frontend:

  • Start working on the frontend components
  • Login/Create Pages 🚪
  • Questionnaire Page
    • Questions to ask about the user’s dietary preferences
  • Home Page 🏠
    • Should be able to view a list of Restaurants
      • Have a filter on how to view these restaurants
        • Based on Dietary Preferences, Prices, Ratings, Distance, etc.
    • Access to Profile Page
    • Access to Chatbot Page
    • If in a group setting, showcasing those in the group would be nice.

Backend:

  • Set up the APIs for gathering restaurants and food details
  • Start working on adding users into the group through username or QR code
    • Mainly look into how to develop unique QR codes and how to gather dietary information from others
  • Start training the LLM and setting up the chatbot

Weeks 5/6: Middle Ground 🚧

Frontend:

  • Profile Page 🧍
    • Has user’s information and their Dietary Preferences
    • Group Profile 🧑‍🤝‍🧑
      • Can have multiple Group Profiles with the people and their dietary preferences
      • Ability to add users to the group either with username, QR code, or by manually creating a small profile
  • Restaurant page 🥘
    • Has the restaurant’s menu items
      • Organized by regular menu display with lunch, breakfast, dinner, appetizers, drinks, etc.
      • Collapsable sections for a better view
    • Filter Option to go with Personal/Group Dietary Preferences and/or other filter options
  • Chatbot Page 🤖
    • Should allow the user to input any text they want

Backend:

  • Connect the login/create page and Questionnaire page with the backend database
  • Home Page 🏠
    • List the restaurants based on the location
    • Filter them based on what filter option the user chooses
      • Price, rating, dietary preferences, distance, etc.
  • Group Profile Database 🧑‍🤝‍🧑
    • Adding people with either username, QR code, or manual setup
    • Ability to have multiple groups without having to repeat the process
  • Restaurant+Menu Database 🍽️
    • If certain information is unavailable then use outside APIs/databases(USDA, FatSecret) to analyze the content breakdown of certain menu items and include that within the database
      • Check with this first before suggesting any restaurant/food to the user.
    • Personalized recommendation algorithm for both restaurants and food
  • Chatbot Implementation 🤖
    • Have it work with some basic questions like:
      • Clarify menu items based on user or group information
      • If the user is in the mood for a certain meal then the chatbot can recommend the best options and pairings.

General:

  • The backend team should, one at a time, start connecting the finished backend pages with the frontend team. During this, the frontend team should be testing the connection with a set of basic user cases.
  • Moving in and out of pages, uploading correct and wrong information, etc.

Weeks 7/8: Finishing Touches 🏁

General:

  • Finish any remaining pages and implementations by the 7th week
  • Finish connecting Frontend with Backend by the 8th week
  • Have the Chatbot working
  • If possible work on stretch goals

Weeks 9/10: Preparations ✨

General:

  • Prep for Presentation Night! 🥳
  • Make sure the Slides and Demo are ready and good to go


Tech Stack & Resources 💻

React Native

Flutter

Android Studio

MERN Stack

APIs

LLM


Roadblocks and Possible Solutions 🚧 💡

  • Having everyone’s machine work with React Native.
    • If this is an issue then we can switch to Flutter and see if that works, otherwise confer with others to find a better solution that works for everyone.
  • Fetching all the available restaurants nearby
    • If the online APIs or databases don’t contain the correct restaurants nearby then we would have to create our own database containing those values.
    • Or list the restaurants in Dallas rather than a specific location
  • Implement the chatbot with the user’s dietary and restaurant information.
    • A solution to this would be to either create a small chatbot that answers basic questions or replace this feature with a stretch goal
  • Either the Frontend or Backend team falling behind.
    • If this happens the best course would be to get some assistance from the other side until caught up

Competition 🆚

  • Yelp, Zomato, Tripadvisor (no personalization or AI assistant)
  • Individual restaurant apps/sites (limited scope)
  • Subpar diet filter sites (poor recommendations)
  • General search engines (not food-specific)

Git Commands 📓

Command What it does
git branch lists all the branches
git branch "branch name" makes a new branch
git checkout "branch name" switches to speicified branch
git checkout -b "branch name" combines the previous 2 commands
git add . finds all changed files
git commit -m "Testing123" commit with a message
git push origin "branch" push to branch
git pull origin "branch" pull updates from a specific branch

DineOutBuddy TEAM!! 🥳 🎆

  • Jason Luu
  • Adarsh Goura
  • Amulya Prasad Rayabhagi
  • Kousthub Ganugapati
  • Jordan Tan