Skip to content

eshan-sud/dineBot

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

Languages