A serverless Restaurant Table Reservation App for Halifax restaurants, on the cloud, using GCP & AWS services, for scalability, security, and cost-efficiency. Featuring Customer, Partner, and Admin apps with modules for Sign Up & Login, Reservations, Chatbot, and innovative components like dual deployment, email notifications, and regular data refresh.
Cloud Deployment Model: Multi-Cloud [AWS, GCP]
Deployment URL:
Service | Link |
---|---|
CloudRun | https://foodvaganza-sdp8-np22x3otfa-ue.a.run.app/ |
Netlify | https://main--serverless-sdp8-production.netlify.app/ |
This project is a Restaurant table reservation application tailored for Halifax, Nova Scotia's vibrant restaurant scene. Built atop the robust Google Cloud Platform (GCP) and Amazon Web Services (AWS) serverless architecture, this application prioritizes scalability, security, and cost-effectiveness. It consists of three core elements - the Customer App, Partner App, and Admin App - each meticulously designed with Frontend, Backend Services, Database, Authentication, and APIs for seamless functionality. Various features include User Authentication, Restaurant-Menu item Listings, and Reservation Management, empowering users to book, edit, delete, and visualize reservations easily. Moreover, it also includes Chatbot functionality and Notifications for enhanced user engagement. Upholding data integrity and security standards, the app leverages Google FireStore, implements role-based access control, Personally Identifiable Information (PII) encryption, and Firebase Authentication. Throughout development, collaboration is fostered using Git for version control, ensuring a smooth deployment via Continuous Integration/Continuous Deployment (CI/CD) pipelines.
- Customer App: This application is designed for customers to view restaurant information, its menu items, and reserve tables at restaurants.
- Partner App: Restaurants Owners/Partners will utilize this application to manage restaurant and menu item attributes and access their table reservations/booking information.
- Admin App: Super admins will utilize this application to oversee and analyze the overall usage and performance of the platform.
-
Frontend: Developed using React, Vite, and Chakra UI to create a responsive and visually appealing web application.
-
Backend Services: Utilizing serverless solutions such as AWS Lambda, and GCP Cloud Functions for seamless and efficient task management.
-
Database:
a. Dynamic Content (GCP Firestore): Utilizing Firestore, a flexible NoSQL database provided by Google Cloud Platform, for managing dynamic content like real-time updates of restaurant and reservation data.b. Structured Attribute Data Storage (Amazon DynamoDB): Leverage Amazon DynamoDB to store attribute content related to menu items, customer reviews, and other structured data.
c. Media Storage (Amazon S3): Store restaurant and menu images efficiently by utilizing Amazon S3 buckets, providing a reliable and scalable solution for media storage in the cloud.
-
Authentication: Leveraging Firebase Authentication for user authentication purposes.
-
APIs: Utilizing Amazon API Gateway to effectively handle RESTful APIs.
- Reservation Data Security: Google Firestore securely stores reservation data, employing role-based access control for data protection.
- Encryption for PII: Personally Identifiable Information (PII) is encrypted, ensuring robust security measures.
- Secure User Authentication: Firebase Authentication is implemented to ensure secure user access and authentication.
- Version Control: Collaborative development is facilitated through version control systems like Git, enabling efficient teamwork and code management.
- CI/CD Pipelines: Utilizing Continuous Integration/Continuous Deployment (CI/CD) pipelines for seamless and automated deployment in stages, streamlining the development process.
- Agile software development: Regular commits to Git repositories every week. The sprint duration is 4 weeks.
A high-level overview of the various feature components categorized under the respective user applications, outlining different sprints for task completion.
-
Sign Up & Login Module:
- Using EmailID & Password
- Using Google Single Sign-On
-
List of all Restaurants
- View all restaurants filtered by opening and closing hours
- Display the Restaurant homepage with all restaurant attributes
- View menu item details of restaurants on the homepage
- Display maximum discounted offer banner on restaurant pages.
-
Book, edit, delete, view a reservation
- Book a reservation based on the restaurant's opening and closing hours
- View customer bookings
- Edit bookings (condition: allowed only 1 hour before the reservation time)
- Delete bookings (condition: allowed only 1 hour before the reservation time)
-
Book, edit, delete, view menu for a reservation
- Display menu items based on their current availability in the restaurant
- Reserve a table without ordering any menu item from the restaurant menu
-
Chatbot
- Interact and display Restaurant availability time, location, and menu availability information.
- Display reservation availability.
- Submit a review about the restaurant and/or its menu items
- Book a reservation
-
Notifications
- Notify customer when a new Restaurant is opened (condition: every 1 hour)
- Notify customer about successful reservation (condition: before 30 minutes of reservation time)
- Notify customer about menu item changes if any done by the restaurant
- Notify customers about the restaurant's closure due to special reasons.
-
Sign Up & Login Module
- Using EmailID & Password
- Using Google Single Sign-On
-
Restaurant details and add, view and edit menu items
- Add/Create a new restaurant under Partner
- Add restaurant availability, open time, close time, reservation table capacity, and other restaurant attributes.
- Edit existing restaurant attributes.
- Declare open or closed status of restaurant by partner
- Upload and update the image of the Restaurant banner & Menu items
- Edit and Delete menu item attributes
- Provide/Apply offers at the restaurant level or menu-item level.
- Apply menu-item-specific discount percentage
- Display offer type-specific slashed prices for each menu item.
-
View, edit, and delete a reservation
- View bookings made by the customer
- Edit or delete bookings (condition: 1 hour before reservation time)
- Approve/Reject reservation
-
Holistic View
- View the number of tables booked in intervals daily, weekly, and monthly views
-
Chatbot
- Get booking information for day/week/month, open time, and other restaurant attributes.
- Edit restaurant-level attributes
- Read ratings, cancel or edit a reservation with menu items.
-
Notifications
- Notify about new reservations booked, modified or deleted
- Notify about reservations booked with menu item (condition: before 1 hour of reservation time)
- Notify if tables are overbooked and notify top 3 menu items mostly nooked every 4 hours
- Login Module
- Using EmailID & Password
- Using Google Single Sign-On
- Visualisations:
- Statistic Views
- The top 10 food items ordered across restaurants
- The top 10 restaurants that have the most orders
- The top 10 customers who have ordered the most
- The top 10 periods when the food is most ordered
- Reviews filtered based on restaurant names
Figure : Sign Up Flow
Figure : Sign In Flow
Figure : Change password flow
Figure : Delete Account Flow
Figure : Reset Password Flow
Figure : Google Sign In Flow
Figure : View all restaurants and a restaurant homepage – flowchart
Figure : reserve table flowchart
Figure : Edit restaurant, menu items functionality & image upload flow chart
Figure : Add menu item flowchart
Figure : Chatbot flowchart
Figure : Visualization flowchart