Coder Social home page Coder Social logo

gofar's Introduction

Go Far Retail Outerwear Website

Go Far is a fully functional retail website built with the MERN stack. It is heavily inspired by EddieBauer.com. Users can search for and browse products, add them to their cart or wishlist, and conduct transactions via the PayPal API

Landing Page

See the live website here

Built With

Frontend Backend
React MongoDB
Redux Mongoose
React Bootstrap Express
ย  Node

Google Maps API, JWT (JSON Web Tokens), and bcrypt are used by both the frontend and backend.
For an exhaustive list of all libraries used see the frontend package.json and the backend package.json

Features

RESTful API

  • Go Far is built on a RESTful API. All CRUD operations use some combination of GET, PUT, POST, and DELETE http requests to the server

Robust Product Model

  • A robust product model allows the database to store products with many different sizes, colors, size categories (petite, tall, plus, etc.), along with unique prices and images for each possible combination
  • An example of a product based on this model is shown below:



Authentication with bcrypt

  • User authentication is handled with bcrypt

Athorization Middleware using JWT (JSON Web Tokens)

  • When users log in a JSON Web Token is created
  • Athorization middleware looks for that token when users try to access protected routes


Dynamic Product Image Carousel

  • Images populate based on the colors selected by the user
  • Hovering over the featured image gives users a zoom in view of the product
  • This was acomplished using Pure React Carousel by Express Labs
  • Some products have videos and are included in the carousel. Clicking the video opens a modal that plays an embedded YouTube video


Frontend and Backend Pagination

  • The Go Far server sends paginated data to the frontend when displaying products, reviews, and orders
  • For example, the orders section of the User Profile page requests and is sent the data for five orders at a time and no more. As users interact with the pagination buttons more orders are sent as needed
  • See the getUserOrders() function in orderController.js


Product Reviews

  • Users can add product reviews
  • If they've purchased the product the review will be marked as "Verified Purchase"
  • A user's rating immediately counts toward the products total rating and total reviews
  • A warning message is displayed if users try to review a product they have already reviewed


Search Functionality

  • Users can search for product names or for broader product categories like "camping" and "leggings"


User Profiles

  • Users can change their name, email, phone number and passwords
  • Users can add, edit, and delete their addresses
  • Users can browse their order history and see a Google Map of their shipping address


User Wishlist

  • Users can add products to their wishlist. From there they can delete them or move them to the cart
  • If an item is already in their cart the wishlist will display that to the user


Cart

  • Users can add and remove items from their cart, change the quantities, save the item for later, or move them to their wishlist (if it's not already in it)
  • The cart checks to see if the items are still in stock and if any quantity changes are needed. Out of stock items are automatically saved for later. Any changes to the cart are relayed to the user



Checkout

  • Users can place orders using the PayPal API and PayPal's sandbox mode. The PayPal API script is not mounted to the Body until needed
  • Users can add shipping and/or billing addresses if needed during the checkout process


Google Maps

  • Backend - During the final stages of the checkout process the user's shipping address is Geocoded (turned from an address into a pair of latitude and longitude coordinates that will be used by the frontend) and saved with the rest of the order
  • Frontend - Using the Google Maps Javascript SDK, a map of the user's shipping address is shown for each order. The Google Maps script is not mounted to the Body until needed

Mobile Responsive

Checkout all these features on the live website here

gofar's People

Contributors

johnkearney2020 avatar

Stargazers

 avatar

Watchers

James Cloos avatar  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.