brianach / fmcistore

Final Project for CI Full Stack Dip in Software Development
0 stars 2 forks source link
aws-s3 css e-commerce-project heroku-deployment html javascript postgresql python

FMCI Store

FMCI logo

FMCI Store gives interested users and visitors the opportunity to buy FMCI merchandice as well as the ability to view facilities and services on offer to businesses and automotive product developers.

FMCI Store

 

Table of Contents



 

Features

Home Page

The home page contains a summary of what FMCI does preceded by a link to the main FMCI homepage. A scrolling carousel runs at the bottom of the page which displays a clickable logo for each of FMCI's partners which when clicked open the partner's home page on a separate tab. The carousel is loaded from a simple django database model which can be edited by a superuser via the admin page.

Store

Products can be purchased from a number of cathegories on the store page. The store dropdown menu allows for viewing the products by category or viewing the entire store on a single page. Visitors can order products without having to register and account. Registered users can access and modify their contact details and also view a list of previous orders. They can also click on any individual order to see what products are contained in it. Staff users can modify the existing products, delete products or add new products as required. Both users and staff users can see that they are logged in as the login menu item changes to their full name and is highlighted for better visibility.

Other Offerings

The site shows what onsite spaces such as desks and labs are available to interested users. A table listing the various option is displayed alongside images of the spaces on offer. Additionally, compute and development services are offered and availabe for tenant or onsite customers. Tables outlining the various offerings are available for visitors and users to view.

Authentication

Users can register an account which gives them the ability to see their order history. Logged in users will see their full name displayed above the information banner and highllighted for visibility.



 

Design

Database Model

The FMCI databases utilizes a number of models with relationships as shown in the following diagram.

ERM ![ERM](/static/readmeimg/erm.png)

There are five categories of products and services of which only specific products may be purchased online. The Spaces and Services are purchases by emailing FMCI or by tenant customers and are only available on site.

General Color Scheme

I based the color scheme on the main FMCI webpage. Font colours were chosen to make the best use of contrast in order to assist with visbility and clarity.

Color Scheme ![Color Scheme](/static/readmeimg/colors.png)

Logo

The logo is FMCI's trading logo which is based on a wireless communications icon in the colours of the Irish flag.

Home

I used a similiar layout to the "Boutique Ado" tutorial with a the previously mentioned alteration to the color pallet.

Homepage Mockup ![Homepage Mockup](/static/readmeimg/home.png)

Store

Again the store is based on the same Django framework as used in the Boutique Ado tutorial.

Store Page Mockup ![Store Page Mockup](/static/readmeimg/store.png)

Other Offerings

This uses a clean look with a relevant photograph and a table listing the various options on offer.

Offerings Mockup ![Offerings Mockup](/static/readmeimg/other.png)


 

SEO & Marketing

SEO

For the purposes of PP5 a facebook page is provided here FMCI Store

Facebook Page Screenshot ![Facebook](/static/readmeimg/fbook.png)

Relevant code from webpage

<link rel="preconnect" href="https://region1.google-analytics.com">
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-9988CFHBCY" defer></script>
<script defer>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-9988CFHBCY');
</script>

<meta name="google-site-verification" content="L33apRDqRtPi1I8nHWeQhXlwDacsbGytSjistzBgvfE" />
{% block meta %}
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<meta name="robots" content="index, nofollow">
<meta name="keywords" content="FMCI, fmci, future,  mobility, campus">
<meta name="description" content="Storefront CI Project for FMCI">

Marketing

Online Platforms

LinkedIn would be the main vehicle for social media in order to target and engage the relevant audience and market. Instagram and Facebook would alo be utilised and a facebook page is provided cuurrently.

Target Market

The target market is OEMs, new startups and automotive research organisations.

Goals of the business

As a platform for automotive research the goal is to provide merchandise online and at events to draw attention to FMCI and to increase awareness in the industry and in general.

Similiar Businesses

In terms of FMCI's business offering there aren't many if any competing businesses. FMCI provides a bespoke automotive testing platform as a service to the automotive industry, OEMs and new startups. Some specific aspects of FMCIs services are provided by AWS, Google, Heroku, Connected Hubs, WeWork etc.

Newsletter

Visitors and users can signup to a newsletter to receive news, developments and other relevant information.

Newsletter Screenshot ![Newsletter Screenshot](/static/readmeimg/newsletter.png)


 

User Experience & Testing

Agile

I used GitPod Project to as my Agile tracker

User Stories

There are three levels of user stories: visitor, user and staff. The stories are linked to agile tasks which can be seen below. Agile tasks cover one or more stpes on each of the user stories and journeys. Below we can see the agile tasks followed by the journey steps included in that task. The task view itself shows the code commits that were made to implement the task and a list of the steps completed. Below is an edited example of Agile Task 42 - Add Checkout App

Edited Example ![Example](/static/readmeimg/task-steps.png)

Visitor Journey

Agile Task 39 - Add Store App

As a visitor I can use a menu to view products and services ![Menu](/static/readmeimg/visitor/visitor-menu.png)
As a visitor I access the store so I can purchase products ![Store](/static/readmeimg/visitor/visitor-store.png)
As a visitor I can select wearable products and accessories ![Accessory](/static/readmeimg/visitor/visitor-accessory.png)
As a visitor I can select wearable products in different sizes ![Sizes](/static/readmeimg/visitor/visitor-sizes.png)

 

Agile Task 34 - Add Cart App

As a visitor I can modify my cart and add or remove products ![Modify](/static/readmeimg/visitor/visitor-modify.png)

 

Agile Task 42 - Add Checkout App

As a visitor I can checkout and complete my product purchases ![Order](/static/readmeimg/visitor/visitor-order.png)
As a visitor I can see that my order is processing ![Stripe](/static/readmeimg/visitor/visitor-stripe.png)
As a visitor I can see that my order is successfull ![Success](/static/readmeimg/visitor/visitor-success.png)

 

Agile Task 51 - Add Email Functionality

As a visitor I receive an order confirmation email ![Order Email](/static/readmeimg/visitor/visitor-order-email.png)

 

Agile Task 48 - Add Profiles App

As a visitor I can register so that I become a site user ![Register](/static/readmeimg/visitor/visitor-register.png)
As a visitor I will receive a registration verification link in an email ![Registration Email](/static/readmeimg/visitor/visitor-reg-confirm-email.png)
As a visitor I can click a registration verification link from an email ![Registration Confirm](/static/readmeimg/visitor/user-reg-confirm.png)

 

Agile Task 50 - Add Toasts

As a visitor I can get a registration acknowledgement alert ![Validation Acknowledgement](/static/readmeimg/visitor/visitor-reg-ack.png)

User Journey

Agile Task 48 - Add Profiles App

As a user I can log in to my account ![Login](/static/readmeimg/user/user-login.png)
As a user I can view my user profile ![Profile](/static/readmeimg/user/user-profile.png)
As a user I can modify my profile ![Update](/static/readmeimg/user/user-profile-update.png)
As a user I can view details of my orders ![Orders](/static/readmeimg/user/user-orders.png)
As a user I can view my past orders ![Single](/static/readmeimg/user/past-orders.png)
As a user I can log out of my account ![Logout](/static/readmeimg/user/user-logout.png)

 

Agile Task 56 - Show Full Name on navbar when logged in

As a user I can see my name when logged in ![Visibility](/static/readmeimg/user/user-visible.png)

 

Agile Task 50 - Add Toasts

As a user I can verify I've logged out of my account ![Logout Confirmation](/static/readmeimg/user/user-logout-success.png)

Staff Journey

Agile Task 49 -Implement Store Management

As a staff member I can manage store products ![Manage Store](/static/readmeimg/staff/staff-store.png)
As a staff member I can edit store products ![Edit Product](/static/readmeimg/staff/staff-edit.png)
As a staff member I can delete store products with confirmation warning ![Delete Product](/static/readmeimg/staff/staff-delete.png)
As a staff member I can add a new product ![Add Product](/static/readmeimg/staff/staff-add.png)
As a staff member I can view confirm product is added ![See New Product](/static/readmeimg/staff/staff-new-product.png)

Stripe Payments Webhooks

Stripe is being used to complete purchases. In order to verify that payments are processed correctly Stripe's webhooks are utilised.

Sample Webhooks List ![Sample Webhooks List](/static/readmeimg/stripe-list.png)

Email Verification

Email is used to verify user registration and to confirm purchases for visitiors and users.

Registration Verification Email

Email Verification ![Email Verification](/static/readmeimg/visitor/visitor-reg-confirm-email.png)

Order Confirmation Email

Order Confirmation ![Order Confirmation](/static/readmeimg/visitor/visitor-order-email.png)

Code Testing

I used CI's linter (https://pep8ci.herokuapp.com/) to test all the python. In some cases there are "line too long" warnings but lines cannot alawys be split up easily.

Lighthouse Testing

The main pages used were tested using Google Dev Tools Lightouse

Desktop Platform Testing

Home Page ![Home](/static/readmeimg/performance/desktop-home-perf.png)
Store Page ![Store](/static/readmeimg/performance/desktop-store-perf.png)
Product Page ![Product](/static/readmeimg/performance/desktop-product-perf.png)
Cart ![Cart](/static/readmeimg/performance/desktop-cart-perf.png)
Checkout ![Checkout](/static/readmeimg/performance/desktop-till-perf.png)

Mobile Platform Testing

Home Page ![Home](/static/readmeimg/performance/mobile-home-perf.png)
Store Page ![Store](/static/readmeimg/performance/mobile-store-perf.png)
Product Page ![Product](/static/readmeimg/performance/mobile-product-perf.png)
Cart ![Cart](/static/readmeimg/performance/mobile-cart-perf.png)
Checkout ![Checkout](/static/readmeimg/performance/mobile-till-perf.png)


 

Technologies

 


Deployment

Deploy site using Heroku

Deployment Procedure

Steps to clone site

 


Credits

Code

 


Media

 


Acknowledgement

Thanks to the following people who have supported me: