Git Product home page Git Product logo

technoveltyco / bootcamp-project1 Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 17.19 MB

Fakee-Shop is an implementation of an online retail store, starting from a given UX/UI concept, and creating an MVP in a sprint of 2 weeks, using rapid prototyping frameworks.

Home Page: https://technoveltyco.github.io/bootcamp-project1/

License: MIT License

CSS 1.75% HTML 75.49% JavaScript 22.77%
css css3 javascript tailwindcss tailwindui ux-design ux-ui vanilla-javascript api async-await rapid-development rapid-prototyping restful-api web-components

bootcamp-project1's Introduction

Title Description Authors Release date Output
Fakee-Shop
Boot camp project 1
14th March 2023

Project 1: Fakee-Shop

Fakee-Shop is the leading website offering the best fake shopping experience online.

Fakee Shop logo

Table of contents

Overview

Fakee-Commerce is the leading website offering the best fake shopping experience online.

Mininal Viable Product concept (MVP)

Fakee-Shop is the leading website offering the best fake shopping experience online.

Slogan

the best fake shopping experience online

Logos

  1. Logo standard (jpeg)

Fakee Shop standard logo

  1. Logo white transparent (png)

Fakee Shop white logo with transparent background

  1. Logo black transparent (png)

Fakee Shop black logo with transparent background

  1. Logo transparent (png)

Fakee Shop standard logo with transparent background

Screenshots

Fakee-Shop SiteStripe and header navigation

Fakee-Shop SiteStripe and header navigation

Homepage on large screens

An example of how the Fakee-Shop homepage looks on large screens

Homepage on small screens

An example of how the Fakee-Shop homepage looks on small screens

Links

Specifications

Project requirements

  1. Must use at least two server-side APIs.
  2. Must use a CSS framework other than Bootstrap.
  3. Must use client-side storage to store persistent data.
  4. Must have a polished UI.
  5. Must meet good quality coding standards (indentation, scoping, naming, etc.).
  6. Must NOT use alerts, confirms, or prompts (look into modals).
  7. Must be deployed to GitHub Pages.
  8. Must be interactive (i.e: accept and respond to user input).
  9. Create UX/UI with Figma.
  10. Create a project Kanban dashboard with agile user stories.

RESTful APIs

The website will use Mock-Up APIs for the back-end:

UX/UI Design

The UX/UI design will follow the specifications of the High-converting e-commerce UI kit which defines a retail e-commerce website. The full theme is freely available in the Figma Community.

Here there are the links to the Figma resources that are being considered in the implementation of the Fakee-Shop:

UX/UI Design example

Built with

What I learned

The use of the template tag to reuse HTML and add dynamic content using JavaScript.

<template id="template-promo-category-card">
  <div class="item-card category-card group relative" data-item-id="5" data-item-action="category">
    <div class="relative h-80 w-full overflow-hidden rounded-lg bg-white group-hover:opacity-75 sm:aspect-w-2 sm:aspect-h-1 sm:h-64 lg:aspect-w-1 lg:aspect-h-1">
      <img src="./assets/img/category-saint-valentines.jpg" alt="Saint Valentines category image" class="h-full w-full object-cover object-center">
    </div>
    <h3 class="mt-6 text-sm text-gray-500">
      <a href="#valentines-promo" data-cta-action="5">
        <span class="absolute inset-0"></span>
        <span class="title text-red-600"><i class="fa-solid fa-gift"></i> Saint Valentine</span>
      </a>
    </h3>
    <p class="text-base font-semibold text-gray-900">Treat your favourite person to delicious food, fancy drinks, a thoughtful gift, or an unforgettable experience.</p>
  </div>      
</template>

and in JavaScript you will use it as follows:

// Test to see if the browser supports the HTML template element by checking
// for the presence of the template element's content attribute.
if ('content' in document.createElement('template')) {

    const template = document.querySelector('#template-promo-category-card');

    // Clone the template to create a new DOM element.
    const clone = template.content.cloneNode(true);
    clone.querySelector(".item-card").dataset.itemId = data.id;
    clone.querySelector(".title").textContent = data.title;
    clone.querySelector(".description").textContent = data.description;

    // ...

} else {
  // Find another way to add the rows to the table because
  // the HTML template element is not supported.
}

On the other hand, export and import keywords were used to create modules and separate the private and public APIs of the JavaScript code.

modules/products.js

// Private API is here ...

// -------------------- PUBLIC API --------------------------

/**
 * Initialise the configuration settings.
 *
 * @param {debug: boolean, show_nav_promo: boolean, promo: Object} settings
 */
function init({ debug, show_nav_promo, promo }) {
  // ...
}

/**
 * Gets the website settings.
 *
 * @returns {Object}
 *    The website settings.
 */
function getSettings() {
  // ...
}

/**
 * Executes the main.
 */
function run() {
  // ...
}

export { DEBUG, init, getSettings, run };

and in the JavaScript this public API is used in the following way:

script.js

import * as App from "./modules/products.js";

(function (global, FakeeShop) {

  const VERSION = "0.1.0";

  let settings = {
    debug: true,
    show_nav_promo: true,
    promo: {
      label: "Valentine's Day",
      href: "#valentines-promo",
    },
  };

  FakeeShop.init(settings);
  FakeeShop.run();

  // Make FakeeShop's public API available in the global scope.
  global.FakeeShop = {
    VERSION,
    DEBUG: FakeeShop.DEBUG,
    init: FakeeShop.init,
    settings: FakeeShop.getSettings,
    run: FakeeShop.run
  };

})(window, App);

Finally, we learn CSS animation, implementing a heart beat for the Valentine's Day 💘 marketing campaign made on the website.

/* Valentine's heart beat */
@keyframes heartbeat {
  0% {
    transform: scale( 1 );    
  }
  20% {
    transform: scale( 1.25 ) 
      translateX(5%) 
      translateY(5%);
  } 
  40% {
    transform: scale( 1.5 ) 
      translateX(9%) 
      translateY(10%);
  }
}

.heart {
  background-color: var(--valetine-color);
  display: inline-block;
  height: 10px;
  margin: 0 -30px;
  position: relative;
  top: -15px;
  transform: rotate(-45deg);
  width: 10px;
  animation: heartbeat 1s infinite;
}

.heart:before,
.heart:after {
  content: "";
  background-color: var(--valetine-color);
  border-radius: 50%;
  height: 10px;
  position: absolute;
  width: 10px;
}

.heart:before {
  top: -5px;
  left: 0;
}

.heart:after {
  left: 5px;
  top: 0;
}

Continued development

The following features were included in the backlog for possible future improvements:

  • Search suggestions
  • Listing filters and sorts
  • Shopping cart
  • CI/CD
  • Automated tests
  • Search history
  • Favorites
  • Signup/Login
  • Admnistration
  • User profile
  • Newsletter

Useful resources

Authors

Group 7

Acknowledgments

The teacher and TAs that help us with resources and support to my questions during the development of this project.

bootcamp-project1's People

Contributors

technoveltyco avatar warrentyler avatar elanekj avatar

Stargazers

Tuan Duc Tran avatar Roman avatar

Watchers

 avatar  avatar

bootcamp-project1's Issues

HTML

#HTML

User Story

Acceptance Criteria

Proof of Concept / Starter code

Proof of Concept

User Story

As a developer,
I want to prove the use of at least 2 APIs,
so I can create the concept of my minimal viable product (MVP).

Acceptance Criteria

  • It's done when I have chosen 2 public APIs and demonstrated their usage in our starter code.
  • It's done when I define the concept of the MVP in the README.
  • It's done when I explain in the README what APIs and how they will be used to achieve the definition of the MVP.

Product details page

Product details page

User Story

As a Customer,
When I click on a product item either the homepage or product list page,
I want to see a page with all the details and related pictures of the product.

Acceptance Criteria

  • It's done when the homepage has the header with the logo, search box, currency toggler, and main navigation.
  • It's done when the main section contains the breadcrumb with the navigation path to the product page.
  • It's done when the main section has an aside with the image gallery to navigate all the pictures of the product.
  • It's done when there is a section where the selected image from the gallery and product details are displayed.
  • It's done when there is a section listing all the related reviews of the product.
  • It's done when the footer contains social media links, footer navigation links, payment logos, currency toggler, copyright and website footer links.

UX/UI Design

UX/UI Design

User Story

As a developer,
I want to design the Look & Feel of the Fakee-Store website,
so I can define the user journeys and interactions,
and can start creating the page layouts and elements.

Acceptance Criteria

  • It's done when a page layout of the homepage and web elements are specified with mockups and/or wireframes with Figma
  • It's done when the screenshots are included in /docs/assets/ folder and attached to the README.
  • It's done when the designs are documented in the README.
  • It's done when all the resource links used for the design are included in the README.

Homepage

Homepage

User Story

As a Customer,
when I type the Fakee-Commerce URL,
I want to address the homepage,
so I can see the navigation menu,
and access to the sections of the website.

Acceptance Criteria

  • It's done when the homepage has the header with logo, searchbox, currency toggler, and main navigation.
  • It's done when the main section has the hero banner with CTA button, shop bestsellers section, shop by category section.
  • It's done when the footer contains social media links, footer navigation links, payment logos, currency toggler, copyright and website footer links.

Product list page

Product list page

User Story

As a Customer,
When I enter an input on the search box and click on the search button,
I want to be redirected to the listing results,
and see a list of the related products matching my search input.

As a Customer,
When I click on a category on the main navigation in the header,
I want to see a list of products related to the category.

As a Customer,
When I click on a CTA button or link like Show all,
I want to see a list of products related to the context where the CTA or link came from.

Acceptance Criteria

  • It's done when the header with the logo, search box, currency toggler, and main navigation.
  • It's done when the main section contains the breadcrumb with the navigation path to the search results.
  • It's done when the main section contains the title of the Search listing.
  • It's done when the main section contains an aside with the filter categories of the products.
  • It's done when there is a section listing the product images and related info about the product.
  • It's done when the listing has the pagination section at the end of the list of products.
  • It's done when there is the "Go to top" control at the bottom of the list of products..
  • It's done when the footer contains social media links, footer navigation links, payment logos, currency toggler, copyright and website footer links.

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.