I'm Armin Talaie. This is my work for the Shopify internship challenge for backend

Project Explantion

For this website, I wanted to learn Node so I thought it would be the perfect opportunity to learn it while I implement this project.

It is an image/product repository with the following features:

  • Image repository
    • upload products
    • delete products
    • edit/modify products
    • public status
    • see products from other users + themselves in their home feed

    Users can upload products with images, name, quantity and price to their inventory. These images are stored in a mongodb database.
    Users can see all ther products in their inventory while, only their public products are shown in the home feed to others

  • User Database and Session
    • Sign up/Sign in
    • Only user has access to delete or modify their own products
    • passwords are hashed

    I implemented a database via mongodb and mongoose to store user information. Additonally, users are authenticated using Passport.js and their passwords are hashed before stored in the database
    this also provides users with access to modify only their own products

    • Search Feature
    • Users or non-users can search for a product name using the search bar

Website Navigation

User Management
  • the "sign up" and "sign in" button in the navigation bar will allow you to create an account or login

  • password must be at least 6 characters long

  • wrong info when signing in, refreshes the sign in page

Product management
  • To be able to add a product, first sign in or sign up then sign in. Then you can click the button on the top right to add a product.
    after creating the product, it will navigate to your inventory page containing the new product

  • To allow product to be visible in the home feed for everyone, select the public checkbox

  • To see details of a product, hover over the product and you'll see "more" bottom left of the image. Click on it to see product information. Also, to be able to delete, or edit it, user must own the product

Home tab
  • the home tab shows the feed with public photos

  • to see your inventort, after signing in, click on hte {user's name}'s shelf', on the right of the navigation bar

User Information

I've created a couple of sample users to fill up the website. You can either sign in as one of them or create another account

Username Password
1 shopify@shopify.com shopify2021
2 user1@gmail.com user1user1
3 user2@gmail.com user2user2
4 user3@gmail.com user3user3