Alan-Bushell / la-cocina-del-diablo

2 stars 1 forks source link

La Cocina Del Diablo

am I responsive screenshot

A restaurant website.

A themed restaurant website showcasing the venue, menu, events. The site also allows customers to created profiles and submit reservation requests to the restaurant.

- By Alan Bushell

Live site


Repository


Table of contents

Back to Top

  1. UX
  2. Agile Development
  3. Features
  4. Features Left to Implement
  5. Technology used
  6. Testing
  7. Bugs
  8. Deployment
  9. Credits
  10. Content
  11. Acknowledgements

UX

Pre-project Planning

Database Structure

Lucid Diagram

Database Schema

Customer Model

id Field
User OneToOneField
first_name Charfield
last_name Charfield
email EmailField
contact_phone Charfield
profile_image CloudinaryField

Booking Model

id Field
first_name Charfield
last_name Charfield
email EmailField
contact_phone Charfield
booking_date DateField
booking_time Charfield
number_of_attendees Integerfield
booking_status IntegerField
customer FK

Event Model

id Field
title CharField
slug SlugField
date DateField
time TimeField
tickets_available IntegerField
featured_image CloudinaryField
description TextField
excerpt TextField
event_added DateTimeField
author FK
status IntegerField

Menu Model

id Field
name CharField
slug SlugField
image CloudinaryField
description TextField
set_menu BooleanField
price IntegerField
status IntegerField
event_added DateTimeField

Starter Model

id Field
title CharField
description TextField
price Integerfield
menu FK

MainDish Model

id Field
title CharField
description TextField
price Integerfield
menu FK

Desserts Model

id Field
title CharField
description TextField
price Integerfield
menu FK

UX design

Overview

La Cocina Del diablo is a Fictional restaurant I decided to come up with and design a website for.
The main goal of the website is to allow users to view some photos of the venue, see what they have to offer, view the menu and if it is to their liking then the user can create an account and use it to make reservation requests.

Design

Once the name was chosen I decided that I wanted this website to be modern, minimalistic in it's appearance to use base colors of Black and White where possible. I only deviate from this where it helps user experience in regards to buttons, links or feedback from the booking feature.

Site User

Goals for the website

Wireframes

Wireframes

index.html

Index page

My goal for this project was to create a simple sleek website that allowed the restaurant to showcase it's venue & menu. I intentionally ensure the number of pages was at a minimum to ensure the core functionality was the focus.

profile.html

Profile page

The profile page was always going to be fundimental to the project being a success. I wanted to ensure that users had some control over their information and that it was presented in a nice clean way. By adding a split panel on top and a bookings panel on the bottom my goal was to seperate everything into easy to understand areas.

Agile Development

Agile Overview

This project was started alongside a GitHub Projects Page to track and manage the expected workload ahead. The aim was to set out my expected workload, list the epics and then break them down into user stories or bite sized tasks to work towards and ultimately finish the site in good time.

To see Kanban please click here.

At the initial stages I decided on 9 core requirements for the project and 3 Nice to haves but not important. (NINTH).

From these I added the user stories, acceptance criteria and the tasks so I can track my work effectively.

Once I completed a task I would tick the appropriate box and if all parts of this story were completed I would move it from in progress to completed.

At the end of a coding session I would update the user stories with a comment of:

User stories

Completed User Stories

To view any of the expanded details of the user stories please click on a user story below to be taken to the Kanban project. If the specific user story does not auto pop up then please click on it from the project page and you will see the details and comments.

  1. USER STORY: Deploy Website
  2. USER STORY: Admin Panel#2
  3. USER STORY: Create an account (CRUD)#3
  4. USER STORY: Base Template#4
  5. USER STORY: Make a Reservation#5
  6. USER STORY: Add or Edit Menu Items#7
  7. USER STORY: Edit Profile (CRUD)#8
  8. USER STORY: Delete Profile (CRUD)#9
  9. USER STORY: Testing#10

The following User stories were not completed as they were deemed to be not necessary for this project at this time but are indications of possible future features:

NINTH User stories
  1. USER STORY: Events#6
  2. USER STORY: Social Sharing#11
  3. USER STORY: Social Feed#12

While USER STORY: Events#6 has some parts completed in terms of displaying upcoming events for the business, I decided against implementing a ticketing system at this time due to upcoming submission deadlines and because the core requirements of the project have been satisfied elsewhere.

Back to Top of page


Features

User based Features Implemented:

Account restrictions:

Website features:

Dynamic Menu listings
Events
Booking System

index.html

Desktop

Desktop Navigation

Desktop Navigation


Venue Cards

Venue Cards


Menu collapsed

Menu Collapsed


Menu Expanded

Menu Expanded


Upcoming Events

Upcoming Events


Restaurant Booking Details

Restaurant booking details


Footer

Footer


Reservation form

Reservation form


Mobile Navigation

Mobile Navigation


User profile

User Profile


User bookings section

User Bookings


User profile on mobile

User Mobile

Back to Top of page


Features left to Implement

Back to Top of page


Technology Used

Html

CSS

JavaScript

Python

Django

Font Awesome

Bootstrap 5

Jinja Templating with Django

GitHub

Heroku

Heroku PostgreSQL

-Heroku PostgreSQL was used as the database for this project during development and in production.

Cloudinary

Git

Back to Top of page


Testing

Testing Phase

Manual Testing

Each user story was manually tested in line with intended functionality on both desktop & mobile. As this project was driven by my own User Stories I felt manual testing was applicable on all logic code.

If the intended outcome completes then this will be flagged as pass. If it does not then this is a fail.

Account Registration Tests

Test Result
User can create account Pass
User can log into account Pass
User can log out of account Pass

User Navigation Tests

Test Result
User can navigate to Reservations Pass
User can access menu items Pass
User access account profile page Pass
User can access events items Pass
SuperUser can access admin panel Pass

Account Security Tests

Test Result
Non logged in user cannot make reservation Pass
Non logged in user cannot access profile page Pass
Non superuser cannot access admin panel Pass

Booking Tests

Test Result
User can make a booking when all fields complete Pass
User tries to submit booking with empty form Fail
User tries to submit form without email address Fail
User can view their made bookings from profile Pass
User can edit booking while status is awaiting confirmation Pass
User can cancel booking while status is awaiting confirmation Pass
Edit button does not present on confirmed bookings Pass
Edit button does not present on declined bookings Pass
User can delete a pending booking Pass
User can delete a confirmed booking Pass
User can delete a declined booking Pass

Profile Tests

Test Result
User can edit their user name from the profile page Pass
User can edit / add a profile image from the profile page Pass
User can edit / add a phone number to their account Pass
User can edit their first and last name Pass
User cannot edit their account number Pass
User can add / edit their email address Pass
User cannot change username to the same as another user Pass
User cannot change their email to the same as another user Pass
User presented with pop up modal when they click delete Pass
User presented with correct start date on profile Pass
User can delete a declined booking Pass
User can delete account Pass

Admin Tests

Test Result
Admin can add items to starters Pass
Admin can add items to mains Pass
Admin can add items to desserts Pass
Admin can edit items in starters Pass
Admin can edit items in mains Pass
Admin can edit items in desserts Pass
Admin can delete items in starters Pass
Admin can delete items in mains Pass
Admin can delete items in desserts Pass
Items they display correctly on front-end when updated / added Pass

Google Lighthouse Testing

Desktop

index.html

Google Lighthouse Index

profile.html

Google Lighthouse Profile

HTML W3 Validation

index.html

W3 Validation checker

Result: No Errors

CSS Validation

w3 Jigsaw CSS checker

Result: Pass - No Errors

Back to Top of page


Bugs

Django templating bug

W3 Validation checker

Bookings not displaying

Image not loading once deployed

Back to Top of page


Deployment

I have broken up the deployment into two sections as it is quite extensive and can be hard to follow.

To deploy the project through Heroku I followed these steps:

Forking the repository

By forking the GitHub Repository you can make a copy of the original repository to view or change without it effecting the original repository. You can do this by:

Create a clone of this repository

Creating a clone enables you to make a copy of the repository at that point in time - this lets you run a copy of the project locally: This can be done by:

Back to Top of page


Credits

Dennis ivy
Md bootstrap
Pexels

Back to Top of page


Content & Resources

Django Documentation
W3 Schools
Code Institute

Back to Top of page


Acknowledgements

Dick Vlandeeren

My mentor who provided me with constructive feedback and guidance throughout.

The tutors at Code institute

To all the tutors in CI, thank you for your patience. Special shout outs to Ger, John, Sean, Oisin & Scott.