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.
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.
-
Create
.envin both frontend & backend workspaces -
After adding all the required details in the
.envfiles-
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
- Node.js
- Express.js
- React.js
- MySQL
- Microsoft Azure (conversation language understanding)
- REST APIs
- Microsoft Bot Emulator
- Postman (testing APIs)
-
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
-
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