Skip to content

This repository is an online CRUD service for a fictional logistics company, LogistX. My submission for Shopify's 2022 Summer (Back-end) Internship challenge.

Notifications You must be signed in to change notification settings

tylerami/shopify-2022

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Shopify Backend Intern Challenge - Summer 2022

Check out the project here!

This document contains documentation and recordings of all technologies and features implented within the project.

Table of Contents

TL;DR

This application is a prototype called LogistX - an intuitive CRUD API for inventory management that allows for inventory items to be created, updated, and monitored using custom locations.

List of Extra Features

  • Ability to create warehouses/locations and assign inventory to specific locations
  • ER Diagram, designed with LucidChart
  • MySQL Database ORM
  • Unit testing with Jest and Supertest

Technologies

Click on any of the following technologies to view relevant documentation:

Instructions

To run this project locally instead of viewing the live site, follow these steps:

  1. Clone this repository locally
  2. Ensure node.js and npm are both installed and up to date on your machine
  3. Open a terminal in the server folder and enter the command: $ node index
  4. Open a new terminal in the client folder and enter the command: $ npm start

To run unit tests, simply open a terminal in the server folder and enter the command: $ npm test

Project Requirements

Basic CRUD Functionality. This project enables you to:

Create Inventory Items

gid of Create Inventory Items

View a list of Inventory Items

gif of View a list of Inventory Items

Edit Inventory Items

gif of Edit Inventory Items

Delete Inventory Items

gif of Delete Inventory Items

Extra Features

Ability to create warehouses/locations and assign inventory to specific locations

Users can create custom warehouses/shipping centers/vehicles and save them as locations that can be assigned to any inventory item.

gif of create warehouses

MySQL Database ORM

This project uses sequelize for Object-Relational Mapping, as shown in the following Entity-Relationship model

png of MySQL Database ORM

Unit testing

The testsuite for this project contains 7 tests using Supertest and Jest modules that verify expected responses for all 7 API endpoints. These tests evaluate both the inventory CRUD service and location endpoint responses for proper status codes and deep object equality.

gif of testsuite

Reflections

Given more time, I would implement addition testing to verify responses to bad requests include the proper status codes. In addition, the location/warehouse assignment functionality could be extended to allow for shipments to be tracked, warehouse capacity to be monitored, and items to be categorized. Lastly, I would adjust the item ORM model to use a foreign key for the relevant location table instead of a string key.

About

This repository is an online CRUD service for a fictional logistics company, LogistX. My submission for Shopify's 2022 Summer (Back-end) Internship challenge.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published