Check out the project here!
This document contains documentation and recordings of all technologies and features implented within the project.
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.
- 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
Click on any of the following technologies to view relevant documentation:
- MySQL, for relational database management
- Heroku, for backend hosting
- Sequelize, for Object-Relational mapping
- Node.js, for server-side programming
- Express, for API routing
- Jest and Supertest, for unit testing
- LucidChart, for ER diagram design - See diagram
- Axios, for API requests
- React, for frontend design
- Netlify, for frontend hosting
To run this project locally instead of viewing the live site, follow these steps:
- Clone this repository locally
- Ensure node.js and npm are both installed and up to date on your machine
- Open a terminal in the server folder and enter the command:
$ node index
- 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
Basic CRUD Functionality. This project enables you to:
Users can create custom warehouses/shipping centers/vehicles and save them as locations that can be assigned to any inventory item.
This project uses sequelize for Object-Relational Mapping, as shown in the following Entity-Relationship model
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.
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.