day-cohort-70 / shepherds-pie-stormy-monday

shepherds-pie-stormy-monday created by GitHub Classroom
0 stars 0 forks source link

:pizza: Shepherd's Pies

Giuseppe Shepherd learned how to make the perfect pizza as a child from his nonna. Since then it's been his dream to open his own restaurant, but he needs help creating the order management system for his new business.

NOTE: This project is a good example of a fairly ambitious capstone project that more than fulfills the basic requirements for graduation. As you start planning your capstone project, keep this in mind when thinking about the size and scope of the application you are planning to build.

Project Description

Orders

Giuseppe's (Joe, to his friends) restaurant has a dining room and delivery service available, and an order can either be placed for a particular table number or for delivery. Each order at the restaurant can have multiple pizzas on it.

Each order can potentially have two employees assigned to it for different purposes - Joe can tell if an order is for delivery if an employee has been assigned as the deliverer for that order. Orders are also always associated with the employee that took the order (at a table or over the phone).

Joe needs to see what the total cost for the order will be based on the total cost of all of the pizzas on that order. He also needs to see if the customer left a tip. Joe's restaurant is located in a magical place with no sales tax. For record-keeping purposes, Joe also needs to know the date and time an order was placed.

Pizza

Eventually there will be other items available, but for the restaurant opening Joe is going to only serve pizzas. The pizzas come in three sizes - small, medium, and large. Each pizza on an order can have a cheese type, a sauce type, and then any number of toppings chosen from a list on the menu.

Joe provided us with a draft menu to help build our data model:


:pizza::tomato: Shepherd's Pies :tomato: :pizza:

Pizzas

Choose a Cheese Option

Choose a Sauce Option

Toppings ($0.50 each)

Delivery surcharge: $5.00/order


Application Requirements

Only employees will use this system, so think of them as the only users. They need to be able to:

  1. Create an order (there are lots of design questions here - should the user be able to add pizzas on this view, or only after the order has been created?)
  2. View all orders (should be filtered by day, with today being the default when first viewing the list), ordered by order datetime (newest first).
  3. View an order's details (including a list of pizzas, with the total cost for each item, and the total cost for the order).
  4. Update an order
    • Add a pizza to an order ( linked from order details view)
    • Remove a pizza from an order
  5. Update a pizza that is on an order
    • change cheese or sauce type, or size
    • add and remove toppings
  6. Cancel an order (delete from the system)
  7. View Employees - admin users should be able to view a list of employees
  8. Update Employees - an admin use should be able to view and update an employee's details (the restaurant needs to keep an employee's address, phone number, and email on file for notifications)
  9. An admin should be able to assign an employee to deliver an order.
  10. Sales report - An admin should be able to view the orders for a specific month, and get the total sales amount for that month
  11. Sales report - Additionally, the sales report should show the most popular items - display the most popular size, cheese, sauce, and the top three toppings for that month.

Project Planning

You will not be able to complete this project efficiently without proper planning ahead of time.

  1. Create an ERD for the system. The description above and the requirements should be enough information to create a good data model for this application
  2. Create wireframes of the different views that the UI will need in order to fulfill requirements. These can be very simple, but make sure you have an idea of how the user is going to access each view, and how any forms will need to look to allow the user to input data.
  3. Use the project requirements to create user stories. Make issues on Github once you have a repo, and add those issues to a Github project.
  4. Once you have started coding, create a new branch for each feature you work on. Open a pull request and have two teammates review your code before merging the code into the main branch.