This is not the best structure. This is a good basic structure to use early in the project when productivity is important.
Remember, as your software grows, your structure must grow too.
Spring Boot: 3.1.2
Kotlin Version: 1.9.0
Java version: 17
1. Build application
./gradlew :app:build
2. Run application on Docker
docker compose up
3. Explore Rest APIs
Method | Url | Decription | Sample Valid Request Body |
---|---|---|---|
GET | localhost:8080 | Home Page |
Method | Url | Decription | Sample Valid Request Body |
---|---|---|---|
GET | /user/all | Get all users | |
POST | /user/save | Save a user | JSON |
{
"name": "Example",
"email": "[email protected]"
}
It is the only executable module in the project. It is structured to have domains to maximize initial development productivity.
It is also responsible for providing APIs and setting up frameworks for services.
Each submodule of this module is responsible for one domain service.
This must make the modular structure grow with the growth of the service.
This is the module that contains the most common parts, it is the foundation for most of the other modules
The settings and configuration of the project are located here
Define all the models used in the project, these models are business models or return data types
Submodules of this module are responsible for integrating with the various storages.
This module shows an example of connecting to MySql
using Spring-Data-JPA
.
Submodules of this module are responsible for additional support.
This module supports logging of service and has a dependency added for distributed tracing support.
It also includes dependencies to support Sentry
.
This module supports monitoring of services.
All dependency versioning is done through gradle.properties
file.
If you want to add a new dependency, put the version in gradle.properties
and load it in build.gradle.kts
.
This profile exists for deploying Development environments.
This profile exists for deploying Staging environments.
This is a collection of test-tasks that we want to run on CI
.
If you want to change the settings, modify the build.gradle.kts
file.
This is a group of tests that typically have no dependencies, are fast to run, and test a single feature.
This setting makes run lint
on every commit.
$ git config core.hookspath .githooks
This setting makes it easier to run the test code
out of the box.
// Gradle Build and run with IntelliJ IDEA
Build, Execution, Deployment > Build Tools > Gradle > Run tests using > IntelliJ IDEA