https://github.com/schneidersteve/buckpal-kotlin-modulith
Kotlin Example Implementation of a Hexagonal/Onion/Clean Architecture
https://github.com/schneidersteve/buckpal-kotlin-modulith
clean-architecture dependency-injection hexagonal-architecture inversion-of-control kotlin micronaut modulith onion-architecture spock virtual-threads
Last synced: 7 months ago
JSON representation
Kotlin Example Implementation of a Hexagonal/Onion/Clean Architecture
- Host: GitHub
- URL: https://github.com/schneidersteve/buckpal-kotlin-modulith
- Owner: schneidersteve
- License: agpl-3.0
- Created: 2024-04-05T14:32:24.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-08-06T09:54:42.000Z (about 1 year ago)
- Last Synced: 2024-08-06T11:46:56.477Z (about 1 year ago)
- Topics: clean-architecture, dependency-injection, hexagonal-architecture, inversion-of-control, kotlin, micronaut, modulith, onion-architecture, spock, virtual-threads
- Language: Kotlin
- Homepage:
- Size: 242 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Kotlin Example Implementation of a Hexagonal/Onion/Clean Architecture
Inspired by https://github.com/thombergs/buckpal
## Tech Stack
* [Kotlin](https://kotlinlang.org)
* [Spock](https://github.com/spockframework/spock)
* [Micronaut](https://micronaut.io)
* [JDK 21+](https://www.oracle.com/java/technologies/downloads)
* [Virtual Threads](https://en.wikipedia.org/wiki/Virtual_thread)
* [IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/download)## Layers and Dependency Inversion

## Send Money Use Case
```gherkin
Feature: Send MoneyScenario: Transaction succeeds
Given a source account
And a target accountWhen money is send
Then send money succeeds
And source account is locked
And source account withdrawal will succeed
And source account is releasedAnd target account is locked
And target account deposit will succeed
And target account is releasedAnd accounts have been updated
```# Gradle Examples
> ./gradlew check
> ./gradlew check -i
> ./gradlew cleanTest check -i
> ./gradlew check -t