Giter Club home page Giter Club logo

ms4-spa's Introduction

Purity - Spa Website

Purity Home Page

User Stories

As a/an... I want the ability to... So that I can...
--- --- ---
Anonymous user view the site on all screen sizes; visit the site using my mobile and/or tablet device
Anonymous user Understand what the site is about from landing page; to make sure the website fits my needs
Anonymous user easily navigate around the site; find what I am looking for quickly and easily
Anonymous user search for treatments; browse for treatments instead of scrolling through them all
Anonymous user filter my search results; see the range of prices and categorys
Anonymous user read details about the treatments; to understand what the treatment provides
Anonymous user add treatments into my cart; add a treatment whilst looking at more
Anonymous user understand why I should sign up; understand the benefits of signing up
Anonymous user gain access to the companys social media; visit you social media pages
Anonymous user register for a user profile account by choosing a username and password; save billing details and gain access to offers, ratings
--- --- ---
Registered user log in and log out of my account; safeguard all my information whilst not active on the site
Registered user update my billing information; update any new details I obtain
Registered user store my order history and check previous order receipts; gain access to previous treatment orders
Registered user add rating to orders I purchased; so I can give the treatment a rating depending on what I thought of it
--- --- ---
Site admin/superuser add new treatments to the site; always make new treatments avaliable for users
Site admin/superuser add blogs to the site; update users on any new updates with the company
Site admin/superuser delete treatments; delete treatments that are no longer provided
Site admin/superuser edit treatment; make changes to any added treatments
Site admin/superuser delete blogs; delete any updates that may not be needed anymore
Site admin/superuser edit blogs; edit blogs for any mistakes/changes on the updates

UX

Project Goals

  • Ease of use.
  • Look at the stores treatments.
  • Be able to purchase treatments in a simple process.
  • Full authentication functionality.
  • CRUD functionality for store owners to add blogs & treatments.
  • Users who purchase a treatment, be able to set a rating.

Scope

  • Allow users to make purchases on the site.
  • Allow users to set ratings on treatments they have purchased.
  • Allow users to register for an account & change password when needed.
  • Allow admins to use CRUD functionality to add treatments & blogs.
  • Create the site using FullStack development skills.

Structure

  • Fixed navigation bar, this will increase UI/UX for all users on a wide range of devices. For example, small screens can easily navigate from anywhere in the page.
  • The navigation bar will contain a dropdown menu containing page links and the website title. Also located in the navigation bar will be a profile dropdown containing login/signup or profile for logged in users, admins will have a link to add a treatment or blog. The final link in the navbar will be a link to the cart also showing the cart total.
  • The top right just below the navbar will show all toast messages.
  • Every page will contain a footer which will consist of the company address, links, contact details and social media links.

Surface

Colours

I have chosen a wide range of colours for my website:

  • #9eb4a7 This light shade of green was used to give a calm and relaxing feeling to the site. It was used mainly on buttons and on some backgrounds making the text stand out more.
  • #f3c1a4 A mix of orange and beige complementing the overall theme of the site, this was mainly used on buttons and background colours.
  • White was used alot over the site giving it a clean and calm feel in-line with the sites goals. White was mainly used on backgrounds and used on some text when on a darker background.
  • Black was used for text to make it stand out on lighter backgrounds and catch the users eye.
  • Any other colours were chosen throughout development, a case of this was when previously chosen colours and text did not stand out enough, so the colour was changed to match this.

Icons

In the project, icons were obtained from Font Awesome. Icons were used for different settings, for example they was used for social media icons but also to help users understand details. An example of this is the checkout button showing a locked lock to give the feel this is the final step before payment is taken.

Typography

  • "Lato" used as a base font as it is readable and simple.
  • "Dancing Script" An elegant font fitting the clean and fancy theme, mainly used for headings.
  • "Courgette" Also an elegant font fitting the clean and fancy theme, mainly used for headings.
  • "Monstratt" Used alongside "Lato" it is a clean and readble font perfect for getting information to the user.

Imagery

When choosing imagery I used Pexels. Images were mainly used as background images in the site as well as a fallback images if user's/admin uploaded image is not avaliable.

Information Architecture

Database

SQLite3 was used during development which is included in the default Django installation. Heroku Postgres is used in the production site. Database Schema

Blog App
blog model
Name Key Type Validation
--- --- --- ---
name name models.CharField max_length=254
description description models.TextField

Checkout App

order model
Name Key Type Validation
--- --- --- ---
order number order_number models.CharField max_length=32, null=False, editable=False
user profile user_profile models.ForeignKey UserProfile, on_delete=models.SET_NULL, null=True, blank=True, related_name='orders'
full name full_name models.CharField max_length=50, null=False, blank=False
email email models.EmailField max_length=254, null=False, blank=False
phone number phone_number models.IntegerField null=False, blank=False
country country CountryField blank_label='Country *', null=False, blank=False
postcode postcode models.CharField max_length=20, null=True, blank=True
town or city town_or_city models.CharField max_length=40, null=False, blank=False
street_address1 street_address1 models.CharField max_length=80, null=False, blank=False
street_address2 street_address2 models.CharField max_length=80, null=False, blank=False
county county models.CharField max_length=80, null=True, blank=True
date date models.DateTimeField auto_now_add=True
order total order_total models.DecimalField max_digits=10, decimal_places=2, null=False, default=0
grand total grand_total models.DecimalField max_digits=10, decimal_places=2, null=False, default=0
original cart original_cart models.TextField null=False, blank=False, default=''
stripe pid stripe_pid models.CharField max_length=254 ,null=False, blank=False, default=''
orderlineitem model
Name Key Type Validation
--- --- --- ---
order order models.ForeignKey (Order, null=False, blank=False, on_delete=models.CASCADE, related_name='lineitems'
treatment treatment models.ForeignKey Treatment, null=False, blank=False, on_delete=models.CASCADE
quantity quantity models.IntegerField null=False, blank=False, default=0
lineitem_total lineitem_total models.DecimalField max_digits=6, decimal_places=2, null=False, blank=False
Profiles App
userprofile model
Name Key Type Validation
--- --- --- ---
user user models.OneToOneField User, on_delete=models.CASCADE
phone number default_phone_number models.CharField max_length=20, null=True, blank=True
street_address1 default_street_address1 models.CharField max_length=80, null=True, blank=True
street_address2 default_street_address2 models.CharField max_length=80, null=True, blank=True
town or city default_town_or_city models.CharField max_length=40, null=True, blank=True
county default_county models.CharField max_length=80, null=True, blank=True
postcode default_postcode models.CharField max_length=20, null=True, blank=True
country default_country CountryField blank_label='Country', null=True, blank=True
Treatments App
category model
Name Key Type Validation
--- --- --- ---
name name models.CharField max_length=254
friendly name friendly_name models.CharField max_length=254, null=True, blank=True
treatment model
Name Key Type Validation
--- --- --- ---
category category models.ForeignKey 'Category', null=True, blank=True, on_delete=models.SET_NULL
sku sku models.CharField max_length=12
name name models.CharField max_length=50
description description models.TextField max_length=200
hours hours models.IntegerField default=0
minutes minutes models.IntegerField default=0
amount amount models.IntegerField default=1
price price models.DecimalField max_digits=6, decimal_places=2
image url image_url models.URLField max_length=1024, null=True, blank=True
image image models.ImageField null=True, blank=True
rating model
Name Key Type Validation
--- --- --- ---
treatment treatment models.ForeignKey Treatment, on_delete=models.CASCADE, null=True
user user models.ForeignKey User, on_delete=models.CASCADE, null=True
rate rate models.PositiveSmallIntegerField choices=RATE_CHOICES, default=3
time_added time_added models.DateTimeField default=timezone.now

Wireframes

  • Wireframes do not contain tablet wireframe due to the simular style as large & small screens, the only differences may be some slight position movement. Any differences from the wireframes and depolyed site where choices made along the way to better suite the site design.
  • Wireframes.

Features

Existing Features

  • Created with HTML5, CSS3, JavaScript, jQuery, Bootstrap, Django, Python.
  • Responsive design.
Home Page

A simple and clean landing page, showing what the website provides, link to the treatments and a contact detail area. Home Page Screenshot

Treatments Page

A page showing all treatments on the site, the page provides sorting options, treatment category links, ability for the user to click on the treatment to view its details and also for admin users a button to add treatments to the site. Treatments Page Screenshot

Treatment Details Page

This page provides all details about the treatment, and a image representing the type of treatment. Also on the site is the treatments average rating where only users who have purchased the treatment can add a rating. For admin users an edit and delete button are provided. Treatment Details Page Screenshot

Cart Page

A page where all treatments a user has added are, showing the name, sku, price, quantity with the ability to update the quantity, for (amount of people its for) and the total of that line item. There is also a grand total which works out all the items cost, below is a link to the terms of service and below that is a link to the checkout page. Cart Page Screenshot

Checkout Page

Checkout page shows the list of all items in the cart, the price of them all and a billing details form, once filled out correctly you can choose to adjust cart or complete order. Choosing complete order will take payment and take you to a success page showing a receipt of your purchase. Checkout Page Screenshot

Blog Page

A page showing all blogs that store owners have added, blogs can range from updates, to information about subjects. Blog Page Screenshot

Blog Details Page

A page that shows the blog text for a user to read, this page also contains a back to blogs button and a edit/delete button for admin users only. Treatment Details Page Screenshot

Profile Page

The profile page shows all order history which are clickable to see previous order receipts, default billing information that can be changed and a change password button for users to update their password. Profile Page Screenshot

Add Treatment Management Page

A page for admin users to add treatments to the site. Add Treatment Page Screenshot

Edit Treatment Page

A page for admin users to edit treatments on the site. Edit Treatment Page Screenshot

Add Blog Page

A page for admin users to add blogs to the site. Add Blog Page Screenshot

Edit Blog Page

A page for admin users to edit blogs on the site. Edit Blog Page Screenshot

Add Rating page

A page for users who have purchased the treatment, to set a rating. Add Rating Page Screenshot

Features Left To Implement

  • A future feature I would like to implement would be a discount feature where admin users can run offers on treatments.
  • A future feature I would like to implement would be a booking system, so users can book a date and time for their treatment.

Technologies Used

  • HTML5
  • CSS3
  • JavaScript
  • Python
  • Bootstrap
  • FontAwesome
  • Google Fonts
  • jQuery
  • Django
  • Git
  • Heroku
  • GitHub
  • AWS S3 bucket

Testing

Purity was tested throughout making bug fixes along the way as shown in my commits. The full testing process can be found here.

Deployment

Deployment MD

Resources

Credits

Bootstrap Card designs Code Insitute Walk Through Project

Media

  • Pexels was used for imagery.

Acknowledgements

  • Mentor Precious Ijege for his support and knowledge.
  • Tutor support at Code Institute for their assistance.
  • Slack community for assistance and questions.
  • Code Insitute course content.

Support

For any queries or support contact [email protected]

ms4-spa's People

Contributors

jacktubby avatar

Watchers

 avatar

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.