Architecture
The project follows a modular architecture with a strong emphasis on centralized build logic.
Project Structure
Section titled “Project Structure”.├── app/ # Main application├── docs/ # Documentation (Starlight website)├── examples/ # Multi-language examples│ ├── example-java│ ├── example-kotlin│ └── example-spring├── gradle/│ ├── build-logic/ # Custom Gradle convention plugins│ ├── libs.versions.toml # Version catalog│ └── wrapper/ # Gradle wrapper├── Makefile # Standardized command interface└── settings.gradle.kts # Global project configurationBuild Logic (Convention Plugins)
Section titled “Build Logic (Convention Plugins)”Instead of repeating build logic in every build.gradle.kts, we use Convention Plugins located in gradle/build-logic.
Plugin Categories
Section titled “Plugin Categories”- Base Plugins: Fundamental configuration like identity, lifecycle, and JVM conflict resolution.
- Module Plugins: Language-specific configurations (
kotlin,java,spring-boot). - Feature Plugins: Opt-in features like
publish-library,shadow,test-fixtures, andgit-hook. - Check Plugins: Code quality and formatting tools (
spotless,detekt,spotbugs). - Report Plugins: Aggregated reports for testing, coverage, and SBOM.
Dependency Management
Section titled “Dependency Management”We use Gradle Version Catalogs (libs.versions.toml) to define all dependencies and versions in a single location. This ensures consistency across all modules and examples.
Example usage:
Section titled “Example usage:”dependencies { implementation(libs.kotlin.stdlib) testImplementation(libs.junit.jupiter)}