{"id":26321026,"url":"https://github.com/schneidersteve/buckpal-java","last_synced_at":"2025-03-15T16:16:02.302Z","repository":{"id":183522968,"uuid":"617342974","full_name":"schneidersteve/buckpal-java","owner":"schneidersteve","description":"Java Example Implementation of a Hexagonal/Onion/Clean Architecture","archived":false,"fork":false,"pushed_at":"2023-03-26T21:44:07.000Z","size":180,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2023-07-24T19:54:18.335Z","etag":null,"topics":["clean-architecture","dependency-injection","hexagonal-architecture","inversion-of-control","java","micronaut","micronaut-data","onion-architecture","project","project-reactor","r2dbc","spock"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/schneidersteve.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-03-22T07:34:01.000Z","updated_at":"2023-07-24T19:54:20.942Z","dependencies_parsed_at":"2023-07-24T20:04:30.337Z","dependency_job_id":null,"html_url":"https://github.com/schneidersteve/buckpal-java","commit_stats":null,"previous_names":["schneidersteve/buckpal-java"],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schneidersteve%2Fbuckpal-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schneidersteve%2Fbuckpal-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schneidersteve%2Fbuckpal-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schneidersteve%2Fbuckpal-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/schneidersteve","download_url":"https://codeload.github.com/schneidersteve/buckpal-java/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243754086,"owners_count":20342543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clean-architecture","dependency-injection","hexagonal-architecture","inversion-of-control","java","micronaut","micronaut-data","onion-architecture","project","project-reactor","r2dbc","spock"],"created_at":"2025-03-15T16:16:01.877Z","updated_at":"2025-03-15T16:16:02.291Z","avatar_url":"https://github.com/schneidersteve.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Java Example Implementation of a Hexagonal/Onion/Clean Architecture\n\nInspired by https://github.com/thombergs/buckpal\n\n- Kotlin Version: https://github.com/schneidersteve/buckpal-kotlin\n- Rust Version: https://github.com/schneidersteve/buckpal-rust\n- Dart Version: https://github.com/schneidersteve/buckpal-dart\n\n## Tech Stack\n\n* [GraalVM Java 17](https://www.graalvm.org)\n* [Project Reactor](https://projectreactor.io)\n* [Spock](https://github.com/spockframework/spock)\n* [Micronaut](https://micronaut.io)\n* [Micronaut Data - R2DBC](https://micronaut-projects.github.io/micronaut-data/latest/guide/#dbc)\n* [Visual Studio Code](https://code.visualstudio.com)\n* [Visual Studio Code Dev Containers](https://code.visualstudio.com/docs/devcontainers/containers#_quick-start-open-a-git-repository-or-github-pr-in-an-isolated-container-volume)\n\n## Layers and Dependency Inversion\n\n![Dependency Inversion](di.png)\n\n## Send Money Use Case\n\n```gherkin\nFeature: Send Money\n\n  Scenario: Transaction succeeds\n    Given a source account\n    And a target account\n\n    When money is send\n\n    Then send money succeeds\n\n    And source account is locked\n    And source account withdrawal will succeed\n    And source account is released\n\n    And target account is locked\n    And target account deposit will succeed\n    And target account is released\n\n    And accounts have been updated\n```\n\n# Gradle Examples\n\n\u003e ./gradlew test\n\n\u003e ./gradlew test -t\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschneidersteve%2Fbuckpal-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fschneidersteve%2Fbuckpal-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschneidersteve%2Fbuckpal-java/lists"}