{"id":21347912,"url":"https://github.com/croz-ltd/klokwrk-project","last_synced_at":"2025-09-09T18:48:32.457Z","repository":{"id":38837100,"uuid":"262256294","full_name":"croz-ltd/klokwrk-project","owner":"croz-ltd","description":"Showcase and blueprint for implementing elaborated distributed systems on JVM. It should also serve as a playground for incubating reusable libraries useful on its own.","archived":false,"fork":false,"pushed_at":"2024-05-22T08:29:26.000Z","size":20977,"stargazers_count":58,"open_issues_count":0,"forks_count":9,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-05-22T16:15:30.834Z","etag":null,"topics":["axon-framework","cargo-tracking","cqrs","ddd","event-sourcing","graalvm","graalvm-native-image","groovy","microservices","spring-boot","springframework","testcontainers"],"latest_commit_sha":null,"homepage":"","language":"Groovy","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/croz-ltd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"support/codenarc/codenarc.groovy","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-08T07:29:09.000Z","updated_at":"2024-06-09T14:53:56.390Z","dependencies_parsed_at":"2024-03-16T22:15:05.292Z","dependency_job_id":"42b1bdf0-bc60-411f-b6cb-32ece5b0a180","html_url":"https://github.com/croz-ltd/klokwrk-project","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/croz-ltd/klokwrk-project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/croz-ltd%2Fklokwrk-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/croz-ltd%2Fklokwrk-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/croz-ltd%2Fklokwrk-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/croz-ltd%2Fklokwrk-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/croz-ltd","download_url":"https://codeload.github.com/croz-ltd/klokwrk-project/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/croz-ltd%2Fklokwrk-project/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261987555,"owners_count":23240862,"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":["axon-framework","cargo-tracking","cqrs","ddd","event-sourcing","graalvm","graalvm-native-image","groovy","microservices","spring-boot","springframework","testcontainers"],"created_at":"2024-11-22T02:17:05.894Z","updated_at":"2025-06-26T02:35:50.643Z","avatar_url":"https://github.com/croz-ltd.png","language":"Groovy","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![License](https://img.shields.io/badge/License-Apache%202.0-success.svg)](https://opensource.org/licenses/Apache-2.0)\n[![Continuous Integration](https://github.com/croz-ltd/klokwrk-project/workflows/Continuous%20Integration/badge.svg)](https://github.com/croz-ltd/klokwrk-project/actions?query=workflow%3A%22Continuous+Integration%22+branch%3Amaster)\n[![codecov](https://codecov.io/gh/croz-ltd/klokwrk-project/branch/master/graph/badge.svg)](https://codecov.io/gh/croz-ltd/klokwrk-project)\n[![Groovydoc](https://img.shields.io/badge/API%20doc-Groovydoc-brightgreen)](https://croz-ltd.github.io/klokwrk-project/groovydoc/index.html)\n\n# Project Klokwrk\nProject Klokwrk is envisioned at [CROZ](https://croz.net/) as a showcase and blueprint for implementing elaborated distributed systems on JVM. It should also serve as a playground for incubating\nreusable libraries useful on its own.\n\nThe vision behind Klokwrk could be expressed in different ways, but essentially we could put it like this:\n- FOR software architects and teams\n- WHO are building microservice systems\n- THE Klokwrk is a showcase and a blueprint\n- THAT demonstrates how to set up the clean technical architecture of a complex system properly\n- UNLIKE many Hello World examples that focus narrowly on just proving the concept\n- OUR PRODUCT represents a holistic foundation/showcase that better addresses real-world challenges by leveraging DDD, Clean Architecture, CQRS \u0026 Event Sourcing principles, and relying on the power\n  and expressiveness of Spring Boot, Axon, and Groovy.\n\nBeing a showcase, Klokwrk tries to be complete and ready to be used as a starting point in your next project. It brings the initial structures and mechanisms to help you maintain a sustainable design\nfrom a clean foundation. Klokwrk will strive to demonstrate good practices on non-trivial use cases, accompanying them with appropriate documentation.\n\nAt the moment, Klokwrk is in its incubation, and we are still thinking about what would be interesting to include and how. Despite this, we decided to show it to the open-source community. Although\nin its very early stages, we are hoping it might attract some attention and feedback.\n\nA much broader story about Project Klokwrk's vision and roadmap can be found in the following blog posts:\n- [Introducing Project Klokwrk](https://croz.net/news/introducing-project-klokwrk/)\n- [Why Hello World examples are bad for clean architecture?](https://croz.net/news/why-hello-world-examples-are-bad-for-clean-architecture/)\n\nKlokwrk is an open-source project, started by [Damir Murat](https://github.com/dmurat), one of our senior architects, with the active contribution of the broader [team](https://croz.net/) at\n[CROZ](https://github.com/croz-ltd).\n\n## Find out more\n### Articles\nThere are several articles describing some `klokwrk-project` features in more details:\n* [Project Klokwrk - Connecting the Business with Technology](support/documentation/article/klokwrk-introduction/klokwrk-introduction.md)\u003cbr/\u003e\n  High-level introduction to the Project Klokwrk.\n* [Starting up and trying the whole thing](support/documentation/article/starting-up/startingUp.md)\u003cbr/\u003e\n  Step-by-step tutorial describing how one can run and try `klokwrk-project`.\n* [Organizing modules and packages](support/documentation/article/modules-and-packages/modulesAndPackages.md)\u003cbr/\u003e\n  The cornerstone article about organizing high-level project artifacts, internal module structures, and using hexagonal architecture in CQRS/Event Sourcing context.\n* [The format of rendered responses](support/documentation/article/response-format/responseFormat.md)\u003cbr/\u003e\n  Explains structuring and rendering of server-side responses in `klokwrk-project` applications.\n* [Random UUID as a Primary Key in the Relational Database](support/documentation/article/random-uuid-as-database-primary-key/random-uuid-as-database-primary-key.md)\u003cbr/\u003e\n  Discusses the performance issues (and solutions) of random UUIDs used as primary keys in relational databases. It also covers some typical usages of UUIDs like implementing idempotency and retries.\n\nWhile not tightly related to `klokwrk-project` features, the following articles describe some specific challenges that we encountered:\n* [Debugging Gradle internals from IntelliJ IDEA](support/documentation/article/debugging-gradle-from-idea/debugging-gradle-from-idea.md)\u003cbr/\u003e\n  Describes how to effectively debug Gradle 3rd party plugins and Gradle internal classes from IntelliJ IDEA\n* [Taking a Groovy on GraalVM native image journey](support/documentation/article/groovy-graalvm-native-image/groovy-graalvm-native-image.md)\u003cbr/\u003e\n  Deep dive in the process of creating GraalVM native image for Groovy/Micronaut/picocli application.\n\n### Videos\n* [Turning lessons learned of using Axon in a legacy environment to OSS Project Klokwrk](https://www.youtube.com/watch?v=shl847FRVMI) \u003cbr/\u003e\n  Turning lessons learned from using Axon Framework in a complex legacy environment to an open-source Project Klokwrk.\n* [Project Klokwrk: how it helps define software architecture and solves integration and component testing](https://www.youtube.com/watch?v=35oUxjXWNYU) \u003cbr/\u003e\n  In this workshop, we will dive deep into technical details of two interesting Klokwrk features: how it helps in defining software architecture, and how it solves integration and component\n  testing (with event replay).\n\n### Architecture decision log\n`klokwrk-project` maintains a log of architecturally significant decisions by leveraging architecture decision records (ADRs). You can [explore it here](support/documentation/adr/index.md).\n\n### Misc\n* [klokwrk-tool-gradle-source-repack](modules/other/tool/klokwrk-tool-gradle-source-repack/README.md) utility \u003cbr/\u003e\n  The tool for repackaging Gradle source files into an archive suitable to be used as a repository of sources when debugging Gradle internals from IDEA. It is also interesting that the tool is\n  created in Groovy and compiled into GraalVM native image without any reflection related GraalVM configuration.\n* [Lists of 3rd party software issues related to `klokwrk-project`](support/documentation/misc/klokwrkRelatedIssuesInTheWild.md)\n\n## Contributing\nWe appreciate all contributions to Project Klokwrk. If you are interested, please read through [contributing guidelines](./CONTRIBUTING.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcroz-ltd%2Fklokwrk-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcroz-ltd%2Fklokwrk-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcroz-ltd%2Fklokwrk-project/lists"}