ms4-unetto-pizza

UNETTO pizza delivery app

screenshot

DEMO

Unetto is an interactive e-commerce project for a food delivery pizza shop. This project is a fully functioning interactive application that allow users to order and pay food online.

The site provides all the functionality for a common shopping experience, such as: browsing the menu, providing a shopping cart to save chosen items, have a secure checkout payment and have a personalised emailed message. Backed inside the app there are admin, user and database funtionalities.

Please note: This site is purely for educational purposes only. The payments use a real API but remain in test mode, so no real payment will be taken. Please do not enter real credit card details when using this site.


Contents


UX DESIGN

Project Goals

The goal of this project is to build a fully functioning e-commerce website for a delivery pizzeria business, allowing the user to browse and order products to be delivered at home.

The features of the website will be:

I achieve this by:

User Stories

Viewing and Navigation

  1. As a shopper, I want to be able to view a list of products so that I can choose some items to purchase.
  2. As a shopper, I want to be able to filter products that I am interested in without searching through all the products.
  3. As a shopper, I want to be able to select individual products to see more detailed information and add the item to my shopping cart.
  4. As a shopper, I want to be able to see items I have placed in my shopping cart, and keep track of what I am buying.

Registration and User Accounts

  1. As a site user, I want to be able to register for an account and save persona informations to speed up future purchases
  2. As a site user, I want to be able to receive and email to verify my email account and complete the registeration.
  3. As a site user, I want to be able to save and update my delivery information on my personal profile page.
  4. As a site user, I want to be able to log in and have a personal profile page containing my delivery details and order history

Sorting and Searching

  1. As a shopper, I want to be able to sort the available products by price, category type and name
  2. As a shopper, I want to be able to see the allergens in the food

Purchasing and Checkout

  1. As a shopper, I want to be able to add a product to the shopping cart and select the quantity
  2. As a shopper, I want to be able to view the items in my shopping cart, seeing the sub-total, delivery costs and total price.
  3. As a shopper, I want to be able to update the items in the shopping cart. Change quantities or remove the products from the cart.
  4. As a shopper, I want to be able to checkout securely, enter my delivery and credit card payment details with no worries.
  5. As a shopper, I want to be able to view the order confirmation, and receive an email order confirmation letting me know the transaction has succeeded.

Admin and Store Management

  1. As a store owner, I want to be able to add new products to my store
  2. As a store owner, I want to be able to edit product details, uploads a product image file
  3. As a store owner, I want to be able to delete a product that is no longer for sale.
  4. As Admin, I want to be able to create and delete categories, deals, list of allergens and products

Back to contents


Design Choices

Colours

I’ve chosen worm and light colors. As background site a light bisque and a more white flour tone for each card element. Mainly all the colours have a white, yellow and orange character. I used a strong orange accent color for buttons and element of focus. Green is the color of the logo and the color of basilicum. All this palette draws the color of a pizza!

Colors Palette

Wireframes

The mock-ups are made using Figma. I used rounded corner and smooth compositions. Cards define structural divisions between elements and hierarchies. I tryed to avoid depth and I used color to diversify the user interaction.

Back to contents


Technologies

Languages

Database

Libraries / Frameworks

Tools

Back to contents


Site Construction

Topology

Existing Features

Database Schema

Fixtures JSON File creation


CRUD Functionality

Site Page Create Read Update Delete
Menu   All Products    
Menu       Delete Single Product
Product Detail   Single Product    
Product Detail       Delete Single Product
Add Product Add New Product      
Edit Product   Single Product    
Edit Product     Update Single Product  
Shopping Cart   All Products    
Shopping Cart     Update Product Quantity (Session)  
Shopping Cart       Remove Product (Session)
Checkout   All Products    
Checkout Create Order      
Checkout Create Order Items      
Checkout   User Delivery Details    
Checkout     Update User Details  
Checkout     Update Product Quantity (Session)  
Checkout       Remove Product (Session)
Sign Up Add New User      
Log In   User Details    
My Profile   User Details    
My Profile   User’s Orders    
My Profile     Update Delivery Details  

Messages

I used the Django provided session-based messages functionality. The messages framework allows you to temporarily store messages in one request and retrieve them for display in a subsequent request. Every message is tagged with a specific level that determines its priority (e.g., success, info, warning, or error).

Defensive Programming

Future Features

Back to contents


Testing

Back to contents


Version Control

Gitpod Workspaces

  1. In your GitHub repository click on the Gitpod button to start the workspace.
  2. Gitpod loads the online IDE editor window, you are ready to code.

Update Repository

Deployment

The website was developed using Git pushed to GitHub, which hosts the repository. I deployed the site to Heroku, here the passages:

Cloning Unetto

Prerequisites

Ensure you have installed these locally on your computer:

You will also need a Stripe account in order to use the payment processing for the checkout app. An amazon AWS account, and a s3 bucket.

Cloning the GitHub repository

Creation of a Python Virtual Environment

Note: The process may be different depending upon your own OS Use this Python help guide to understand how to create a virtual environment.

Install the App dependencies and external libraries

pip3 install -r requirements.txt

Create the database in sqlite3

sqlite3 will be initialized locally after the installaton of the requirements.txt.

Run the following commands to create the database tables:

python3 manage.py migrate --plan

python3 manage.py migrate

Load the fixtures files into the database in the following order:

python3 manage.py loaddata categories
python3 manage.py loaddata deals
python3 manage.py loaddata allergens
python3 manage.py loaddata products

Create .env file

Run the application locally

python3 manage.py runserver

To access the admin panel, add /admin to the end of the app’s url in the browser and log in using your superuser details

Deploying Unetto web app to Heroku

Creating the Heroku app

Please ensure you have an account created at Heroku in order to deploy the app.

Adding a PostgreSQL database to Heroku

Load the data into PostgreSQL

python3 manage.py migrate
python3 manage.py loaddata categories
python3 manage.py loaddata deals
python3 manage.py loaddata allergens
python3 manage.py loaddata products

Push your repository to GitHub

Key Value
SECRET_KEY <”your key here”>
STRIPE_PUBLIC_KEY <”your key here”>
STRIPE_SECRET_KEY <”your key here”>
STRIPE_WH_SECRET <”your key here”>
AWS_ACCESS_KEY_ID <”your key here”>
AWS_SECRET_ACCESS_KEY <”your key here”>
USE_AWS “True”
EMAIL_HOST_PASS <”your app password as generated by Gmail for example”>
EMAIL_HOST_USER <”your email address that is used to send emails”>

Set also your AWS settings in settings.py

After the successful deployment, click on Open App to view the deployed site

Back to contents


Credits

Inspiration

I used this link for design and layout ideas for pizza website:

Images

Most of the images I used were taken from unsplash.com, license free to use. Photo by the artist amirali-mirhashemian, Pizza photos and homepage Photo by the artist joice-kelly, Lasgna photos Photo by the artist mink-mingle, Cheesecake photos Photo by the artist nik-owens, Pizza and oven photos Photo by the artist juan-manuel-nunez-mendez, handmaking pizza photos Photo by the artist priscilla-du-preez, tomatoes photos

Acknowledgements

Disclaimer

This site is intended for educational purposes only, is a submission project for Code Institute.