Note: SonarQube information is based on the last GitHub Action run and is generated locally. As such, there is no direct link available to the SonarQube dashboard.
The Software Development Simulation project is a web-based application designed to simulate and manage software development tasks. It utilizes Spring Boot for backend services, Spring Integration for messaging, and integrates with Swagger for API documentation.
- Spring Boot Application: Built with Spring Boot 3.3.3.
- Spring Integration: Configured with multiple channels for task management.
- Swagger Documentation: Integrated for API documentation and testing.
- SonarQube Integration: Quality and security analysis with all issues resolved.
- JaCoCo Test Coverage: 100% class and method test coverage.
-
Clone the Repository
git clone https://github.com/MarkoDojkic/Software-Development-Simulation.git
-
Build the Project
mvn clean install
-
Run the Application
mvn spring-boot:run
The application will run on port 21682
. RabbitMQ is required with rabbitmq_mqtt and rabbitmq_web_mqtt plugins enabled and active on port 15675
.
To build and run the application using Docker, follow these steps:
The Dockerfile
is set up to build and package the application into a Docker image. It uses Maven to build the JAR file and then packages it into a minimal Java runtime image.
-
Build the Docker image:
docker build -t software-development-simulation .
-
Run the Docker container:
docker run -p 5672:5672 -p 15672:15672 -p 15675:15675 -p 21682:21682 software-development-simulation
This will build the Docker image and run the application.
NOTE: Before running docker container make sure that no instances of RabbitMQ
are already active because it will interfere with docker image RabbitMQ
and messages won`t get through.
Access Swagger UI
Navigate to http://localhost:21682/swagger-ui.html
to access the Swagger UI.
The application utilizes various Spring Integration channels for processing different types of messages. Below is a summary of the key channels and their purposes:
-
Error Channels
errorChannel
: Handles general errors.errorChannel.mqtt.input
: Sends error messages to MQTT for frontend integration.errorChannel.logFile.input
: Saves error messages to log file for persistent storage.
-
Information Channels
information.input
: Receives general information.information.mqtt.input
: Sends information to MQTT for frontend integration.information.logFile.input
: Saves information to log file for persistent storage.
-
Jira Activity Stream Channels
jiraActivityStream.input
: Receives Jira activity stream messages.jiraActivityStream.mqtt.input
: Sends Jira activity stream messages to MQTT for frontend integration.jiraActivityStream.logFile.input
: Saves Jira activity stream messages to log file for persistent storage.
-
Epic Channels
epicMessage.input
: Receives messages related to epics with priority handling.
-
Control Bus Channel
controlBus.input
: Handles control bus messages for managing flows.
-
Current Sprint Channels
currentSprintEpic.input
: Receives epics for the current sprint.currentSprintUserStories
: Receives user stories for the current sprint using splitter fromcurrentSprintEpic.input
.
-
In Progress Channels
inProgressEpic
: Receives epics that are currently in progress.inProgressUserStory
: Receives user stories that are currently in progress.
-
Done Channels
doneEpics.output
: Receives completed epics.doneSprintUserStories.output
: Receives completed user stories.doneTechnicalTasks
: Receives completed technical tasks.
-
Technical Task Channels
toDoTechnicalTasks
: Receives technical tasks that are to be done.trivialTechnicalTaskQueue.input
AnormalTechnicalTaskQueue.input
,minorTechnicalTaskQueue.input
,majorTechnicalTaskQueue.input
,criticalTechnicalTaskQueue.input
,blockerTechnicalTaskQueue.input
: Receive technical tasks of various priorities.trivialTechnicalTask
,normalTechnicalTask
,minorTechnicalTask
,majorTechnicalTask
,criticalTechnicalTask
,blockerTechnicalTask
: Handle technical tasks based on priority.
Each channel is configured to handle specific message types and priorities, ensuring efficient processing and management of tasks and messages within the application. Channels that send messages to MQTT or save to log files are specifically set up to facilitate frontend integration and persistent logging.