http://my-ebs-env.eba-pwmcdgmn.us-east-1.elasticbeanstalk.com/mainscreen NO LONGER HOSTED!
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/
- 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.
- 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
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
- JDK 17+
- Maven
- Node.js & npm
git clone https://github.com/KevinLlano/Java-Frameworks2.0.git
cd backend
./mvnw spring-boot:run
URL: http://localhost:8080
cd frontend
npm install
npm start
URL: http://localhost:3000
- 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
./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
- JUnit 5
- Mockito
- Spring MVC (Model)
-
MainScreenControllerTest
- Validates
listPartsandProducts()
method using mock services
- Validates
-
DeletePartValidatorTest
- Checks if part is safe to delete (no linked product)
when(mockPartService.listAll("")).thenReturn(Collections.emptyList());
verify(mockModel).addAttribute("parts", Collections.emptyList());
assertEquals("mainscreen", result);
- Model receives correct attributes
- View returned is
"mainscreen"
- Java 17
- Maven 3.8+
- PostgreSQL 13+
- AWS CLI
- Git
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
mvn clean install
mvn spring-boot:run
URL: https://car-parts-inventory-app.elasticbeanstalk.com
- View all parts and products
- Search by name/type
- Download CSV report
- Click "Add Part"
- Choose Inhouse or Outsourced
- Fill form
- Submit
- Click "Add Product"
- Fill in details
- Associate parts
- Submit
- Click "Delete"
- Only works if part is not linked to a product
- Warning confirmation shown
- Case-insensitive partial search
- Supports both parts and products
- Click “Download CSV Report”
- Includes: Name, Inventory, Price, Product Count, Timestamp