Index

Requirements

Java JDK 17

Installation:

  • Download the installer here.
  • Run the installer.
  • Follow the instructions. Default options are recommended.
  • Once installation is complete, verify it by opening your terminal and typing on the terminal:
    • Open the terminal with the following steps:
      • Win + r > cmd
        • java -version
        • Verify that it is installed correctly

IntelliJ

 

Warehouse Inventory Project​

Welcome to this new Spring Boot course, where we will build a complete CRUD application from scratch. We will focus on developing a warehouse inventory management system and cover every essential step to create a professional and well-structured backend application.

What will you learn in this course?

  • We will start by creating a Spring Boot project and setting up a complete CRUD (Create, Read, Update, Delete) for managing product data within the inventory system.
  • You will learn how to expose different types of endpoints to handle each operation, following best practices in API design.
  • We will also integrate Swagger (OpenAPI) to document and visualize all endpoints clearly and in a user-friendly way.

About the project: Warehouse Inventory System

The project will consist of two main views:

  • A summary view showing a list of products with the most important data at a glance.
  • A detailed view for each product, where additional information can be consulted and modified.

The system will allow:

  • Searching and filtering products by different criteria.
  • Adding new products to the inventory.
  • Editing existing product data, both in the summary and the detailed view.
  • Removing products from the system when necessary.

Testing: From Unit Tests to End-to-End Tests

This course will not only focus on developing the application but also on ensuring code quality through different levels of testing:

  • Unit Tests to check the functionality of individual components.
  • Component Tests to validate the behavior of larger units within the application.
  • Integration Tests to ensure all parts of the system work correctly together.
  • End-to-End Tests to verify the system works as expected from the API perspective.

Additionally, we will measure code coverage to assess the overall quality and reliability of our code.

The content of the course will be split by units that will be tagged as releases in new different Git branches. So it will be easier for you to checkout in the release branch of the unit to check the changes and see how it works.

Summary

Unit 1

  • Data Transfer Objects definition:
    • We are gonna create different Java classes to define the objects that are going to be received and returned to the service.
  • Entity definitions:
    • Those Java classes are going to be used just to access the database.
  • CRUD endpoints:
    • Get endpoint: This endpoint will be used to retrieve the data using different filters. We are going to be able to:
      • Retrieve all data.
      • Retrieve data filtered by different fields, such as code, name, and description.
    • Put endpoint: It will be used to add new collections to MongoDB.
    • Post endpoint: This is for updating collections that already exist on DB.
    • Delete: Used for removing collections on DB.
  • Create a basic README.md file.
  • Exception handling: We are going to see how to control different exceptions.
  • Mapping DTOs and Entities.
  • PostMan collection: We are going to add a Postman collection to make it easier for you to try different endpoints locally.

This unit will be available on /release/release-1.0.0