Skip to content

This inventory management system addresses inventory issues for car shops and garages. It features filtering, indexing, search, an interactive UI, and CSV report downloads.

Notifications You must be signed in to change notification settings

KevinLlano/AWS-FullStack-Car-Inventory-Management-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AWS FullStack Inventory Management System

http://my-ebs-env.eba-pwmcdgmn.us-east-1.elasticbeanstalk.com/mainscreen NO LONGER HOSTED!

Overview

This project demonstrates inventory management by filtering for engine parts and car products. It includes indexing as well as search functionality for either parts or products. CRUD is used in the project to create, update, and delete engine parts and car products. The theme of the project focuses on car products which will be car models in this case, with engine parts corresponding to each product.

https://carsupplyshop.netlify.app/ AWSinventory

Features

  • Comprehensive Inventory Management. Manage and maintain a detailed inventory of car parts and products.
  • Advanced Search and Filtering. Quickly locate specific car parts or products using the powerful search and filter functionalities.
  • CRUD Operations. Users can seamlessly add new parts or products, update existing records, and delete items that are no longer needed.
  • User-Friendly Interface. Includes buttons for adding in-house or outsourced parts, as well as update and delete actions for each item, ensuring smooth navigation.
  • Downloadable CSV Report. Export current inventory into a CSV file for audits or records.
  • UI Part/Model Association. Assign multiple parts to products with a clean visual interface.

Technologies Used

  • Backend: Spring Boot
  • Frontend: React – Frontend Repo
  • Database: H2 (Development), PostgreSQL (Production)
  • Hosting: AWS EC2, AWS Elastic Beanstalk
  • Version Control: Git & GitHub
  • Infrastructure as Code: Terraform

Libraries & Tools:

  • Terraform
  • Spring Boot Starter Web
  • Spring Boot Starter Data JPA
  • Thymeleaf
  • Spring Boot Starter Validation
  • Spring Boot DevTools
  • H2 Database
  • PostgreSQL
  • Spring Boot Starter Test
  • JUnit
  • Mockito
  • Lombok
  • Maven

UML Overview

The system models a many-to-many relationship between Products and Parts using a product_part join table.

  • Products = car models with ID, name, price, inventory
  • Parts = either InhousePart (includes part ID) or OutsourcedPart (includes company name)
  • Uses single-table inheritance for part types

UML Image


Getting Started

Prerequisites

  • JDK 17+
  • Maven
  • Node.js & npm

🛠️ Installation

Step 1: Clone the Repository

git clone https://github.com/KevinLlano/Java-Frameworks2.0.git

Step 2: Backend Setup

cd backend
./mvnw spring-boot:run

URL: http://localhost:8080

Step 3: Frontend Setup

cd frontend
npm install
npm start

URL: http://localhost:3000


Usage

  • Use buttons to add/update/delete inhouse and outsourced parts
  • Associate parts with products
  • Search parts/products by name/type
  • Export inventory via "Download CSV Report" button

Step 4: AWS Deployment

./mvnw clean package
eb init -p java-17 car-inventory-app
eb create car-parts-inventory-env
eb deploy

RDS setup:

  • Create PostgreSQL RDS on AWS Console
  • Update application.properties:
spring.datasource.url=jdbc:postgresql://<rds-endpoint>:5432/car_parts_inventory
spring.datasource.username=your_user
spring.datasource.password=your_password

Unit Testing

Tools

  • JUnit 5
  • Mockito
  • Spring MVC (Model)

Key Tests

  • MainScreenControllerTest

    • Validates listPartsandProducts() method using mock services
  • DeletePartValidatorTest

    • Checks if part is safe to delete (no linked product)

Test Sample

when(mockPartService.listAll("")).thenReturn(Collections.emptyList());
verify(mockModel).addAttribute("parts", Collections.emptyList());
assertEquals("mainscreen", result);

image image

✅ Pass Criteria

  • Model receives correct attributes
  • View returned is "mainscreen"

Developer Installation Guide

System Requirements

  • Java 17
  • Maven 3.8+
  • PostgreSQL 13+
  • AWS CLI
  • Git

Setup

git clone [https://gitlab.com/wgu-gitlab-environment/student-repos/kllano2/d424-software-engineering-capstone.git](https://github.com/KevinLlano/AWS-Inventory-Management-System)
cd aws-inventory-system
  • Create DB:
CREATE DATABASE car_parts_inventory;
  • Update application.properties:
spring.datasource.url=jdbc:postgresql://localhost:5432/car_parts_inventory
spring.datasource.username=your_user
spring.datasource.password=your_password

Run Locally

mvn clean install
mvn spring-boot:run

User Guide

Accessing the App

URL: https://car-parts-inventory-app.elasticbeanstalk.com

Homepage

  • View all parts and products
  • Search by name/type
  • Download CSV report

Adding a Part

  1. Click "Add Part"
  2. Choose Inhouse or Outsourced
  3. Fill form
  4. Submit

image

Adding a Product

  1. Click "Add Product"
  2. Fill in details
  3. Associate parts
  4. Submit

image

Deleting

  • Click "Delete"
  • Only works if part is not linked to a product
  • Warning confirmation shown

image

Search

  • Case-insensitive partial search
  • Supports both parts and products

image image

CSV Report

  • Click “Download CSV Report”
  • Includes: Name, Inventory, Price, Product Count, Timestamp

image




Screenshots

Old + New Screenshots including AWS deployment with RDS, S3, EC2, and EBS. provisioned by Terraform

img_2.png img_1.png img.png image S3 Bucket EC2 Instance RDS PostgreDB EBS Deployment image image image image image

About

This inventory management system addresses inventory issues for car shops and garages. It features filtering, indexing, search, an interactive UI, and CSV report downloads.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published