Quickstart
The Big Picture
Tech stack
Technology | Type | Description | Reference |
---|---|---|---|
Kotlin | Language | Modern JVM based language with full java compatibility | Link |
Spring Boot | Framework | Robust and known framework to make the magic happens :) | Link |
Gradle | Build Tool | Tool to build the project, with all the tasks related to compile, test and more | Link |
Github Actions | CI/CD | Tool to orchestrate the checks, deploy and everything happening after a commit | Link |
Sonarcloud | Quality Analysis | Tool to analyse the project to detect quality improvements (code smells, bugs...) | Link |
MkDocs | Static site generator | Tool to generate a static site for documentation | Link |
Oracle Cloud | Hosting | Cloud provider of this service deployment (free tier) | Link |
Uptime Robot | Monitoring | Monitor to check the health of the application periodically by external http calls | Link |
New Relic | Monitoring | Advanced monitoring from application metrics and log ingestion using a java agent | Link |
Building it
To build the executable jar, just run:
./gradlew build
This command will generate the jar output under build/libs
Running it
Just do:
./gradlew bootRun
Or even simplier
java -jar nolocal.jar
Testing it
All the tests are under the check task in gradle, so to run all the suite run:
./gradlew check
Integration testing
Integration tests are mixed with the unit tests, but on the infrastructure package. Originally, there was a split creating a separate module for the integration tests, but maintaining the gradle file was more difficult than the actual benefits of having it separated.
Mutation testing
You can run the mutation testing too! to do that, simply run
./gradlew pitest
This will generate a report under build/reports/pitest/
In addition to this, the project has a job to generate the pitest report from GitHub