An open API service indexing awesome lists of open source software.

https://github.com/schneidersteve/buckpal-kotlin

Kotlin Example Implementation of a Hexagonal/Onion/Clean Architecture
https://github.com/schneidersteve/buckpal-kotlin

clean-architecture dependency-injection hexagonal-architecture inversion-of-control kotlin kotlin-coroutines micronaut micronaut-data onion-architecture r2dbc spock

Last synced: 2 months ago
JSON representation

Kotlin Example Implementation of a Hexagonal/Onion/Clean Architecture

Awesome Lists containing this project

README

        

# Kotlin Example Implementation of a Hexagonal/Onion/Clean Architecture

Inspired by https://github.com/thombergs/buckpal

- Java Version: https://github.com/schneidersteve/buckpal-java
- Rust Version: https://github.com/schneidersteve/buckpal-rust
- Dart Version: https://github.com/schneidersteve/buckpal-dart

## Tech Stack

* [Kotlin](https://kotlinlang.org)
* [Kotlin Coroutines](https://kotlinlang.org/docs/coroutines-overview.html)
* [Spock](https://github.com/spockframework/spock)
* [Micronaut](https://micronaut.io)
* [Micronaut Data - R2DBC](https://micronaut-projects.github.io/micronaut-data/latest/guide/#dbc)
* [IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/download)

## Layers and Dependency Inversion

![Dependency Inversion](di.png)

## Send Money Use Case

```gherkin
Feature: Send Money

Scenario: Transaction succeeds
Given a source account
And a target account

When money is send

Then send money succeeds

And source account is locked
And source account withdrawal will succeed
And source account is released

And target account is locked
And target account deposit will succeed
And target account is released

And accounts have been updated
```

# Gradle Examples

> ./gradlew test

> ./gradlew test -t