Employee management CRUD project developed with Spring Boot, Feign Client, and PostgreSQL.
- Description
- Technologies
- Prerequisites
- Running the Project
- Running with Docker
- Running CI/CD Pipeline
- How to Test
- Environment Variables
- Important Configurations
- Contributions
- License
This project implements a CRUD system for employee management, using Spring Boot for the application, Feign Client for external API communication, and PostgreSQL as the database.
It also includes Docker support for containerized deployment and a GitHub Actions pipeline for automated build and tests.
- Java 17+
- Spring Boot
- Spring Data JPA
- Feign Client
- PostgreSQL
- Maven
- JaCoCo (for test coverage)
- Mockito & JUnit 5 (for unit testing)
- Java 17 or higher installed
- Maven 3.6 or higher installed
- Docker and Docker Compose installed (for containerized execution)
- GitHub account (to use CI/CD pipeline with Secrets configured)
Docker allows you to run the entire application including the database in containers, isolating dependencies and environment setup.
- Create a .env file in the project root (and add it to .gitignore) with:
SPRING_DATASOURCE_USERNAME=postgres
SPRING_DATASOURCE_PASSWORD=yourpassword
- Run Docker Compose to build and start the app and PostgreSQL database:
docker compose up --build
-
Access the app at http://localhost:8080/swagger-ui/index.html
-
To stop and clean containers:
docker compose down -v
To run unit tests and generate the coverage report:
mvn clean verify
- The JaCoCo plugin is configured to exclude DTO, model, and exception classes from coverage since they are POJOs without logic to test.
- To modify exclusions or JaCoCo settings, check the pom.xml file.
- Dockerfile and Docker Compose files are provided for containerized builds and deployments.
- GitHub Actions workflow is configured to build, test, and deploy using Docker Compose.
This is a personal project; external contributions are not planned.
This project is private, and all rights are reserved by the author.
No part of this code may be copied, modified, distributed, or used without the express permission of the author.
© 2025 [Mariana Ramacciotti]. All rights reserved.
