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.
Each submodule of this module is responsible for one domain service.
This must make the modular structure grow with the growth of the service.
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.
This module contains enums that are used by core-api
and must be delivered to external modules.
Submodules of this module are responsible for integrating with external systems.
This module shows an example of HTTP communication with Spring-Cloud-Open-Feign
.
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.
Submodules of this module are responsible for the convenience of writing test codes.
This module is for writing spring-rest-docs conveniently.
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 aims to configure an environment that can be developed even if the network is disconnected.
This profile aims configurations that allow me to connect to the DEV environment from my local machine.
This profile exists for deploying Development environments.
This profile exists for deploying Staging environments.
This profile exists for deploying Live environments.