Giter VIP home page Giter VIP logo

time-to-rent's Introduction

Time To Rent - an e-commerce site which allows customers to rent luxury watches for up to 12 weeks at a time.

A live demo can be found here

Desktop Demo

Introduction

Time To Rent is an e-commerce site which enables customers to rent luxury watches on a price per week basis. The watches available would cost between £10k and £300k to purchase from a store and would be unobtainable for the majority of the general public. Most customers would be looking to rent a luxury watch for a special ocassion, such as a wedding, holiday, honeymoon, ceremony, etc.

The website can be viewed on Desktop, Tablet and Mobile devices. Click here to view.

Table of Content

  1. UX
  2. Features
  3. Technologies Used
  4. Testing
  5. Deployment
  6. Credits
  7. Disclaimer

UX

Goals

Time To Rent goals

The goal of this website is to allow users, who cannot afford to buy a luxury watch, the ability to rent a luxury watch at a price per week for up to 12 weeks at a time.

Target audience is:

  • People who cannot afford to buy a luxury watch.
  • People who would like to wear a different watch for a specific reason/ocassion.
  • People who like to change their watches throughout the year.
  • People who have a special ocassion to attend.
  • Any age group.

Business goals

  • Interactive website.
  • Fully functional website.
  • Intuitive design.
  • Easy to navigate.
  • To have as many registered users as possible.
  • Daily increases in user numbers.
  • Daily increases in reviews being added.
  • Make it as easy as possible for customers to complete a rental purchase.
  • Interactive communications with the customers at every stage of the rental process.

Customer goals

  • Easy to navigate.
  • Easy to search for specific keywords.
  • Easily locate a product.
  • Easy to add and edit information.
  • Easy to register and login securley.
  • Email communication when an action is completed.

Both business and customer goals are addressed through user stories.

User Stories

Time To Rent business

  • As a business, I want my website to display clean, sleek lines and mechanical colours.
  • As a business, I want my website to display simple to follow instructions.
  • As a business, I want my website to be responsive on all devices.
  • As a business, I want a strong focus on mobile usability as most users will be veiwing the website on mobile devices.
  • As a business, I want my website to be interactive and offer real time feedback.
  • As a business, I want my website to load quickly.
  • As a business, I want my website to display clear high resolution images.
  • As a business, I want my website to be usable for both left and right handed users.
  • As a business, I want my website to have a low risk of accidently clicking more than one button at once on smaller screens sizes.
  • As a business, I want my website to have a search function.
  • As a business, I want my website to have a admin login so the site can be managed.

The potential customer

  • As a customer, I want the website to be responsive on all devices.
  • As a customer, I want to be able to access all of the pages from the Homepage.
  • As a customer, I want to be able to conduct a keyword search from any page.
  • As a customer, I want to be able to easily register an account.
  • As a customer, I want to be able to easily login.
  • As a customer, I want to be able to easily search by brand.
  • As a customer, I want to be able to set my profile prefences.
  • As a customer, I want to be able to access my basket from any page.
  • As a customer, I want to be able to access the Homepage from any page.
  • As a customer, I want to be able to adjust the items in the basket.
  • As a customer, I want to be able to see real time feedback when compelting an action.
  • As a customer, I want to be able to recieve email communications confirming the actions completed.
  • As a customer, I want to be able to read reviews on each product.
  • As a customer, I want to be able to add/edit/delete my own reviews.
  • As a customer, I want to be able to contact the business for any reason and to recieve confirmation of this action.
  • As a customer, I want to be able to view my past purchase history.

The UX designer

  • As a UX designer, I want to track the user behaviour so that I can improve the user experience.
    • As a UX designer, I want to track the user behaviour so that I can identify the possible user confusion over navigating the website.
  • As a UX designer, I want to focus on the mobile design as most users will be using the website on a mobile device.
  • As a UX designer, I want the website to be intercative and give real time feedback when a user executes an action.

Minimum Viable Product

All the User Stories have been assessed against value and complexity. Due to the relatively short time for the implementation of the website, only the MVPs will be implemented in the first release.

Design

Colors

Following colours have been used:

  • #222 #222 (Mine Shaft)
  • #6c757d #6c757d (Pompeii Ash)
  • #aab7c4 #aab7c4 (Cadet Blue)
  • #000 #000 (Black)
  • #212529 #212529 (Blue Charcoal)
  • #555 #555 (Davy's Grey)
  • #fff #fff (White)
  • #17a2b8 #17a2b8 (Cyan Blue)

Font

The Font I used for this project is Lato with the font weights:

  • 300
  • 400
  • 500

The Lato font was chosen for it's easy readability and it's mechanical appearence.

Wireframes

I decided that it would be more helpful to have mockups than simple wireframes. The mockups were built in figma.

Link to the mockups can be found here. The mockups were designed for the mobile first approach. I have produced a desktop, tablet and mobile mockup of the main pages.

If you are unable to access the mockup links above please see the mockup images here.

Features

Existing Features

  • Responsive Design

    • Fully responsive website across all popular devices, using Bootstrap Grid and custom media queries.
  • Responsive Navigation Menu

    • Intuitive and responsive Navigation menu.
  • Registration & Login Forms

    • Login and Registration pages with forms.
  • Search Functionality

    • Search bar available on all pages with the ability to locate any keywords.
  • Homepage Navigation

    • Ability to naviagte to the Homepage from anywhere on the site.
  • Product Reviews

    • Each individual watch has a reviews section which users can add/edit/delete from when logged in.
  • Shopping Bag Summary

    • Once a user has added products to the shopping bag it can be viewed as a summary on a new page and allow the user to update/delete the details.
  • Checkout

    • The checkout page allows the user to enter personal/payment details to complete the transaction.
  • Checkout Success Page

    • Thsi confirms to the user that the payment has been successful or not.
  • Order Confirmation Email

    • User will recieve an email confirming the details of their rental purchase.
  • Contact

    • A contact form which allows users to contact the business and the user recieves a confirmation email once successfully completed.
  • 404 & 500 Pages

    • Customised pages to fit in with the rest of the website.

Features left to implement

  • Product Ratings - The site currently shows ratings for each product, however this is hard wired into the database and cannot be changed by the users. For the next release I would like to create the functionality so that users can score each watch with a rating which displays in real time.
  • Tracking User Behaviour - Use an analytics tool such as Hotjar to view user behaviour.
  • Most and Least Visited Pages on the Site - Use an analytics tool such as Hotjar to understand where the traffic is going on the site.

Bugs and Fixes for Future Releases After Testing

  • Image Size and Hosting - The Lighthouse Audit Report will show better performance.
  • Secret Key Exposed - I had mistakenly pushed a commit to github which exposed a secret key. This secret key is still visible in my github repo, however it is no longer valid and cannot be used in conjuction with this site.

Technologies Used

Languages

  • HTML
  • CSS
  • JavaScript/Jquery
  • Python

Database

  • Data Schema Database Schema

Libraries/Frameworks

  • Bootstrap - used for responsive grid system, styling and modals.
  • JQuery - were used in conjunction with the Materialize library.
  • FontAwseome - used for all icons on the site.
  • Google Fonts - used for the Lato font.
  • Unsplash - used for images.
  • Favicon.io - used for creating a favicon.
  • Django - a Python framework.

Media Storage

  • AWS - cloud storage for static and media files.

Tools

Testing

For testing the Stripe checkout use the following:

Card number: 4242 4242 4242 4242
CVC_: any 3 digits
Card expiry date: any future date
ZIP/Postcode: any 5 digits

For further tests, different card info can be found in the Stripe Documentation.

Testing information can be found here.

Deployment

Project Creation

  • To create this project the used the CI Gitpod Full Template.
  • I was then directed to the create a new repository from the template page and entered in my desired repository name, then clicked create repository.
  • Once created, I navigated to my new repository on GitHub and clicked the Gitpod button which built my workspace.

Local Installation

  1. Save a copy of the GitHub repository by clicking the download.zip button at the top of the page and extracting the zip file, or you clone the repository with this command:
$ git clone https://github.com/Gmanprodev/Time-To-Rent.git
  1. Copy the repository into your IDE.
  2. Install all required modules with the command:
pip3 install -r requirements.txt
  1. Store your environment variables and save them in the Environment Variables-Settings in your IDE:
DEVELOPMENT - Set to True
SECRET_KEY - From a free Django Secret Key Generator
STRIPE_PUBLIC_KEY - From Developer's API on the Stripe dashboard
STRIPE_SECRET_KEY - From Developer's API on the Stripe dashboard
STRIPE_WH_SECRET - From Stripe's developer API after creating a webhook
  1. Set up the local database running the following commands:
python3 manage.py makemigrations
python3 manage.py migrate
  1. Create a superuser to access the Django Admin Panel with the command:
python3 manage.py createsuperuser
  1. Start your server running the following command:
python3 manage.py runserver

Remote Deployment on Heroku

Create application

  1. Setup and account and log in to Heroku.
  2. Click on the new button.
  3. Select create new app.
  4. Enter the app name.
  5. Select region.

Set up connection to Github Repository:

  1. Click the Deploy tab.
  2. Select GitHub - Connect to GitHub.
  3. A prompt to find a Github repository to connect to will be displayed.
  4. Enter the repository name for the project and Click Search.
  5. Once the repo has been found, click the Connect Button.

Set environment variables:

  1. Click on the Settings tab.
  2. Click Reveal Config Vars.
  3. Variables added:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
DATABASE_URL
EMAIL_HOST_PASSWORD
EMAIL_HOST_USER
SECRET_KEY
STRIPE_PUBLIC_KEY
STRIPE_SECRET_KEY
STRIPE_WH_SECRET
USE_AWS

Enable automatic deployment:

  1. Click the Deploy tab.
  2. In the Automatic Deploys section, choose the branch you want to deploy.
  3. Click Enable Automation Deploys.

Credits

Content

  • All of the watch descriptions were copied from various online watch retailers.

Media

All Images

  • All of the watch images were copied from various online watch retailers.

Acknowledgements

Examples and Tutorials and Samples

  • Code Institute - I used the Ado Boutique mini project tutorials to build the bulk of my website and then customised the products on offer. I also built a custom CONTACT app and a REVIEWS model/view in the PRODUCTS app.

Pages used for information

I received advice and encouragement from

  • Akshat (my mentor)
  • Tutor Support (CI online webchat)
  • Henrique Peroni (fellow student)

Disclaimer

This web page was created for educational purposes only.

time-to-rent's People

Contributors

gmanprodev 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.