GithubHelp home page GithubHelp logo

matthewzipkes / hr-atx58-fec-havarti Goto Github PK

View Code? Open in Web Editor NEW

This project forked from aliciav-texas/hr-atx58-fec-havarti

0.0 0.0 0.0 37.06 MB

Party in the Havarti

License: Mozilla Public License 2.0

JavaScript 100.00%

hr-atx58-fec-havarti's Introduction

Galvanize Hack Reactor Front End Capstone


Project Catwalk


Table of Contents
  1. Contributors
  2. About The Project
  3. Getting Started
  4. Module Break Down
  5. Acknowledgements

Contributors

Alicia Villanueva - [email protected]

Logo

linkedin-shield github-shield

Project Repo Engineering Journal

My Module: Related Products and Your Wardrobe Documentation


Cory Ellerbroek - [email protected]

Logo

linkedin-shield github-shield

Project Repo

My Module: Product Overview Documentation


Travis Morse - [email protected]

Logo

linkedin-shield github-shield

Project Repo

My Module: Ratings and Reviews Documentation


Johnathan Brennan - @gmail.com

Logo

linkedin-shield github-shield

Project Repo

My Module: Questions and Answers Documentation


About The Project


Shows Product Overview features


Project Catwalk was a collaborative Front-End capstone between members of Team Havarti. This project simulated the real-world development of a product page to the demands listed in their customers Business Documentation Requirements:


Overview


"Our client-facing retail web-portal has become significantly outdated and has been proven to be hurting sales numbers. Project Catwalk comprises a complete redesign of the retail portal designed to address this concern and modernize the site. This document outlines the features to be implemented as part of Project Catwalk in its initial release. The following requirements define the new user interface required for customers to browse items in our retail catalog."


Team Havarti built this project from an empty directory to the Havarti Party product page presented to you. The project was completed and deployed on AWS EC2 within a 2 week time period.

Team Member Expectations and Workflow:

  • Oversaw their own module while working in collaboration with teammates to ensure interactive functionality
  • Communicated their progress in daily standups
  • Created and completed their task tickets using Trello
  • Brainstormed and reflected the teams work in 2 day mini-sprints

Tech Stack


Getting Started

To explore the project, follow the instructions below.

Prerequisites

This is an example of how to list things you need to use the software and how to install them.

  • npm
    npm install npm@latest -g

Installation

  1. Have your API token available or generate a new one with github following this link Generate Token
  2. Clone the repo
    git clone https://github.com/your_username_/Havarti-Party/hr-atx58-fec-havarti.git
  3. Install NPM packages
    npm install
  4. Enter your API key in config.example.js
    token: 'API KEY';
  5. Remove the .example. from config.example.js to create config.js
     Reminder to NEVER push your config.js file!
  6. Compile Webpack
     npm run build
  7. Run express server on port: 3030
     npm start
  8. Navigate to localhost:3030 in your browser



Requested Change!


As it happens in the development world, Team Havarti was handed a Requirements Update at the start of Week 1 for this project:

"There is an immediate need for visibility into customer interactions on our online retail portal. Specifically interactions with the Product Detail page should be collected for further analysis and interpretation by our Data Science team. Project Catwalk should incorporate click tracking on the Product Detail page within the scope of the initial release." The click tracking will not be through any 3rd party analytics platform. All will be done in-house. To track interactions, each click on the web page should be recorded, as well as metadata associated with that click. For each click on the page, we need to capture the following:

  • Element of the page which was clicked
  • Time of click
  • Module clicked

  • To complete this requirement, a helper function was created in the ProductContext file to be handed down to all child components. In each module's highest level componenent, an onClick property was invoked with that given module title and the target value of the users click. User click information was set to state, time-stamped, and was then sent to the Altier database for storage. All user clicks log a message to the console, confirming which module was clicked by the user.



    Module Break Down


    Each member of Team Havarti was resposible for functionality within their own module as well as the overall presentation and functionality of the entire product page.


    Product Overview

    Developed by Cory E.


    Shows Product Overview features


    The Product Overview module is the main visual content that is above the fold on page load. It contains the image carousel, product details, product styles, and the various components involved with adding a product to the cart. The biggest challenge when creating the Product Overview module was storing and passing state so that the sub-components would render and re-render appropriately. It also had to communicate with the other modules. The solution we developed was a combination of storing state that needed to be shared in a context file (accessed using the useContext hook) while other state was stored locally.

    Notable features of this module include:

    • When a style is clicked, the image carousel will present that style's images and will display at the same image index

    • The Select Size drop down will display OUT OF STOCK when appropriate

    • If size has not been selected, the Quantity drop down is disabled

    • If Add To Cart is clicked before a size is selected, the Select Size drop down will open

    • When a Related Product card or Your Wardrobe card is clicked, the module will re-render to provide the images and information for that product


    Related Products and Your Wardrobe

    Developed by Alicia V.


    Shows Related Product features


    Related Products


    Related Products displays a responsive list of related items based on the current overview product. When a new product is selected, the component must make a request to the Altier API for related item IDs, then based on those IDs make requests for their product's information as well as their styles. Control of asynchronous requests and handling of state as to not disrupt the functionality of other's components mmatewas an important aspect of this module.

    • The related product cards are disaplayed with react-elastic-carousel

    • Arrows to glide through your list render only when the item list surpasses a length of 4

    • Clicking the item's content area places that item as the current overview product

    • A comparison modal will appear when the star icon is clicked, comparing the selected item's features with the overview product's features. This list does not allow for duplicate features and only displays a value if a value is present for that feature.



    Shows Your Wardrobe features


    Your Wardrobe


    Your Wardrobe list dynamically adds the current overview product style to a growing list of products of the users choosing. Your Wardrobe list must grow without duplication and without disrupting the layout of the screen when items are being added and removed. Handling of object information was a large task for this component as much of the displayed information was shared between two different objects from two different API requests. Setting the overview product back to the selected style on click had to be done in strategy with the Overview Product module so that all lower components still had acccess to the associated overview product for their own API requests.

    • Outfit list utilizes the react-elastic-carousel

    • When empty, the Add To Outfit list is the only card appearing in the list

    • Items may only appear once within your wardrobe.

    • Arrows to glide through your list render only when the item list surpasses a length of 4

    • Clicking the item's content area places that style as the current overview product



    Ratings and Reviews

    Developed by Travis M.


    Shows Ratings and Reviews features


    The Ratings and Reviews module displays a dynamically rendered set of user-provided information regarding the currently selected product. As overview items are selected, this component makes a pair of requests to the Altier API to retrieve review data and metadata, then populates the display with visually expressive ratings, characteristics, and comments, and only loads displays for data that is actually present. The user can also submit new data with the "Write New Review" form, which formats and delivers new data to the API.

    • User reviews can be sorted by recency, helpfulness rating, or "relevance", which sorts reviews using an algorithm

    • To keep the page compact, only two reviews are initially loaded; more can be loaded using the "More Reviews" button

    • The "Write New Review" button will bring up a modal form that allows the user to share information and upload images to the server


    Questions and Answers

    Developed by Johnathan B.


    Shows Question and Answers features




    Acknowledgements

    hr-atx58-fec-havarti's People

    Contributors

    lrbrk33 avatar aliciav-texas avatar johnathanbrennan avatar travis503 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.