Warehouse web-app that fascilitates administrator to view, add, remove, and alter warehouse entities. Theming is mystery boxes, where miscellaneous bundles can be sold depending on size. User can:
- View and sort list of all warehouses by ID and capacity.
- View and sort list of all products by ID and price.
- Create and delete warehouse from warehouse list, cannot have two warehouses with the same name.
- Create and delete product from product list, includes drop down for size category selection.
- View individual warehouse details magnifying glass button, routed '/warehouse/{id}'
- Update warehouse details with pen button. Empty inputs will just keep the fields' previous values. Capacity cannot be lower than total products stocked in the warehouse.
- Add new product inventory to warehouse with drop down of all products, cannot add product already in warehouse.
- View what products exist in each warehouse and the stock of the product.
- Edit stock of each product listed in warehouse with pen button.
- Delete product inventory from that specific warehouse..
- Go to view individual products' details with door button
- View individual product details with magnifying glass button, routed '/product/{id}'
- Update product details with pen button, includes drop down for size category selection
- View what warehouses the product is in and the stock in each warehouse.
- Delete product inventory from that specific warehouse.
- Go to view individual warehouses' details with door button
Link to frontend deployed on AWS
Link to RDS database deployed on AWS
- mystery-box-warehouses-backend
- mystery-box-warehouses-frontend
- Instance: mystery-box-warehouses-jenkins
Elastic Beanstalk
- Application: mystery-box-warehouses
- Environment: Mystery-box-warehouses-env
- Mysteryboxwarehouses-db instance
Jenkins pipeline using AWS EC2 instance to deploy code changes to AWS automatically, perform tests, and generate reports. Performance test trends based on JMeter test plan
SonarCloud link that provides information on backend & frontend coverage, quality gates, and more
Cucumber Report provides information on BDD tests using Cucumber + Selenium.
Every Jenkins build has three cucumber reports
- Cucumber and Selenium Step Defintions and Page Object Models
- Cucumber Feature Files
- Uses Jmeter Maven Plugin with JMeter test plan
- Jest testing Coverage
- Mockito Unit Tests
- TestNG Suite Report
- Used Jacoco-Maven Plugin to report coverage of Mockito unit tests
- Selenium
- Cucumber
- TestNG
- Jest
- Mockito
- AWS
- Jenkins
- JaCoCo
- Burp Suite
- SonarCloud
- Jmeter
- Clone repository
- Run /Notes/create_entities.sql in pg Admin 4
- Go into /warehouse-backend:
mvn install
- Run spring boot maven app warehouse-management from apps
- Go into /warehouse-frontend:
npm install
- Run warehouse-frontend:
npm run dev
Created Spring Boot with Maven project in Java to build backend.
- Spring Boot JPA
- Spring Boot Web
- Spring Boot Validation
- Spring Boot Test
- Spring Boot DevTools
- PostgreSQL
Includes links to where they are located in the repository
Controllers help manage requests and route them to the correct services
Models defines the entitities of the Database.
Repositories stores entity data and can have basic API for CRUD operation.
Services defines the business logic that works with the entity data.
Created database with entities in PostgreSQL to manage server data.
- Port: 5432
- Database Name: warehouse_management
- Warehouse
- Product
- ProductInventory
- Category
UI framework that helps build the user interface with components and functional programming.
npm install react-router-dom
npm install react-boostrap
- react-router-dom: routes components by router path
- react-bootstrap: UI library with pre-built components
The warehouse management components are grouped by relations to one another.
Categories have been separated in the main component types built for the warehouse web-app interface
- Navigation: navigation bar
- Product: product specific components
- Warehouse: warehouse specific components
- styles: broadly defines style of various components
- util: components made for GET requests, can be by '/entity/id' or '/entity'
Pages have the important components are are routed by the react-router-dom
- Cannot make a warehouse capacity smaller than its current total product stock inventory
- Cannot overfill warehouse by editing a product's stock
- Cannot add duplicate product records in warehouse
- Cannot name two warehouses the same name
- Price of product cannot be below 0