Skip to content

Restaurant Chatbot for automated restaurant, menu, reservation, & order management

Notifications You must be signed in to change notification settings

eshan-sud/dineBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DineBot

My project for the completion of my Node.js internship at Celebal Technologies 2025

  • Website is live on : link

Note: Backend may not work because it is on free tier & only runs for 60 compute minutes/day.


Sample Images (of the frontend:



Instructions received for the project:

This handy restaurant bot simplifies your dining experience. It helps you find restaurants, browse menus, make reservations, and even place orders for delivery or pickup, all within a user-friendly chat interface.

  • Restaurant Discovery: Search for restaurants by cuisine, location, price range, or specific keywords.
  • Menu Exploration: Access digital menus with clear descriptions, pictures, and customer reviews.
  • Reservation Management: Make reservations for your desired date and time, specifying any special requests.
  • Ordering Made Easy: Place orders for delivery or pickup directly through the bot, adding or removing items with ease.
  • Payment Integration: Securely pay for your order using a connected payment method within the chat interface.
  • Order Tracking: Receive real-time updates on the status of your order, from confirmation to delivery (or pickup notification).
  • Table Management: Manage your reservations and orders in one place, allowing for easy cancellations or modifications.
  • Personalized Recommendations: Based on your past choices and preferences, the bot can suggest relevant restaurants and dishes.

Start the Project:

  • Create .env in both frontend & backend workspaces

  • After adding all the required details in the .env files

    • Backend :

      DB_HOST=db_host_name
      DB_USER=db_user_name
      DB_PASSWORD=_db_password
      DB_NAME=db_name
      DB_PORT=db_port_number
      BACKEND_PORT=port_number
      BASE_URL=backend_base_url
      JWT_SECRET=jwt_secret
      JWT_REFRESH_SECRET=jwt_refresh_secret
      AZURE_CLU_KEY=azure_clu_key
      AZURE_CLU_PROJECT_NAME=azure_clu_project_name
      AZURE_CLU_DEPLOYMENT_NAME=azure_clu_project_deployment_name
      AZURE_CLU_ENDPOINT=azure_clu_endpoint
      
    • Frontend :

      REACT_APP_AZURE_BACKEND_API=your_backend_api
      
  • Run these on the terminal in the root directory of the project:

    npm install
    npm run dev:all
    

Technologies Used:

  • Node.js
  • Express.js
  • React.js
  • MySQL
  • Microsoft Azure (conversation language understanding)
  • REST APIs
  • Microsoft Bot Emulator
  • Postman (testing APIs)

Other Dependencies:

  • Backend

    • azure/ai-language-conversations
    • bcrypt
    • body-parser
    • botbuilder
    • cookie-parser
    • cors
    • dotenv
    • express
    • express-rate-limit
    • express-slow-down
    • jsonwebtoken
    • mysql2
    • nodemon (dev dependency)
  • Frontend

    • @testing-library/dom
    • @testing-library/jest-dom
    • @testing-library/react
    • @testing-library/user-event
    • lucide-react
    • react
    • react-dom
    • react-router-dom
    • react-scripts
    • web-vitals

TODO

  • Core Setup & Tools

    • Install JavaScript dependencies (express, cors, botbuilder, bcrypt, nodemon)
    • Set up Bot Framework Emulator for local testing
    • Configure MySQL Database
    • Initialise Node.js Project
    • Connect Node.js to MySQL (using mysql2)
    • Basic User Authentication
    • User Auth using Bot
    • Persistent User Profile for each unique session
    • Make the bot conversationally stateful (creating a bias b/w each conversation thread from the intial indentified intent)
  • Model Training

    • Setup Azure CLU service
    • Implement intents, entities, & training utterances
    • Train CLU model
    • Deploy CLU service
    • Integrate CLU service to bot
  • Backend

    • Basic Security

      • Hashing & Salting
      • Rate Limiting
      • Delay spamming queries
      • Use parametrised SQL queries
      • Implement Intents
        • None (or FallbackIntent)
        • GeneralGreeting
    • Restaurant

      • Design MySQL relations (restaurants, locations, cuisines, reviews)
      • Implement basic restraunt discovery using user inputs
      • Implement all restraunt discovery (eg, "Show all restaurants")
      • Implement location based discovery using user input (eg, "Chinese food near me")
      • Restaurant search based on
        • Restaurant Name
        • Cuisine
        • Location or City
        • Price range
        • Rating
      • Implement Intents
        • SearchRestaurant
    • Menu

      • Create MySQL relations (menus, menu_items, item_images, item_reviews)
      • Display Menu description, image, price, user ratings
      • Implement Intents
        • ShowMenu
    • Reservation

      • Create MySQL relation (reservation)
      • Implement Intents
        • MakeReservation
        • CancelReservation
        • ModifyReservation
        • ShowReservations
    • Orders

      • Create MySQL relation (orders)
      • Implement Intents
        • CancelOrder
        • CheckOrderStatus
    • Cart

      • Implement memory for conversation
      • Implement Intents
        • AddToCart
        • RemoveFromCart
        • ViewCart
        • EditCart
        • ClearCart
    • Payment

      • Implement MySQL relation (payments)
      • Implement Intents
        • CheckPaymentStatus
        • PayOrder
    • Recommendations

      • Implement MySQL relation (user_behavior)
      • Track user's behavior
        • Menus viewed
        • Ordered items
      • Rule-based recommendation
      • Implement Intents
        • RecommendItem
  • Frontend

    • Home: Home page of the application
    • NotFound: Fallack for undefined addresses
    • RestaurantBotCard: Selection of restaurant chatbot on home page
    • ChatHeader: Bot name, status indicator
    • ChatBubbles: Bubbles from either side's messages
    • ChatWindow: Chat container for messaging UI.
      • Implement up & down arrows to cycle through messages
    • Refresh Token funcitonality
  • Deployment

    • Deploy CLU service to Azure Language Services
    • Deploy the bot to Azure Bot Services
    • Deploy frontend on Azure
    • Deploy backend on Azure
    • Deploy MySQL databse on Azure MySQL Flexible Server
    • Set up CD (Continuous Deployment) on Azure
    • Integrate them together

About

Restaurant Chatbot for automated restaurant, menu, reservation, & order management

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages