Skip to content
Permalink
f264d8c92b
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
104 lines (64 sloc) 4.79 KB
# Restaurant Ordering System
Build a digital ordering system for use by a small restaurant. Note that this is a system that is used by the restaurant staff and not accessed by the general public. The system should be usable on a tablet or touch screen computer so keep the interface simple. All menu and ordering data must be stored in a database.
---
## Testing
You are required to create the following accounts to allow the system to be tested. All accounts should have the password `p455w0rd`:
1. `waitress` (a member of serving staff).
2. `waiter` (a second member of serving staff).
3. `chef`
Each of the serving staff should have placed at least one order and the chef should have flagged at least one order as served.
---
## Feature 1
The system should only be accessible and viewable by registered users. All non-logged in users to be directed to the login screen.
1. The _homepage_ should display an **Add Order** link or button.
2. This should take staff to a table select screen with a large button for each table (assume 10 tables labelled 1-10).
3. Clicking on a table button takes the staff member to the food select screen. This has big buttons, one per menu item.
4. Clicking on a button adds the item to the order and returns the member of staff to the same food screen.
5. As items are selected, the order (list of items) should be updated on the same screen. each item in the list should include the name of the ordered item and the quantity.
5. Once the order has been taken, the member of staff clicks on the **Done** button to add the order to the system and return to the _Homepage_.
In addition to the data captured through the forms, the database should also store:
1. The username of the member of staff logged in.
2. The date and time the order was placed (the **Done** button was clicked).
3. The order status should be set to `placed`.
> To demonstrate this feature and to prove that the form works correctly you will need to show that the data is being persisted correctly, either by running a database query or an API call depending on the platform and technology you are using.
## Feature 2
The home screen should list all the active orders (those that have a status of `placed` or `ready`).
For each order the following needs to be displayed:
1. Table number.
2. Number of places (the number of meals ordered).
3. Time of order (but not the date)
4. Status (see above)
## Feature 3
The _Homepage_ should also have a **Kitchen** button or link. This displays summaries of all the orders with a status of `placed`. The summary should include:
1. Time the order was placed (oldest at the top).
2. List of items ordered with quantities. Each item in the list should include the name of the item and the quantity.
3. A **Ready** button that sets the order status to `ready` (and removes it from this screen).
## Feature 4
This feature requires you to make changes to the functionality:
1. You need to assign staff as either **welcome**, **servers**, **kitchen** or **till**.
2. Each use can only see orders with a particular status.
3. The workflow should handle every step from the customer's arrival to payment and departure.
4. The welcome staff assign tables but are prevented from assigning to an occupied table.
## Feature 5
You are required to implement screens that can only be accessed by the restaurant owner or admin user:
1. An accounts screen that lists all the accounts that are set up on the system and allows the admin to:
1. Create new accounts (there should not be a self-registration option).
2. A dropdown list that specifies the user role, this can be used to assign roles to users.
2. A menu screen that lists all the currently available menu items and allows the admin user to:
1. Hide menu items (so they don't appear on the ordering screen).
2. Remove menu items (delete completely).
3. Add new items to the menu.
---
## Extras
In some assignment briefs you are given marks for the appropriate use of media and using sensors built into the user's device.
### Sensors
In some assignment briefs you are given marks for the appropriate use of sensors and sensor data. You should be implementing:
1. When prompted for a photo, the admin user should be given access to the device camera (if available).
### Media
In the requirements listed above you need to provide the user with the ability to upload photos. For the extra media marks you will need to expand this by:
1. Providing the user with the choice of uploading photos, video clips or audio clips.
2. Giving users the option to directly capture images, audio and video clips using the built-in camera and/or microphone if available.
### Data
There are lots of online RESTful APIs you can make use of when developing this system. You should consider:
1. [Spoonacular](https://spoonacular.com/food-api)
2. [LocationIQ](https://locationiq.com)