Skip to content
Permalink
master
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
# Restaurant Reviews
Build a website which allows customers to review local restaurants. All restaurant details and reviews 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. `user1`
2. `user2`
3. `user3`
4. `admin` (only required if attempting the stage 2 functionality).
There should be at least 6 restaurants on the system and each user should have placed at least four reviews. Every restaurant should have at least 2 reviews.
---
## Feature 1
The home screen should be visible even if a `user` is not logged in. Once logged in, users should see an **Add restaurant** button which takes them to the _New Restaurant_ screen. Here they can add new restaurants to the system. They should be asked for:
1. The name of the restaurant.
2. The postcode.
3. A photo of the exterior.
4. The main type of food served.
5. A multiline textbox that supports _markdown_ formatting for the description of the restaurant.
In addition to the data the user supplies in the form, the following data should be added to the database record:
1. The username of the person adding the restaurant.
2. The date and time the restaurant was added.
If there is already a restaurant in the database that shares the same name and postcode (not case sensitive), the restaurant should not be added.
> 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 _Homepage_ should display the restaurants that have been added. For each, the following data should be displayed:
1. The name.
2. The postcode.
3. A thumbnail image of the exterior.
## Feature 3
There should be a **Details** link or button next to each restaurant on the _Homepage_. Clicking this takes the user to the _Restaurant_ page. This should display the full details of the restaurant, including:
1. The name of the restaurant.
2. The postcode.
3. The photo of the exterior.
4. The main type of food served.
5. The description of the restaurant with any _markdown_ formatting replaced with html.
6. The date the restaurant was added (but not the time).
## Feature 4
You will now add the reviewing functionality.
If the user is logged in they will see a **Leave review** button on the _Restaurant_ page. Clicking this takes them to a _Restaurant Review_ screen. This displays the name and postcode of the restaurant plus a form that the user completes to leave the review. They need to provide the following information:
1. A multi-line text box where they can enter their comment.
2. A slider to award a score of between 0 and 5 for service.
3. A slider to award a score of between 0 and 5 for value.
4. A slider to award a score of between 0 and 5 for food.
Each user can only review each restaurant once. If a review has already been given, the **Leave review** button should not be displayed.
The home page should display the average score over all three categories for all reviews. This should be blank if there were no reviews.
The restuarant details page should show the average scores for each category.
----
## 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 adding a restaurant, the address should be stored as a geo-location.
2. The home screen should display a map showing the locations of each news item:
1. Clicking on a pin should show a summary bubble showing the retaurant name and the thumbnail image.
2. Clicking on this should send the viewer to the retaurant details page.
3. When prompted for a photo, the 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. [Zomato](https://developers.zomato.com/api)
2. [LocationIQ](https://locationiq.com)