Code Monkey home page Code Monkey logo

hungrily's Introduction

Logo

Project Hungrily

CS2102 Project, Topic E: Restaurant Reservation.

Team Members: Chia De Xun, Phaedra Tan Yee Joo, Qiu Tian Hao, Sean Tan

Product Introduction

Hungrily is a full stack Web Application Milestone Project done by students of the CS2102 Database Systems module at the National University of Singapore. This project demonstrate our learning and progress in deploying a complex database system as part of a web application. The database consists of multiple complex queries, triggers, and a well designed schema that demonstrates our learning outcomes in the module.

Hungrily is a restaurant reservation application that allows diners to book reservations at restaurants, similar to Chope. Restaurants can advertise their availability (e.g., cuisine type, branch locations, opening hours, menu prices, etc) and diners can search for restaurants to book reservations by providing various information (e.g., date and time, cuisine type, number of people, preferred locations, etc) and rate restaurants based on their dining experience. Each reservation booking is confirmed based on various criteria (e.g., booking time, availability, number of diners, etc). Diners could cancel and make edits to their reservations, as well as rate their dining experiences should they wish to do so. Hungrily provides for various incentives through the use of points given after reviews to attract and maintain customer loyalty.

Besides this, Hungrily also allows franchise owners to view information on their restaurants and their corresponding reservations. Franchise Owners are also able to see the most loyal customer for each of their restaurants, should there be one.

Feel free to view our full project report for more detailed information

Database

Final-Schema

Entity Relationship Diagram

The database has been loaded with random data exceeding 15000 rows across 10 tables.

Notable Features

C.R.U.D Hungrily features full CRUD functionality for Customers but limited CRUD functionality for Franchise Owners - they are not able to create restaurants or modify existing menu items or table seating on the portal.
Determining Restaurant Compatability for Customers

Through a Customer's past reservation history, Hungrily is able to determine the customer's favourite cuisine preference and provide recommendations for restaurants that have a similar cuisine style.

Tracking Customer Loyalty

Franchise Owners can query for the most loyal customer of each restaurant, which is defined as the customer with the highest percentage of reservations in that particular restaurant and the raw number of times he/she visited.

Triggers
  1. Check if booking is valid through conditions such as table capacity, timing with respect to restaurant operating hours, and prevents double booking in the same timeslot range.
  2. Ensure customers can only give ratings for their reservations after the booking timing.
  3. Award points to customers if they provided reviews for their reservation. The points awarded is based on the average of the restaurant's food price

Tech Stack

  • ReactJS
  • ExpressJS
  • NodeJS
  • PostgreSQL

Setup

Requirements: Have NodeJS, PostgreSQL installed

  1. Clone the repo
git clone https://github.com/DivineDX/Hungrily.git
  1. Change your directory to ./frontend-web. Install NPM Packages
npm install or yarn install
  1. Start the React Web App. This starts the web client on localhost:3000
npm start or yarn start
  1. Change your directory to ./backend-server and install NPM Packages
npm install or yarn install
  1. Change your directory to ./DBConfig. Run psql < HungrilyPSQLUserCreation on the Terminal. This creates the superuser that will have access to the database

  2. Run psql hungrilydb < hungrilydb.sql. This initializes the database schema and inserts the large datasets.

  3. Start the backend server. This starts the server on localhost:3001

npm start or yarn start
  1. Hungrily should now be operating. If the database is initialized correctly, you should be able to login with existing accounts or create a new account (Customer accounts only). Existing accounts all have passwords '12345'. You may try logging in using the sample accounts listed below which have data pre-loaded.
Sample Customer UserID: ArianaBlizzard0
Sample FranchiseOwner UserID: AdahJunk-foodaccount

hungrily's People

Contributors

divinedx avatar trufflepirate avatar phaebaez avatar qiutianhaoo avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.