Skip to content
Aran edited this page Dec 6, 2021 · 25 revisions

Restaurant Manager

1 Introduction

1.1 Purpose

This is a website service that allows interaction between customers and the restaurant employees, as well as providing privileged features for restaurant owners to manage their employees and resources. Through this website service, a customer will be able to see an estimated wait-time until served, and the managers will have access to features such as managing tables, orders, employee wages, etc.

1.2 Scope

The program is designed with three user categories in mind, the customer, employee and restaurant manager. The employee and manager level will require login credentials. The customer program will only have limited features relevant to a customer, such as ordering, payment, menu display, as well as an estimated service time. The employee software will have everything the user has, but also access to incoming orders, table reservations, inventory supply, assigned tasks, etc. The manager has access to all features and and privileges: employee wages, table layout editing, etc.

2. Description

2.1 Components

The main components to the project are the client side user interface along with the database for data tracking and manipulation. The client user interface will be broken up into three levels for each type of user accessing it. Each level will have varying levels of access into the database.

2.2 Client User Interface

The manager/admin will have all privileges and have direct access to the entire database, as well has the information of other users.

The employee level user will have restricted access to database modification but will have information on lower level users, like the customers.

The basic customer user will have limited access to both the database and information. They will have the ability to view information from the database, like wait time, food options, and reservations.

2.3 Database

The database will contain information on most things restaurant related that will change over time such as the stock, employees, customers, and table reservations. Managers can view their employee information as well as the current supply of food available. The employees will need a database to view orders, customers, and table status. The customers will need to be able to see tables and their respective wait times.

The database will have many sub-tables for each respective aspect of the restaurant. Employee information, stock, customers, tables and orders will all be separated to allow for easier and faster manipulation.

3. Requirements

3.1 UI Requirements

  • ID: UIR1
    Home page/ Welcome page

    • Description: a welcome page for greeting users to the application, displaying some overview or quote about the application and providing options for users to logging in if he/she already has the account or registering a new account if they are new to the application.
    • Rationale: home page where the application starts with
    • Dependency: UIR2, UIR3
      Wireframe - Home
  • ID: UIR2
    Log-in page

    • Description: a page where users can input their username and password for being identified. The users are required to provide a registered account to log in. If the input account exists, the users will then be sent to the main page. If not, there will be alerts for wrong access.
    • Rationale: for identification by username and password Log-in Page
  • ID: UIR3
    Register page

    • Description: a page where users are asked to fill out a form of first name, last name, username, password, email and phone number to create an account/ their identity to log in to the page
    • Rationale: for creating identification by first name, last name, username, password, email and phone number Registration Page

    Separate Portals

    Log in page will lead to three main pages depending on each user's role, Manager/Employee/Customer.

    Separate main pages for each type of user once logged in.

    Manager

    • ID: UIR4
      Admin page
      • Description: displaying options to head to other functional pages such as employee information, customer information, inventory information, table/order information, menu, restaurant layout, making a to-go order, making a dine-in order
      • Rationale: main page for admin to choose and access the manager functionalities Manager Portal
    • ID: UIR5
      Employee Information
      • Description: displaying employee information such as name, email address, phone number, log in and log out schedules, handling orders
      • Rationale: for manager to keep track employee information
    • ID: UIR6
      Customer Information
      • Description: displaying employee information such as name, email address, phone number, orders
      • Rationale: for manager to keep track customer information
    • ID: UIR7
      Order/ Table Information
      • Description: displaying order and table information such as the ordered food, time ordered is placed, the number of people (if it is a table), and the arrival time and finished time of the table
      • Rationale: for manager to keep track order and table information
    • ID: UIR8
      Menu Editor
      • Description: displaying menu and giving manager users options to edit it such as removing, adding and customizing food/ drink information.
      • Rationale: for manager to edit the menu
    • ID: UIR9
      Restaurant Layout Editor
      • Description: displaying the restaurant's layout and giving manager users options to edit it. The restaurant will appear as a square or rectangle with grids. Manager users are able to choose a grid to place a table, remove a table or customize table information such as maximum number of people the table can have
      • Rationale: for manager to edit the restaurant layout

    Employee

    • ID: UIR10
      Employee page
      • Description: displaying options to head to other functional pages such as current order/ table information, inventory, make a to-go order, restaurant seating layout, make a dine-in order
      • Rationale: main page for admin to choose and access the employee functionalities
    • ID: UIR11
      Current Order/ Table Information
      • Description: displaying current order and table information such as the ordered food, time ordered is placed, the number of people (if it is a table), and the arrival time of the table
      • Rationale: for employee to keep track current order and table information
    • ID: UIR12
      Restaurant Layout
      • Description: displaying the restaurant's layout and letting employee to choose a table for inputting new table information or making food/drink order
      • Rationale: for employee to oversee the restaurant table layout, available/ unavailable seats, so through that he/she can have further action such as choosing a table for inputting new table information or making food/drink order

    Manager, Employee

    • ID: UIR13
      Make Dine-in Order
      • Description: displaying menu and giving options for manager and employee to add and remove food/drink order for tables (dine-in)
      • Rationale: for manager and employee to make dine-in food/drink order
    • ID: UIR14
      Inventory
      • Description: displaying updated restaurant inventory
      • Rationale: for manage and employee to keep track the inventory

    Customer

    • ID: UIR15
      Customer page
      • Description: displaying waiting time for dine-in and for to-go order, and also an option to make a to-go order through the application
      • Rationale: main page for customer to see the restaurant waiting time and make order online

    Manager, Employee, Customer

    • ID: UIR16
      Menu/ Make To-go Order

      • Description: displaying menu (food, prices) and giving options for manager and employee to add and remove food/drink order for to-go
      • Rationale: for manager, employee and customer to make to-go food/drink order
    • ID: UIR17
      About Page

      • Description: displays basic information regarding the restaurant that anyone can view
      • Rationale: allows for initial customers to view information about the restaurant to plan their visit

3.2 Functional Requirements

  • ID: FR1
    Employee Timesheet

    • Description: Users with manager role can see and edit employees' clock in and clock out time, and users with employee role can see their own clock in and clock out time record.
    • Rationale: keep track of employee working hours
    • Dependency: FR13
  • ID: FR2
    User registration

    • Description: Users are able to create a new account with a default role as a customer by providing first name, last name, email address, phone, id and password.
    • Rationale: to create an identification for the user
    • Dependency: FR13
  • ID: FR3
    User Log-in/ Log-out

    • Description: verify identification for users to get access to the functions their looking for depending on their role, and to access their history input in the application
    • Rationale: to verify user identification and give data access for the exact owner
    • Dependency: FR13
  • ID: FR4
    User (Manager) create/ edit menus

    • Description: Users with manager role are able to create and edit the restaurant menu by adding food plate and customizing food plate information
    • Rationale: to create and edit menu/ food served in the restaurant
    • Dependency: FR3, FR13
  • ID: FR5
    User (Manager) manage/edit other users' role (manager/employee/customer)

    • Description: Users with manager role can decide which role other users should possess. There are three roles in the system: manager, employee and customer. Managers are able to manage, edit and choose the role for every account on the account list
    • Rationale: to give accurate and functional access for accounts
    • Dependency: FR3, FR13
  • ID: FR6
    Employees' information Access (for Manager)

    • Description: Users with manager role can keep track and make changes on employee' account information such as name, email address, phone number and wages.
    • Rationale: Access employees' information for name, contact and better management.
    • Dependency: FR3, FR13
  • ID: FR7
    Daily orders'/ tables' information access (for Manager)

    • Description: Users with manager role can observe every previous or current table, dine-in order and to-go order information
    • Rationale: main function for manager role users, which is to manage and observe customers' order information
    • Dependency: FR3, FR13
  • ID: FR8
    Current Orders Access (for Manager/Employee)

    • Description: Users with manager and employee role can create a new order/table, access to current available table information such as number of customers and its orders, or to-go information such as food ordered, customer waiting time, to edit, add or delete the information
    • Rationale: main function for manger and employee role users, which is to manage customers' order information
    • Dependency: FR3, FR13
  • ID: FR9
    Inventory Access (for Manager/Employee)

    • Description: Users with manager and employee role can access to inventory information to edit, add, delete inventory items and numbers
    • Rationale: for manager and employee to keep track of the restaurant inventory
    • Dependency: FR3, FR13
  • ID: FR10
    Order food (for Manager/Employee/Customer)

    • Description: All users are able to make a food order through the application after they logging in to verify their identity; however, as users with customer role, they have to make payment before completing the order process
    • Rationale: main function that provide a functional service for all users to order the food conveniently and productively
    • Dependency: FR3, FR13
  • ID: FR11
    Pay/Save Order (for Manager/Employee/Customer)

    • Description: All users are able to make payment for an order through the application. After clicking pay, the order information will be saved in the database for supporting other functions of the application
    • Rationale: to finish and save an order
    • Dependency: FR3, FR13
  • ID: FR12
    Customer Wait Time

    • Description: This builds on the people-counting algorithm above and incorporates timestamps to calculate an estimated wait time for the customer to be served at the restaurant. Calculations of this estimated time will be stored onto the database.
    • Rationale: feature to attract more potential customers.
    • Dependency: FR-H2, FR13
  • ID: FR13
    Database

    • Description: Holds data for employee schedules, user profiles (names, passwords, privileges), menu items, table statuses (reservations, dine-in parties), orders (completed, in progress, date, time entered, contents, cost), inventory (quantity, name, type), and people counter.
    • Rationale: Centralizes and efficiently maintains data for features' access.
    • Dependency: FR1, FR2, FR3, FR4, FR5, FR6, FR7, FR8, FR9, FR10, FR11, FR12, FR14
  • ID: FR14
    Reservations

    • Description: Users will be able to claim a table for a future date and time.
    • Rationale: Enables customers to avoid possibly large wait times.
    • Dependency: FR13
  • ID: FR15
    Customer' information Access (for Manager)

    • Description: Users with manager role can observe customers' account information such as name, email address, phone number.
    • Rationale: Access customers' information for name, contact and better services.
    • Dependency: FR3, FR13
  • ID: FR16
    Edit Settings (for Manager)

    • Description: edit the core settings of the restaurant information page
    • Rationale: allow for easy changes to the restaurants time and days open
    • Dependency: FR13
  • ID: FR17
    Contact/View Messages

    • Description: a system for customer to send messages to the restaurant to provide feedback and comments
    • Rationale: allows for the manager to have a easy system to manage and view feedback they can take into consideration
    • Dependency: FR13

3.3 Non-functional Requirements

  • ID: FR-H1
    Raspberry Pi 4 Hardware
    • Description: This is the main computing unit for the people detection feature. This project uses the Raspberry Pi 4 model B with 8GB RAM. The 4GB model will also be sufficient. The PiCam is also used as video stream input for the algorithm. The hardware unit must be up and functional for at least 95% of the time during restaurant open hours.
    • Rationale: reference hardware for manager setup.
    • Dependency: N/A

Raspberry Pi Hardware and Camera

  • ID: FR-H2
    People Counting Algorithm
    • Description: Detects how many people cross a boundary line and how many people exit that boundary to determine the number of people in the restaurant at any given moment. Base python program algorithm courtesy of saimj7's project repo. This algorithm should give at least 90% accuracy detection.
    • Rationale: modifying a pretrained model is much more faster and efficient than building one from scratch.
    • Dependency: FR-H1, Python, Python libraries: schedule, numpy, argparse, imutils, dlib, opencv-python, scipy.
  • ID: NFR1
    Password security (for Manager/Employee/Customer)

    • Description: Password that the manager/employee uses should be a strong password (at least 8 characters, at least 1 capital letter, at least 1 number, and at least 1 special character.) Passwords are also stored in the database in a hash form so that only the user can know the password.
    • Rationale: A strong password ensures that no one can access an employee/manager's respective account.
    • Dependency: FR2
  • ID: NFR2
    Real-Time Wait Time Estimates (for customers)

    • Description: The wait time estimate algorithm should update in real time or close to real time.
    • Rationale: Customers expect to know the current waiting time. This means that the wait time estimate algorithm should update in real time, or as close as possible, to ensure the customer gets accurate information. This algorithm should yield an approximation precision within 20% of the actual wait time.
    • Dependencies: FR-H3
  • ID: NFR3
    Intuitive Navigation

    • Users should not need more than two clicks to get to a desired destination, and it should not take longer than 2 seconds to determine the route.
    • Rationale: Users do not like to be confused or exasperated over trivial matters.
    • Dependencies: UIR4, UIR5, UIR6

3.4 Logical Database Requirements

3.4.1 Data entities and their relationships

  • Reservations: reservation # (key), time, party size, table #, party name, user id (could be same as party name if self made, would be employee's id otherwise)
  • Orders: order # (key), date/time created, date/time modified, date/time closed, total cost, tip, party size, reservation # (FK to Reservations, null if walk-in), dine-in or to-go, server id, table #, items ordered, status, items prep time, customer username, server username
  • Kitchen: date (key), item # (key), item name, Order # (FK to Orders), time ordered, time prepared (cooked, prepared, mixed), time served, status (ordered, prepared, served)
  • Menu: item name (key), item #, picture name, price, descriptions, times ever ordered (used to calculate popularity: # of times ordered divided by number of item type), item type (beverage, appetizer, children's entree, entree, dessert)
  • Supplies: item name (key) (food ingredients, receipt paper, dishwasher soap, etc.), item category, quantity in stock, last shipment received date
  • Users: id (key), password, privilege level, first name, last name, email address, phone #
  • Employees: id (key, FK to Users), social security number, hourly wage / salary, start date, end date (null if still employed), primary role/position (cook, waiter, host, busser, dishwasher, manager)
  • Labor Schedule: employee id (key, FK to Employees), date (key), time period (1-6 prep, 6pm-11pm dinner, otherwise "custom"), role/position (cook, waiter, host, busser, dishwasher, manager)
  • Shift Hours: employee id (key, FK to Employees), date (key), time-in (key), time-out
  • Pay-Check Hours: employee id (key, FK to Employees), two week period (key, denoted by Sunday date), hours accrued, wages, taxes taken
  • Rationale: Organize and store data for application to retrieve and modify

4. Prioritization

Date Back-end Front-end
09/16 Create prototype back end with xampp/apache/MySQL Create test page that communicates with backend database
09/23 Create prototype database with phpMyAdmin Fetch data from database to display on front end
09/30 Outline database structure Outline theming and CSS
10/7 Finalize database structure Outline website structure
10/14 Outline backend API Finalize website structure
10/21 Create backend API in starting with database Create home pages for each user type
10/28 Create distinct accounts with varied privileges Create pages to view database information
11/4 Create employee management methods Add functionality between all users
11/11 Add account system for customers Add functionality for customers
11/18 Add manager and employee functionality Add functionality for manager/employee level
11/15 (Thanksgiving) - -
11/30 Deploy to webservice Finalize theming and CSS
12/2 Presentation - -
12/7 Presentation - -

5. Diagrams

5.1 Use Case Diagram

Use Case Diagram - Guest Use Case Diagram = Customer Use Case Diagram - Employee Use Case Diagram - Manager

5.2 Class Diagram

Class Diagram

5.3 Sequence Diagram

Sequence Diagram - View Current Orders Edit Order Sequence Diagram - Login Place Order