Git Product home page Git Product logo

ci_ms4_elginis_restaurant's Introduction

Elgini's Restaurant

(Developer: Daniel Richards)

Mockup of Elgini's Restaurant

View live site

Table of Content

  1. Project Goals
    1. User Goals
    2. Site Owner Goals
  2. User Experience
    1. Strategy
    2. Structure
      1. Website pages
      2. Code Structure
      3. Database
      4. Physical database model
      5. Models
        1. User Model
        2. Meal Model
        3. Category Model
        4. Allergen Model
        5. Drink Model
        6. DrinkCategory Model
        7. Comment Model
        8. Booking Model
        9. Contact Model
        10. Reason Model
        11. About Model
        12. Chef Model
        13. Reasons Model
        14. Home Model
    3. Scope
      1. User Stories
    4. Skeleton
      1. Wireframes
    5. Surface
      1. Design Choices
      2. Colour
      3. Fonts
  3. Technologies Used
    1. Languages
    2. Frameworks & Tools
  4. Features
  5. Testing
    1. HTML Validation
    2. CSS Validation
    3. JS Validation
    4. Python Validation
    5. Accessibility
    6. Performance
    7. Device testing
    8. Browser compatibility
    9. Testing user stories
  6. Bugs
  7. Deployment
  8. Credits
  9. Acknowledgements

User Experience

Strategy

Primary Goal

The primary goal of the website from the site owners perspective is as follows:

  • To attract customers to the business by showing an attractive and appealing variety of food.
  • To allow a user to navigate the website and see food options easily
  • To allow a user to make a reservation

The primary goal of the website from a site users perspective is as follows:

  • To view the restaurants menu
  • To view details about food dishes, including allergens, description and prices
  • To be able to filter dishes by allergies
  • To make a reservation
  • To contact the restaurant
  • To view opening hours
  • To post a review or comment about their experience
  • To view other customer’s reviews and comments

Target Audience

  • Families
  • Couples
  • Small groups of friends
  • People living within a 20 mile radius
  • Italian food lovers
  • People who love organic and homemade food

User Requirements and Expectations

  • An easy navigation system with instant learning.
  • Able to navigate the site quickly and easily.
  • No broken links.
  • Responsive and visually appealing on all devices.
  • Ability to contact the business

Structure

Code Structure

The project is organised into a variety of applications, as is constructed using the Django Framework.

App details as follows:

  • Home - this app contains information about the restaurant home page with quick links to the menus on page and table booking via the nav bar.
  • Meals - this app contains the menu structure, users can choose between the lunch drink and dinner menu. Clicking individual items opens a sub page where users can see detailed food information including allergens and calories.
  • About - this app contains information relating to the business heritage the opportunity for users to view, add, edit, delete comments with authentication.
  • Contact - this app is for users to be able to submit a message to the site owners and recieve acknowledgment.
  • Booking - this app is for users to be able to submit a booking reqeuest with date validation so cannot be booked in past and also only within restaurant opening hours.

To complement the apps there are

  • project: Project level files - settings.py for project level settings and urls.py to route the website URLS
  • templates: Containing the base.html, allauth(django authentication)
  • templates (app level): each app has it's own templates directory for HTML to consider portability and re-use.
  • urls (app level): each app has it's own url.py file to consider portability and re-use.
  • static: Base css and Javascript files
  • manage.py: This file is used to start the site and perform funcions during development
  • README.md: Readme documentation
  • Procfile: To run the application on Heroku
  • Requirements.txt: Containing the project dependencies Note: Environment variable values are not exposed in the source code, they are stored locally in env.py that is not checked in(and listed in .gitignore, and on Heroku in app settings

Physical database model

This model contains all fields stored in the database collections with their data type and mimics the structure of what is actually stored in the Postgres database
Database model

Models

  • The following models were created to represent the database model structure for the website
User Model
  • The User model contains information about the user. It is part of the Django allauth library
  • The model contains the following fields: username, password, first_name, last_name, email, is_staff, is_active, is_superuser, last_login, date_joined
Meal Model
  • The Meal model contains information about meals available within each of the menus
  • It contains Category as a foreign-key.
  • It contains Allergen as a Many-toMany relationship.
  • The model contains the following fields: Name, Category, Description, Allergen, Lunch, Dinner, Calories, Price, Vegetarian, Vegan, Image, Slug.
Category Model
  • The category model contains the available categories for a meal item
  • The model contains the following fields: name
Allergen Model
  • The Allergen model contains allergens that may be contained in the meals, this has a many to many relationship with meals model.
  • It contains images so to be easily understood to non english speakers.
  • The model contains the following fields: name, image.
Drink Model
  • The Drink model contains a the drinks available at the restaurant
  • It has DrinkCategory as a foreign-key.
  • The model contains the following fields: name, description, category, image.
DrinkCategory Model
  • The News model contains viable categories for the drinks.
  • It acts as a foreign-key for Drinks model
  • The model contains the following fields: name
Comment Model
  • The News model contains a comment that renders on the about page.
  • The model contains the following fields: user, comment_text, created_date
Booking Model
  • The Booking model contains a collection of data submitted by the user when requesting a reservation.
  • The model contains the following fields: name, email, phone, party_size, date, ,time
Contact Model
  • The Contact model contains a collection of data submitted by the user when messaging the site owner.
  • It contains Reasons as a foreign-key.
  • The model contains the following fields: reason, email, phone, postcode, street_address, message.

Reason Model

  • The Contact model contains a collection pre configured headers that the user can use to send the message.
  • It acts as a foreign-key for Contact model.
  • The model contains the following fields: reason

About Model

  • The About model contains a collection of data and image to show the restaurant heritage..
  • The model contains the following fields: title, body, image.

Reasons Model

  • The Reasons model contains a collection reasons as to why the user should use the establishment.
  • The model contains the following fields: reason, body.

Chefs Model

  • The Chefs model contains the chef images, names and biography.
  • The model contains the following fields: name, image, bio.

Home Model

  • The Home model contains the items for the carousel on the home page.
  • The model contains the following fields: Title, body, image.

Scope

User stories:

First time user

  1. As a first time user, I want to be able to view the type of food the restaurant provides
  2. As a first time user, I want to see professional and appealing images of the food
  3. As a first time user, I want to be able to navigate the website quickly and easily
  4. As a first time user, I want to be able to view the full menu
  5. As a first time user, I want to be able to view food allergies and calories
  6. As a first time user, I want to be able to view a description and price of the food
  7. As a logged in user, I want to be able to leave a comment or review
  8. As a logged in user, I want to be able to see other user’s comments and reviews
  9. As a logged in user, I want to be able to edit and delete a comment I have made
  10. As a first time user, I want to be able contact the restaurant
  11. As a first time user, I want to be able to make a reservation
  12. As a first time user, I want to be able to view the restaurants location and opening hours
  13. As a first time user, I want to know about the business and it’s ethos
  14. As a first time user, I want to be able to see special offers and promotions.
  15. As a logged in user, I want to be able to to sign in to, or create an account
  16. As a logged in user, I want to be able to log out of an account
  17. As a first time user, I want to be able to see separate menus for lunch, dinner and drinks
  18. As a first time user, I want to be able to view the business’ social media

Site Owner

  1. As a site owner, I want to attract customers to our restaurant
  2. As a site owner, I show appealing and professional images of our food
  3. As a site owner, I want users to be to view our full menu
  4. As a site owner, I want users to be able to view the food descriptions and prices
  5. As a site owner, I want users to be able to view allergies and calories
  6. As a site owner, I want users to be able to make a reservation with data validation so they can only book future dates and in valid opening time.
  7. As a site owner, I want users to be able to leave a comment or review
  8. As a site owner, I want users to be able to view other comments and reviews
  9. As a site owner, I want users to be able to edit and delete comments or reviews
  10. As a site owner, I want users to be able to contact the business
  11. As a site owner, I want users to be able to view the location and opening times
  12. As a site owner, I want users to be able to find out about our business ethos
  13. As a site owner, I want users to be able to have an idea of the restaurant’s welcoming atmosphere so they will make a reservation
  14. As a site owner, I want users to be able to navigate the site easily and quickly
  15. As a site owner, I want to be able to promote special offers and events.
  16. As a site owner, I want users to be able to sign in to, or create an account
  17. As a site owner, I want users to be able to log out of their account
  18. As a site owner, I want users to be able to see separate menus for lunch, dinner and drinks
  19. As a logged in administrator, I want to be able to review and approve or delete user comments.
  20. As a site owner, I want users to be able to view the business’ social media
  21. As a logged in administrator, I want to be able to create, edit or remove content on the website.

Error Flow

  1. As first time, I user should be able to navigate back through the site structure in case of page not found without using the browser back button.
  2. As a site owner, I want a 404 page that enables users to be able to return to valid areas of the site without using browser controls.

Skeleton

Wireframes

Home
About
Contact
Menus
Dinner Menu
Drinks
Lunch Menu
Meal Details
Sign In
Sign Up
Logout
Reservation
Errors

Surface

Design choices

The overall design of the website was to keep it clean and simple, to allow the imagery of the food to shine through, and to choose colours that didn’t distract or take focus. The website also needs to act as a portfolio to attract users to book and visit the restaurant, so we chose a gallery image layout for the menu, and made sure to include photography of the staff and restaurant interior.

The site is straightforward to navigate, with a high contrasting navigation bar to enable ease of use for the user to find other main pages.

The background is neutral but bright, the images are the focal point of the home page so the user has an immediate view of the food. The rest of the colour scheme is reflecting the rustic Italian interior of the restaurant.

Colours

The colour palette is fairly neutral and warm. The bold colours that are used in focal points such as buttons and titles, and the neutrals are used for backgrounds and body text.

  • #212529 - Title text
  • #4F4F4F - Body text
  • #5A753A - Buttons
  • #703D30 - Lines and subtitles
  • #FBF4E1 - Background
  • #FFFFFF - Logo and header links

After choosing a colour scheme I tested a number of palette options to make sure the it met accessibility standards.


Database model

Typography

Maria Rose is the font uses for the logo, and is replicated in the main headings of the website. This font is licensed from Creative Market, with a standard license for personal use.

Josefin Sans is the font used across all of the body text, this font is from the Google Fonts Library.

Features

The site contains 12 pages and

  1. Home page
  2. Full menu
  3. Food description
  4. lunch menu
  5. dinner menu
  6. drinks menu
  7. about
  8. contact
  9. reserve
  10. login
  11. sign up
  12. log out

Page 1 - Home page

The home page consists of the following features:

Feature 1 - Header and navigation Bar, the header and navigation bar are shown across all pages.

The header shows the logo of the website, as well as a navigation bar with quick access to the main pages of the website.
Navbar model

This feature covers the following user stories

3. As a first time user, I want to be able to navigate the website quickly and easily

10. As a first time user, I want to be able contact the restaurant

11. As a first time user, I want to be able to make a reservation

15. As a logged in user, I want to be able to sign in to, or create an account

16. As a logged in user, I want to be able to log out of an account

21. As a site owner, I want users to be to view our full menu

24. As a site owner, I want users to be able to make a reservation with data validation so they can only book future dates and in valid opening times.

28. As a site owner, I want users to be able to contact the business

32. As a site owner, I want users to be able to navigate the site easily and quickly

34. As a site owner, I want users to be able to sign in to, or create an account

35. As a site owner, I want users to be able to log out of their account

Feature 2 - Carousel

The carousel consists of 3 hero images, which play automatically upon landing on the page. It can be used by the site owner to promote any special offers and events.
Navbar model

This feature covers the following user stories

1. As a first time user, I want to be able to view the type of food the restaurant provides

2. As a first time user, I want to see professional and appealing images of the food

14. As a first time user, I want to be able to see special offers and promotions.

19. As a site owner, I want to attract customers to our restaurant

20. As a site owner, I show appealing and professional images of our food

33. As a site owner, I want to be able to promote special offers and events.

39. As a logged in administrator, I want to be able to create, edit or remove content on the website.

Feature 3 - lunch, dinner and drinks images with buttons

The menu images show an image of the restaurant food with a clear button overlay which takes the user directly to the relevant menu page quickly and easily.
Navbar model

This feature covers the following user stories

1. As a first time user, I want to be able to view the type of food the restaurant provides

2. As a first time user, I want to see professional and appealing images of the food

3. As a first time user, I want to be able to navigate the website quickly and easily

4. As a first time user, I want to be able to view the full menu

17. As a first time user, I want to be able to see separate menus for lunch, dinner and drinks

19. As a site owner, I want to attract customers to our restaurant

20. As a site owner, I show appealing and professional images of our food

21. As a site owner, I want users to be to view our full menu

36. As a site owner, I want users to be able to see separate menus for lunch, dinner and drinks

Feature 4 - footer

The footer features the business’ social media links, as well as links to the main pages the user would want to navigate.
Navbar model

This feature covers the following user stories

3. As a first time user, I want to be able to navigate the website quickly and easily

18. As a first time user, I want to be able to view the business’ social media

32.As a site owner, I want users to be able to navigate the site easily and quickly

38. As a site owner, I want users to be able to view the business’ social media

Page 2 - Full Menu

The full menu page has an internal navigation bar to guide the user through the menu sections. It also shows the restaurant’s full list of food dishes with images, descriptions, prices and dietary requirements. The images are professional quality and are shown in a clear grid layout, separated with header images.

It consists of the following features:

Feature 1 - internal navigation bar

The internal navigation bar helps the user to browse the menu without scrolling through the whole page.
Navbar model

This feature covers the following user stories

1. As a first time user, I want to be able to view the type of food the restaurant provides

3. As a first time user, I want to be able to navigate the website quickly and easily

6. As a first time user, I want to be able to view a description and price of the food

20. As a site owner, I show appealing and professional images of our food

22. As a site owner, I want users to be able to view the food descriptions and prices

32. As a site owner, I want users to be able to navigate the site easily and quickly

Feature 2 - Full menu image gallery

The full menu image gallery shows a professional image of each individual dish, with the dish name and brief description, as well as the price and dietary requirements. When the user selects on the image a new page opens for the item, which includes additional information including the allergy and nutritional values.
Navbar model

This feature covers the following user stories 1. As a first time user, I want to be able to view the type of food the restaurant provides

2. As a first time user, I want to see professional and appealing images of the food

4. As a first time user, I want to be able to view the full menu

6. As a first time user, I want to be able to view a description and price of the food

19. As a site owner, I want to attract customers to our restaurant

20. As a site owner, I show appealing and professional images of our food

21. As a site owner, I want users to be to view our full menu

22. As a site owner, I want users to be able to view the food descriptions and prices

Page 3 - Food description

The food description page is shown when a user clicks on the image of an individual item. The page enables users to find out a more detailed description of the item including the allergies and calorie content. It consists of the following features:
Navbar model

Feature 1 - the additional nutritional information The additional nutritional information includes:

  • Known allergies of the item, shown in text and a clear illustrated symbol.
  • Calorie content

This feature covers the following user stories

2. As a first time user, I want to see professional and appealing images of the food

5. As a first time user, I want to be able to view food allergies and calories

6. As a first time user, I want to be able to view a description and price of the food

19. As a site owner, I want to attract customers to our restaurant

20. As a site owner, I show appealing and professional images of our food

22. As a site owner, I want users to be able to view the food descriptions and prices

23. As a site owner, I want users to be able to view allergies and calories

Page 4 - Lunch Menu

The lunch menu page shows items on the lunch menu only. It has an internal navigation bar to guide the user through the menu sections. It also shows the item’s image, descriptions, price and dietary requirements. The images are professional quality and are shown in a clear grid layout, separated with header images. It consists of the following features:

Feature 1 - internal navigation bar

The internal navigation bar helps the user to browse the menu without scrolling through the whole page.
Navbar model

This feature covers the following user stories

1. As a first time user, I want to be able to view the type of food the restaurant provides

3. As a first time user, I want to be able to navigate the website quickly and easily

6. As a first time user, I want to be able to view a description and price of the food

22. As a site owner, I want users to be able to view the food descriptions and prices

32. As a site owner, I want users to be able to navigate the site easily and quickly

Feature 2 - Lunch menu image gallery

The full menu image gallery shows a professional image of each individual dish, with the dish name and brief description, as well as the price and dietary requirements. When the user selects on the image a new page opens for the item, which includes additional information including the allergy and nutritional values.
Navbar model

This feature covers the following user stories

1. As a first time user, I want to be able to view the type of food the restaurant provides

2. As a first time user, I want to see professional and appealing images of the food

4. As a first time user, I want to be able to view the full menu

6. As a first time user, I want to be able to view a description and price of the food

17. As a first time user, I want to be able to see separate menus for lunch, dinner and drinks

19. As a site owner, I want to attract customers to our restaurant

20. As a site owner, I show appealing and professional images of our food

21. As a site owner, I want users to be to view our full menu

22. As a site owner, I want users to be able to view the food descriptions and prices

36. As a site owner, I want users to be able to see separate menus for lunch, dinner and drinks

Page 5 - Dinner Menu

The dinner menu page shows items on the dinner menu only. It has an internal navigation bar to guide the user through the menu sections. It also shows the item’s image, descriptions, price and dietary requirements. The images are professional quality and are shown in a clear grid layout, separated with header images. It consists of the following features:

Feature 1 - internal navigation bar

The internal navigation bar helps the user to browse the menu without scrolling through the whole page.
Navbar model

This feature covers the following user stories

1. As a first time user, I want to be able to view the type of food the restaurant provides

3. As a first time user, I want to be able to navigate the website quickly and easily

6. As a first time user, I want to be able to view a description and price of the food

20. As a site owner, I show appealing and professional images of our food

22. As a site owner, I want users to be able to view the food descriptions and prices

32. As a site owner, I want users to be able to navigate the site easily and quickly

Feature 2 - Dinner image gallery

The full menu image gallery shows a professional image of each individual dish, with the dish name and brief description, as well as the price and dietary requirements. When the user selects the image a new page opens for the item, which includes additional information including the allergy and nutritional values.
Navbar model

This feature covers the following user stories

1. As a first time user, I want to be able to view the type of food the restaurant provides

2. As a first time user, I want to see professional and appealing images of the food

4. As a first time user, I want to be able to view the full menu

6. As a first time user, I want to be able to view a description and price of the food

17. As a first time user, I want to be able to see separate menus for lunch, dinner and drinks

19. As a site owner, I want to attract customers to our restaurant

20. As a site owner, I show appealing and professional images of our food

21. As a site owner, I want users to be to view our full menu

22. As a site owner, I want users to be able to view the food descriptions and prices

36. As a site owner, I want users to be able to see separate menus for lunch, dinner and drinks

Page 6 - Drinks Menu

The drinks menu page shows items on the drinks menu only. It has an internal navigation bar to guide the user through the menu sections. It also shows the item’s image, descriptions, price and dietary requirements. The images are professional quality and are shown in a clear grid layout, separated with header images.
Navbar model

This feature covers the following user stories

3. As a first time user, I want to be able to navigate the website quickly and easily

17. As a first time user, I want to be able to see separate menus for lunch, dinner and drinks

32. As a site owner, I want users to be able to navigate the site easily and quickly

36. As a site owner, I want users to be able to see separate menus for lunch, dinner and drinks

Page 7 - About page

The about page provides the user with all of the background information of the business. The page also features a link to enable the user to visit the page showing the business location and opening hours.
Navbar model

The page covers the following user stories

12. As a first time user, I want to be able to view the restaurants location and opening hours

13. As a first time user, I want to know about the business and it’s ethos

19. As a site owner, I want to attract customers to our restaurant

29. As a site owner, I want users to be able to view the location and opening times

30. As a site owner, I want users to be able to find out about our business ethos

The page consists of the following features:

Feature 1 - Text accordion

The accordion shows the user reasons for them to book a reservation, with the text highlighting the business ethos. The user can select any heading to allow the text to show in a drop down.
Navbar model

This feature covers the following user stories

3. As a first time user, I want to be able to navigate the website quickly and easily

13. As a first time user, I want to know about the business and it’s ethos

19. As a site owner, I want to attract customers to our restaurant

30. As a site owner, I want users to be able to find out about our business ethos

31. As a site owner, I want users to be able to have an idea of the restaurant’s welcoming atmosphere so they will make a reservation

Feature 2 - Image carousel

The image carousel circulates automatically. The images that circulate match each heading in the accordion.
Navbar model

This feature covers the following user stories

3. As a first time user, I want to be able to navigate the website quickly and easily

13. As a first time user, I want to know about the business and it’s ethos

19. As a site owner, I want to attract customers to our restaurant

21. As a site owner, I show appealing and professional images of our food

30. As a site owner, I want users to be able to find out about our business ethos

31. As a site owner, I want users to be able to have an idea of the restaurant’s welcoming atmosphere so they will make a reservation

Feature 3 - Comment section

This scrollable comment section allows users to read other user’s comments and see their own comments after posting. When the user is logged in they are able to edit and delete the comments that they have made.
Navbar model


Navbar model

This feature covers the following user stories

7. As a logged in user, I want to be able to leave a comment or review

8. As a logged in user, I want to be able to see other user’s comments and reviews

9. As a logged in user, I want to be able to edit and delete a comment I have made

25. As a site owner, I want users to be able to leave a comment or review

26. As a site owner, I want users to be able to view other comments and reviews

27. As a site owner, I want users to be able to edit and delete comments or reviews

37. As a logged in administrator, I want to be able to review and approve or delete user comments.

Feature 4 - Login/Signup

The login or signup links allow users to sign in to an existing account, or to create a new account to post comments
Navbar model

15. As a logged in user, I want to be able to create an account

34. As a site owner, I want users to be able to sign in to, or create an account

Page 8 - Contact page

The contact page shows the user the business address and opening Hours. It also consists of an image background with the contact form overlay. The form allows the user to choose from a preset communication option from a drop down menu.
Navbar model

12. As a first time user, I want to be able to view the restaurants location and opening hours

29. As a site owner, I want users to be able to view the location and opening times

Feature 1 - Contact form


Navbar model

This feature covers the following user stories

7. As a logged in user, I want to be able to leave a comment or review

10. As a first time user, I want to be able contact the restaurant

25. As a site owner, I want users to be able to leave a comment or review

28. As a site owner, I want users to be able to contact the business

Page 9 - Reservation page

Feature 1 - Reservation form

The reservation form consists of an image background with the reservation form overlay. This feature covers the following user stories
Navbar model

11. As a first time user, I want to be able to make a reservation

12. As a first time user, I want to be able to view the restaurants location and opening hours

24. As a site owner, I want users to be able to make a reservation with data validation so they can only book future dates and in valid opening times.

29. As a site owner, I want users to be able to view the location and opening times

The form has required fields and only allows users to book future dates and in the restaurant’s opening hours.


Navbar model
Navbar model

Page 10 - Login & Sign in page and feature

This page allows the user to sign in to an existing account they have created. There is a link for the user to sign up if they haven’t yet made an account. Once logged in the user is able to post, amend or delete comments.
Navbar model

This page covers the following user stories

7. As a logged in user, I want to be able to leave a comment or review

9. As a logged in user, I want to be able to edit and delete a comment I have made

15. As a logged in user, I want to be able to to sign in to, or create an account

25. As a site owner, I want users to be able to leave a comment or review

27. As a site owner, I want users to be able to edit and delete comments or reviews

34. As a site owner, I want users to be able to sign in to, or create an account

Page 11 - Sing up page and feature

This page allows the user to create an account. There is a link for the user to log in after making an account.
Navbar model

This page covers the following user stories

15. As a logged in user, I want to be able to to sign in to, or create an account

34. As a site owner, I want users to be able to sign in to, or create an account

Page 12 - Log out page and feature

This page allows a logged in user to sign out of an account they have created.
Navbar model

This page covers the following user stories

16. As a logged in user, I want to be able to log out of an account

35. As a site owner, I want users to be able to log out of their account

Page 13 - Error page

This feature redirects the user back to any of the valid links rather than the user using browser controls.
Navbar model

This page covers the following user stories

40. As first time, I user should be able to navigate back through the site structure in case of page not found without using the browser back button.

41. As a site owner, I want a 404 page that enables users to be able to return to valid areas of the site without using browser controls.

Admin Panel Feature

This feature redirects the user back to any of the valid links rather than the user using browser controls.
Navbar model

This page covers the following user stories

39. As a logged in administrator, I want to be able to create, edit or remove content on the website.

Technologies Used

Languages

Python Libraries

  • astroid==2.8.4 - for pylinting
  • cloudinary==1.29.0 - for media and static file remote storage and serving
  • crispy-bootstrap5==0.6 - for form styling
  • dj-database-url==0.5.0 - (Support for DATABASE_URL environment variable)
  • dj3-cloudinary-storage==0.0.6 - for media and static file remote storage and serving
  • django-allauth==0.49.0 - (Web framework authentication)
  • django-crispy-forms==1.14.0 - for form rendering and handling
  • flake8==4.0.1 - for linting
  • gunicorn==20.1.0 - (Python WSGI Http server)
  • Pillow==9.0.1 - (Imaging library)
  • postgres==4.0 - (Postgres adapter)
  • psycopg2==2.9.3 (Postgres adapter)
  • psycopg2-binary==2.9.3 (Postgres adapter)
  • psycopg2-pool==1.1 (Postgres adapter)
  • python3-openid==3.2.0 (Support for the OpenID decentralized identity system)

Frameworks & Tools

Validation

HTML Validation

The HTML of the each page of the site was validated using W3C Markup Validation Service. All pages returned a pass with 0 errors and 0 warnings.

Home
Full Menu
Meal Information
Dinner Menu
Lunch Menu
Drinks Menu
About
Booking
Contact Us

CSS Validation

The W3C CSS Validation Service was used to validate the CSS of the website.

The custom CSS file for the site passed with 0 errors.

Custom CSS file

JS Validation

The Javascript of the each page of the site was validated using JSHint validation tool. All pages returned a pass with 0 errors and 0 warnings.

about.js
bookings.js

Py Validation

The Python of the each page of the site was validated using Python validation tool. All pages returned a pass with 0 errors and 0 warnings.

Details

Admin py-validation

about/admin.py
bookings/admin.py
contact/admin.py
home/admin.py
meals/admin.py

Forms py validation

about/forms.py
bookings/forms.py
contact/forms.py

Models py validation

about/models.py
bookings/models.py
contact/models.py
home/models.py
meals/models.py

Urls py validation

about/urls.py
bookings/urls.py
contact/urls.py
home/urls.py
meals/urls.py

Views py validation

about/views.py
bookings/views.py
contact/views.py
home/views.py
meals/views.py

Urls py validation

project/urls.py

Accessibility

The [WAVE WebAIM web accessibility evaluation tool](https://wave.webaim.org/ was used to ensure the website met high accessibility standards. All pages returned 0 errors.

Home
Menus
About
Contact
Accounts

Performance

Google Lighthouse was used to measure the performance and speed of the website -performance, accessibility, best practice and SEO with results below:

Home
Menus
About
Contact
Accounts

Testing user stories

  1. As a first time user, I want to be able to view the type of food the restaurant provides
Feature Action Expected Result Actual Result
Menu pages Select any menu option from main nav bar Menu page is displayed with images and information by category Works as expected
Menu pages Select lunch, dinner, drinks sorted button links Menu page is displayed with images and information by category Works as expected
Images
  1. As a first time user, I want to see professional and appealing images of the food
Feature Action Expected Result Actual Result
Meal details page From any menu page, click meal image Meal information page is displayed with larger image Works as expected
Menu pages From any page, select a menu from the top nav bar Menu page is displayed with meal images Works as expected
Images
  1. As a first time user, I want to be able to navigate the website quickly and easily
Feature Action Expected Result Actual Result
Main Nav bar From any page click desired navbar link Correct page is displayed and nav bar remains Works as expected
Footer nav bar From any page click desired navbar link orrect page is displayed and nav bar remains Works as expected
Menu page category nav bar Click required category link Page scrolls to correct internal link Works as expected
Images
  1. As a first time user, I want to be able to view the full menu
Feature Action Expected Result Actual Result
Full menu page From any page, select main menu from nav header Full menu page is displayed with context Works as expected
Full menu page From the footer, select the menu link Correct menu page is displayed with context Works as expected
Images
  1. As a first time user, I want to be able to view food allergies and calories
Feature Action Expected Result Actual Result
Meal details page From any menu page, click the meal item image Meal detail page is displayed for requested item with allergen info and calories displayed Works as expected
Images
  1. As a first time user, I want to be able to view a description and price of the food
Feature Action Expected Result Actual Result
Menu pages From any page, click a link to a menu option Menu page is displayed with description and price Works as expected
Meal details page From any menu page, click the meal item image Meal detail page is displayed for requested item with full description, allergen info, calories and price displayed Works as expected
Images
  1. As a logged in user, I want to be able to leave a comment or review
Feature Action Expected Result Actual Result
Comments section Navigate to about page, login(signup prerequisite), write comment and submit Comment is submitted and feedback is given (waiting approval) Works as expected
Images
  1. As a logged in user, I want to be able to see other user’s comments and reviews
Feature Action Expected Result Actual Result
Comments section Navigate to about page, scroll down to comments section Comments section is displayed with posted by, date and the comment Works as expected
Images
  1. As a logged in user, I want to be able to edit and delete a comment I have made
Feature Action Expected Result Actual Result
Edit comment Login to site (precondition) select a valid comment you have written (approved), click edit, complete edit, submit Comment is edited with visual feeback Works as expected
Delete comment Login to site (precondition) select a valid comment you have written (approved), click delete, confirm delete Comment is deleted and no longer displayed Works as expected
Images
  1. As a logged in user, I want to be able contact the restaurant
Feature Action Expected Result Actual Result
Contact page address and phone number From any page, click nav link to contact page Restaurant phone number and address are displayed Works as expected
Contact form From contact page, complete all required form fields and submit Contact form is submitted with visual feeback Works as expected
Images
  1. As a first time user, I want to be able to make a reservation
Feature Action Expected Result Actual Result
Contact page address and phone number From any page, click nav link to contact page Restaurant phone number and address are displayed Works as expected
Booking form From booking page, complete all required form fields and submit Booking form is submitted with visual feeback Works as expected
Images
  1. As a first time user, I want to be able to view the restaurants location and opening hours
Feature Action Expected Result Actual Result
Contact page address and phone number From any page, click nav link to contact page Restaurant address and opening hours are displayed Works as expected
Images
  1. As a first time user, I want to know about the business and it’s ethos
Feature Action Expected Result Actual Result
About page From any other page, click nav bar link to about page About page is displayed with herritage, reasons to dine and chef bios Works as expected
Images
  1. As a first time user, I want to be able to see special offers and promotions.
Feature Action Expected Result Actual Result
Carousel Navigate to site home page Carousel displays any special offers on rotation Works as expected
Images
  1. As a logged in user, I want to be able to to sign in to, or create an account
Feature Action Expected Result Actual Result
Signup/login From any page select login link in navbar/ about page comments section login/signup anchor User is directed to signup/login page and can set username/password Works as expected
Images
  1. As a logged in user, I want to be able to log out of an account
Feature Action Expected Result Actual Result
Account logout From navbar select logout link and confirm User is logged out of accoutn and nav bar reflects this Works as expected
Images
  1. As a first time user, I want to be able to see separate menus for lunch, dinner and drinks
Feature Action Expected Result Actual Result
Lunch Menu From any page, select lunch menu from nav bar Lunch menu is rendered with available meal options Works as expected
Dinner Menu From any page, select dinner menu from nav bar Dinner menu is rendered with available meal options Works as expected
Drinks Menu From any page, select drinks menu from nav bar Drinks menu is rendered with available drinks options Works as expected
Lunch Menu From the home page, select lunch menu from button on body image Lunch menu is rendered with available meal options Works as expected
Dinner Menu From the home page, select dinner menu from button on body image Dinner menu is rendered with available meal options Works as expected
Drinks Menu From the home page, select drinks menu from button on body image Drinks menu is rendered with available drinks options Works as expected
Images
  1. As a first time user, I want to be able to view the business’ social media
Feature Action Expected Result Actual Result
Social media links From footer select desired social link Link opens in new tab Works as expected
Images
  1. As a site owner, I want to attract customers to our restaurant

User story too vague - rejected.

Images
  1. As a site owner, I want to show appealing and professional images of our food
Feature Action Expected Result Actual Result
Meal details page From any menu page, click meal image Meal information page is displayed with larger image Works as expected
Menu pages From any page, select a menu from the top nav bar Menu page is displayed with meal images Works as expected
Images
  1. As a site owner, I want users to be to view our full menu
Feature Action Expected Result Actual Result
Full menu page From any page, select main menu from nav header Full menu page is displayed with context Works as expected
Full menu page From the footer, select the menu link Correct menu page is displayed with context Works as expected
Images
  1. As a site owner, I want users to be able to view the food descriptions and prices
Feature Action Expected Result Actual Result
Menu pages From any page, click a link to a menu option Menu page is displayed with description and price Works as expected
Meal details page From any menu page, click the meal item image Meal detail page is displayed for requested item with full description, allergen info, calories and price displayed Works as expected
Images
  1. As a site owner, I want users to be able to view allergies and calories
Feature Action Expected Result Actual Result
Meal details page From any menu page, click the meal item image Meal detail page is displayed for requested item with allergen info and calories displayed Works as expected
Images
  1. As a site owner, I want users to be able to make a reservation with data validation so they can only book future dates and in valid opening times.
Feature Action Expected Result Actual Result
Contact page address and phone number From any page, click nav link to contact page Restaurant phone number and address are displayed Works as expected
Booking form From booking page, complete all required form fields and submit Booking form is submitted with visual feeback Works as expected
Images
  1. As a site owner, I want users to be able to leave a comment or review
Feature Action Expected Result Actual Result
Comments section Navigate to about page, login(signup prerequisite), write comment and submit Comment is submitted and feedback is given (waiting approval) Works as expected
Images
  1. As a site owner, I want users to be able to view other comments and reviews
Feature Action Expected Result Actual Result
Comments section Navigate to about page, scroll down to comments section Comments section is displayed with posted by, date and the comment Works as expected
Images
  1. As a site owner, I want users to be able to edit and delete comments or reviews
Feature Action Expected Result Actual Result
Edit comment Login to site, post a comment, refresh site, select a valid comment you have written (approved), click edit, complete edit, submit Comment is edited with visual feeback Works as expected
Delete comment Login to site, post a comment, refresh site, select a valid comment you have written (approved), click delete, confirm delete Comment is deleted and no longer displayed Works as expected
Images
  1. As a site owner, I want users to be able to contact the business
Feature Action Expected Result Actual Result
Contact page address and phone number From any page, click nav link to contact page Restaurant phone number and address are displayed Works as expected
Contact form From contact page, complete all required form fields and submit Contact form is submitted with visual feeback Works as expected
Images
  1. As a site owner, I want users to be able to view the location and opening times
Feature Action Expected Result Actual Result
Contact page address and phone number From any page, click nav link to contact page Restaurant address and opening hours are displayed Works as expected
Images
  1. As a site owner, I want users to be able to find out about our business ethos
Feature Action Expected Result Actual Result
About page From any other page, click nav bar link to about page About page is displayed with herritage, reasons to dine and chef bios Works as expected
Images
  1. As a site owner, I want users to be able to have an idea of the restaurant’s welcoming atmosphere so they will make a reservation
Feature Action Expected Result Actual Result
About page From any other page, click nav bar link to about page About page is displayed with professional imagery of staff Works as expected
Images
  1. As a site owner, I want users to be able to navigate the site easily and quickly
Feature Action Expected Result Actual Result
Main Nav bar From any page click desired navbar link Correct page is displayed and nav bar remains Works as expected
Footer nav bar From any page click desired navbar link orrect page is displayed and nav bar remains Works as expected
Menu page category nav bar Click required category link Page scrolls to correct internal link Works as expected
Images
  1. As a site owner, I want to be able to promote special offers and events.
Feature Action Expected Result Actual Result
Carousel Navigate to site home page Carousel displays any special offers on rotation Works as expected
Images
  1. As a site owner, I want users to be able to sign in to, or create an account
Feature Action Expected Result Actual Result
Signup/login From any page select login link in navbar/ about page comments section login/signup anchor User is directed to signup/login page and can set username/password Works as expected
Images
  1. As a site owner, I want users to be able to log out of their account
Feature Action Expected Result Actual Result
Account logout From navbar select logout link and confirm User is logged out of accoutn and nav bar reflects this Works as expected
Images
  1. As a site owner, I want users to be able to see separate menus for lunch, dinner and drinks
Feature Action Expected Result Actual Result
Lunch Menu From any page, select lunch menu from nav bar Lunch menu is rendered with available meal options Works as expected
Dinner Menu From any page, select dinner menu from nav bar Dinner menu is rendered with available meal options Works as expected
Drinks Menu From any page, select drinks menu from nav bar Drinks menu is rendered with available drinks options Works as expected
Images
  1. As a logged in administrator, I want to be able to review and approve or delete user comments.
Feature Action Expected Result Actual Result
Admin panel From the admin panel, select option to approve comment Approved comments are rendered in the about content area Works as expected
Admin panel From the admin panel, select option to delete comment Selected comments are deleted once confirmed Works as expected
Images
  1. As a site owner, I want users to be able to view the business’ social media
Feature Action Expected Result Actual Result
Social media links From footer select desired social link Link opens in new tab Works as expected
Images
  1. As a logged in administrator, I want to be able to add new content to the website.
Feature Action Expected Result Actual Result
Admin panel From the admin panel, select any option to add media New media is rendered in selected area Works as expected
Images

Bugs

Bug Fix
Site images not rendering on Heroku Change source path from relative to static directory
Transluscent overlay remaining after resevervation request has been received Applied style to form instead of parent div
Comment edit does not show awaiting approval Fix would be to require additional view, bout out of scope for projectt timebox

Deployment

Heroku

This application has been deployed from Github using Heroku. Here's how:

  1. Create an account at heroku.com
  2. Create an app, give it a name for example ci-ms4-elginis_restaurant, and select a region
  3. Under resources search for postgres, and add a Postgres database to the app

Heroku Postgres

  1. Note the DATABASE_URL, this can be set as an environment variable in Heroku and your local deployment(env.py)

  2. Install the plugins dj-database-url and psycopg2-binary.

  3. Run pip3 freeze > requirements.txt so both are added to the requirements.txt file

  4. Create a Procfile with the text: web: gunicorn elginis_restuarant.wsgi:application for example

  5. In the settings.py ensure the connection is to the Heroku postgres database

  6. Ensure debug is set to false in the settings.py file

  7. Add localhost/127.0.0.1, and elginisrestaurant.herokuapp.com to the ALLOWED_HOSTS variable in settings.py

  8. Run "python3 manage.py showmigrations" to check the status of the migrations

  9. Run "python3 manage.py migrate" to migrate the database

  10. Run "python3 manage.py createsuperuser" to create a super/admin user

  11. Run "python3 manage.py loaddata categories.json" on the categories file in products/fixtures to create the categories

  12. Run "python3 manage.py loaddata products.json" on the products file in products/fixtures to create the products

  13. Install gunicorn and add it to the requirements.txt file using the command pip3 freeze > requirements.txt

  14. From the CLI login to Heroku using the command heroku git:remote -a ci-ms4-elginisrestaurant

  15. Disable collectstatic in Heroku before any code is pushed using the command heroku config:set DISABLE_COLLECTSTATIC=1 -a ci-ms4-elginisrestaurant

  16. Push the code to Heroku using the command git push heroku master

  17. Ensure the following environment variables are set in Heroku

  18. Heroku Env variables

  19. Connect the app to GitHub, and enable automatic deploys from main Heroku Postgres

  20. Click deploy to deploy your application to Heroku for the first time

  21. Click on the link provided to access the application

  22. If you encounter any issues accessing the build logs is a good way to troubleshoot the issue

Forking the GitHub Repository

By forking this GitHub repository you are making a copy of the original to view or make changes without affecting the original. You can do this by following these steps...

  1. Log into your GitHub account and find the repository.
  2. Click 'Fork' (last button on the top right of the repository page).
  3. You will then have a copy of the repository in your own GitHub account.

Making a Local Clone

  1. Log into your GitHub account and find the repository.
  2. Click on the 'Code' button (next to 'Add file').
  3. To clone the repository using HTTPS, under clone with HTTPS, copy the link.
  4. Then open Git Bash.
  5. Change the current working directory to where you want the cloned directory to be made.
  6. In your IDE's terminal type 'git clone' followed by the URL you copied.
  7. Press Enter.
  8. Your local clone will now be made.

Credits

All credit also included in the page files.

Media

Media from the following artists was used throughout the site.

Acknowledgements:

  • To my wife Rebecca Richards for her testing, support, feedback, permissions for content and images on this project.
  • To my mentor Mo Shami for his invaluable guidance and direction.
  • To the Code Institute slack community of students.
  • To the Code Institute Tutors

ci_ms4_elginis_restaurant's People

Contributors

dannymagnus avatar

Watchers

 avatar

ci_ms4_elginis_restaurant's Issues

USER STORY:Easy site navigation

As a first time user, I want to be able to navigate the website quickly and easily

Satisfies #31

Given I am on the any page of the website
When I click the main navigation bar links to go to a different site
Then I am taken to the menu page
And the navigation bar should remain on each page

Given I am on the any page of the website
When I click the footer navigation bar links to go to a different site
Then I am taken to the appropriate page
And the footer bar should remain on each page

Given I am on the any menu of the website
When I click the categories’ internal navigation bar links to go to a food category
Then I am taken to the category I have clicked

  • Create Navbar
  • Create footer
  • Create internal nav bars and link
  • Style
  • Link to urls
  • Add home page lunch and dinner sorted links.

USER STORY:Allergens and calories (owner)

As a site owner, I want users to be able to view allergies and calories

Satisfied by #5
EPIC #40

Given the user is on the any menu page of the website
When the user clicks the meal image
Then the user is taken to the meal details page
And the meal allergens and calorie information is displayed

USER STORY:Promote atmosphere (owner)

As a site owner, I want users to be able to have an idea of the restaurant’s welcoming atmosphere so they will make a reservation

Satisfied by #29
EPIC #39

Given the user is on the about us page
When the user scrolls down the page they can read the business’ history
And the user can view the relevant imagery
Then the user can find out about the business be compelled to make a reservation

USER STORY 1:View food types

As a first time user, I want to be able to view the type of food the restaurant provides so I can see if I like the food served.

EPIC #40

Given I am on the home page of the website
When I click the navigation bar link to go to a menu option
Then I am taken to the menu page
And The restaurant image gallery and summary information is displayed by category

  • Add main nav bar to home
  • Create project
  • Create meals app
  • Create urls, models and views
  • Add to admin panel
  • Upload images and descriptions
  • Add categories
  • HTML templates and linkage
  • Create base
  • Add styling main menu page in SS
  • Test story

EPIC link #40

USER STORY:View menus (owner)

As a site owner, I want users to be able to see separate menus for lunch, dinner and drinks

Given I am on the any page of the website
When I click the navigation bar link to go to a menu option (full, lunch, dinner, drinks)
Then I am taken to the appropriate menu page
And The restaurant image gallery and summary information is displayed by category

USER STORY:Location and opening times

As a first time user, I want to be able to view the restaurants location and opening hours

Satisfies #28

Given I am on the contact us page
When I land on the top of the page
Then I can view the restaurants location address and opening hours

Given I am on the about us page
When I scroll down the page
And I select the find us here link
Then I am taken to the contact us page where the location and opening hours are visible at the top of page

USER STORY: Business ethos

As a first time user, I want to know about the business and it’s ethos so that I can decide if it's somewhere I want to eat.

Satisfies #29
EPIC #39

Given I am on any page on the website
And I select the about us link on the header
When I scroll down the page I can read the business’ history
And I can explore the text accordion
And I can view the relevant imagery
Then I can find out about the business and it’s ethos

  • Create about app
  • Create heritage model
  • Create Chef model
  • Create Reasons model
  • Create urls
  • Create template
  • Create views
  • Add to admin panel
  • Add images and content to models
  • Create accordion for reasons
  • Create carousel for reasons

USER STORY:Contact business (owner)

As a site owner, I want users to be able to contact the business

Satisfies #10
EPIC #42

Given the user is on the contact us page
When I have located restaurant’s contact number
Then I can contact the restaurant

Given I am on the contact us page
When I have filled in every required field
And I select the send message button
Then my message will be sent to the restaurant
And I receive visual feedback

  • Create contact app
  • Create model
  • Create view
  • Create URLS
  • Create template
  • Create forms
  • Style with CSS
  • Test story

USER STORY:Promote offers/events (owner)

As a site owner, I want to be able to promote special offers and events

Satisfies #14
EPIC #38

Given the user is on any page
And the header is visible
And the user selects the login/signup link
When the user is taken to the sign in page
And the user has already registered with an email and password
And the user can select the sign in button
Then the user will be signed into my account and taken back to the home page

  • Create home app
  • Create models
  • Create urls
  • Create views
  • Create template
  • Add to admin
  • Create carousel
  • Add imagery and messages
  • Test user stories

USER STORY:View food price and description

As a first time user, I want to be able to view a description and price of the food

Satisfies #21

Given I am on the any menu page of the website
When I click the meal image
Then I am taken to the meal details page
And The meal image and detailed information is displayed

USER STORY:Appealing food images

As a first time user, I want to see professional and appealing images of the food

Satisfies #19
EPIC #40

Given I am on the any page of the website
When I click the navigation bar link to go to the any menu option
Then I am taken to the full menu page
And The restaurant image gallery and summary information is displayed by category

Given I am on the any menu page of the website
When I click the meal image
Then I am taken to the meal details page
And The meal image and detailed information is displayed

  • Setup cloudinary
  • Setup Heroku
  • Get images for food from unsplash
  • Setup admin panel for meal images
  • Upload images
  • Put into HTML template
  • Style with CSS
  • Set up views and URLs
  • Test user stories

USER STORY:Account logout

As a first time user, I want to be able to log out of an account

Satisfies #34
Epic #37

Given I am on any page
And the header is visible
And I am logged in to my account
When I select the logout link
And I confirm I want to sign out
Then I am logged out of my account and taken back to the home page

  • Style logout template and update URLs

USER STORY:Offers and Promo's

As a first time user, I want to be able to see special offers and promotions.

Satisfied by #32
EPIC #38

Given I am on the home page
When I view the carousel that plays automatically
Then I will able to view the restaurant’s current special offers and promotions

USER STORY: View social media (Owner)

As a site owner, I want users to be able to view the business’ social media
Given the user is on any page
And the footer is visible
Then the user can select on the instagram, facebook or Twitter link and be taken to the appropriate page in a new separate browser tab

  • add social media icons to footer bar with URL
  • style with CSS
  • import font awesome icons

USER STORY: Administrator panel

As a logged in administrator, I want to be able to create, edit or remove content on the website.

Given I am logged in as the administrator
When I am in the administration panel
Then I am able to create, edit or remove content

  • register models to admin
  • style admin

USER STORY:Login or create accounts

As a first time user, I want to be able to to sign in to, or create an account

Satisfies #33
EPIC #37

Given I am on any page
And the header is visible
And I select the login/signup link
When I am taken to the sign in page
And I have already registered with an email and password
And I select the sign in button
Then I will be signed into my account and taken back to the home page

Given I am on any page
And the header is visible
And I select the login/signup link
And I am taken to the sign in page
When I select the sign up link
And I fill in all required fields
Then my account will be created and I will be taken back to the home page

  • Add allauth
  • Add allauth URLS
  • Style all auth templates

USER STORY:Comment approval

As a site owner, I want to be able to review and approve user comment

Given I am logged in to the admin panel
And one or more comments have been submitted to the site
And I am in the comments section of the admin panel

When I click the approved button for the comment(s)

Then The comments are rendered on the site for all users to see.

  • Add comments to site admin
  • Add bulk approve option to admin site
  • Add render to view, only if approved is true
  • Add render in template if approved

USER STORY: Comments/reviews (owner)

As a site owner, I want users to be able to leave a comment or review

Satisfied by #7
EPIC #37

Given the user is on the about page comments section

And the user is logged into the site

When the user is able to write and submit a comment

Then the comment is submitted for approval
And the user receives visual feedback

  • Create comment model
  • Add to admin
  • Create view with auth
  • Create template with auth
  • Create form
  • Create url and views
  • Style template

USER STORY:Edit and delete comments

As a first time user, I want to be able to edit and delete a comment I have made

Satisfies #26

Given I am on the about page comments sections
And I am logged into the site
And I have selected one of my comments to be edited
And I have made the appropriate changes
When my comment has been resubmitted
Then I have the appropriate visual feedback

Given I am on the about page comments sections
And I am logged into the site
And I have selected one of my comments to be deleted
When I confirm the delete request
Then I have the appropriate visual feedback that the comment is removed

USER STORY:View comments and reviews

As a site owner, I want users to be able to view other comments and reviews

Given the user is on the about page 

When the user scrolls to comments section at the bottom of the page
Then the user can see other users comments and reviews

USER STORY:Account logout (owner)

As a site owner, I want users to be able to log out of their account

Satisfied by #16
EPIC #37

Given the user is on any page
And the header is visible
And the user is logged in to my account
When the user selects the logout link
And the user confirms they want to sign out
Then the user is logged out of my account and taken back to the home page

USER STORY:Food Imagery

As a site owner, I show appealing and professional images of our food

Satisfied by #2
EPIC #40

Given the user is on the any page of the website
When the user clicks the navigation bar link to go to a menu option
Then the user is taken to the menu page
And The restaurant image gallery and summary information is displayed by category

USER STORY:Site navigation (owner)

As a site owner, I want users to be able to navigate the site easily and quickly

Given the user is on the any page of the website
When the user clicks the main navigation bar links to go to a different site
Then the user is taken to the menu page
And the navigation bar should remain on each page

Given the user is on the any page of the website
When the user clicks the footer navigation bar links to go to a different site
Then the user is taken to the appropriate page
And the footer bar should remain on each page

Given the user is on the any menu of the website
When the user clicks the categories’ internal navigation bar links to go to a food category
Then the user is taken to the category they have clicked

USER STORY:View full menu (owner)

As a site owner, I want users to be to view our full menu

Given the user is on the any page of the website
When the user clicks the navigation bar link to go to a the full menu option
Then the user is taken to the full-menu page
And the restaurant image gallery and summary information is displayed by category

USER STORY: Make reservation

As a first time user, I want to be able to make a reservation so that I can secure a table at the restaurant.

Satisfies #23
EPIC #41

Given I am on the contact us page
When I have located restaurant’s contact number
Then I can call the restaurant to make a reservation

Given I am on the reserve table page
When I have filled in every required field
And I select the request booking button
Then I receive visual feedback my booking request has been made

  • Create Booking app
  • Create model
  • Create view
  • Create URLS and link
  • Create templates
  • Create forms
  • Add to admin
  • Update internal links
  • Test user story
  • Style with CSS
  • Add js to prevent early date and none open times

USER STORY:Account create, sign in owner

As a site owner, I want users to be able to sign in to, or create an account

Satisfied by #15
EPIC #37

Given the user is on any page
And the header is visible
And the user selects the login/signup link
When the user is taken to the sign in page
And the user has already registered with an email and password
And the user can select the sign in button
Then the user will be signed into my account and taken back to the home page

USER STORY:Leave comments or reviews

As a first time user, I want to be able to leave a comment or review

Satisfies #24
EPIC #37

Given I am on the about page comments section
And I am logged into the site
When I write and submit a comment
Then The comment is submitted for approval
And I receive visual feedback

USER STORY:Descriptions and prices

As a site owner, I want users to be able to view the food descriptions and prices

Satisfied by #6
Inherits from #5
EPIC #40

Given the user is on the any menu page of the website
When the user click the meal image
Then the user is taken to the meal details page
And the meal image and detailed information is displayed

  • Create image description content and add through admin panel
  • Style and add scroll functionality
  • Test user story

USER STORY:Contact restaurant

As a first time user, I want to be able contact the restaurant

Satisfied by #27

Given I am on the contact us page
When I have located restaurant’s contact number
Then I can contact the restaurant

Given I am on the contact us page
When I have filled in every required field
And I select the send message button
Then my message will be sent to the restaurant
And I receive visual feedback

USER STORY: View comments

As a first time user, I want to be able to see other user’s comments and reviews

Satisfies #25

Given I am on the about page 
When I scroll to comments section at the bottom of the page
Then I see other users comments and reviews

USER STORY:Reservations (owner)

As a site owner, I want users to be able to make a reservation

Given the user is on the contact us page
When the user has located restaurant’s contact number
Then the user can call the restaurant to make a reservation

Given the user is on the reserve table page
When the user has filled in every required field
And the user selects the request booking button
Then the user receives visual feedback my booking request has been made

USER STORY:Edit delete comments (owner)

As a site owner, I want users to be able to edit and delete comments or reviews

Given the user is on the about page comments sections
And the user is logged into the site
And the user selects one of their comments to be edited
And the user has made the appropriate changes
When the user’s comment has been resubmitted
Then the user receives the appropriate visual feedback

Given I am on the about page comments sections
And the user is logged into the site
And the user has selected one of their comments to be deleted
When the user selects the confirm delete request
Then the user receieves the appropriate visual feedback that the comment is removed

USER STORY:View allergies and calories

As a first time user, I want to be able to view food allergies and calories

Satisfies #22
EPIC #40

Given I am on the any menu page of the website
When I click the meal image
Then I am taken to the meal details page
And The meal allergens and calorie information is displayed

  • Create view
  • Create URL
  • Create template
  • Create allergen model
  • Add to admin
  • Create and upload allergen icons
  • Update meal model
  • Update CSS

USER STORY:View full menu

As a first time user, I want to be able to view the full menu

Satisfies #20
EPIC #40

Given I am on the any page of the website
When I click the navigation bar link to go to the full menu option
Then I am taken to the full menu page
And The restaurant image gallery and summary information is displayed by category

  • Create base HTML
  • Create Meals App
  • Create URLs and link to main URLs
  • Create HTML templates
  • Create models
  • Create views
  • Add to admin
  • Add links to navbar
  • Test story

USER STORY:View individual menus

As a first time user, I want to be able to see separate menus for lunch, dinner and drinks

Satisfies #35
Inherits from #1
EPIC link #40

Given I am on the home page
And I scroll down the page to the separate image and button for lunch, dinner and drinks
When I select the relevant button for the menu I want to see
Then I am taken to the relevant menu page

  • Add boolens to model for lunch and dinner
  • Create HTML templates
  • Create views
  • Links in Navbar
  • Test story

USER STORY:View location and opening hours (owner)

As a site owner, I want users to be able to view the location and opening times

EPIC #42
Inherits from #27

Given the user is on any page on the website
And the user selects the about us link on the header
When the user scrolls down the page they can read the business’ history
And the user can explore the text accordion
And the user can view the relevant imagery
Then the user can find out about the business and it’s ethos

  • Add address and opening hours at top of Contact html

USER STORY:Ethos (owner)

As a site owner, I want users to be able to find out about our business ethos

Satisfied by #13
EPIC #39

Given the user is on any page on the website
And the user selects the about us link on the header
When the user scrolls down the page they can read the business’ history
And the user can explore the text accordion
And the user can view the relevant imagery
Then the user can find out about the business and it’s ethos

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.