Project Klokwrk is envisioned at CROZ as a 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.
The vision behind Klokwrk could be expressed in different ways, but essentially we could put it like this:
- FOR software architects and teams
- WHO are building microservice systems
- THE Klokwrk is a showcase and a blueprint
- THAT demonstrates how to set up the clean technical architecture of a complex system properly
- UNLIKE many Hello World examples that focus narrowly on just proving the concept
- OUR PRODUCT represents a holistic foundation/showcase that better addresses real-world challenges by leveraging DDD, Clean Architecture, CQRS & Event Sourcing principles, and relying on the power and expressiveness of Spring Boot, Axon, and Groovy.
Being 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 from a clean foundation. Klokwrk will strive to demonstrate good practices on non-trivial use cases, accompanying them with appropriate documentation.
At 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 in its very early stages, we are hoping it might attract some attention and feedback.
A much broader story about Project Klokwrk's vision and roadmap can be found in the following blog posts:
Klokwrk is an open-source project, started by Damir Murat, one of our senior architects, with the active contribution of the broader team at CROZ.
There are several articles describing some klokwrk-project
features in more details:
- Starting up and trying the whole thing
Step-by-step tutorial describing how one can run and tryklokwrk-project
. - Organizing modules and packages
Discussion about principles and ideas behind organizing high-level artifacts of a project and using hexagonal architecture in CQRS/ES context. - The format of rendered responses
Explains structuring and rendering of server-side responses inklokwrk-project
applications.
While not tightly related to klokwrk-project
features, the following articles describe some specific challenges that we encountered:
- Debugging Gradle internals from IntelliJ IDEA
Describes how to effectively debug Gradle 3rd party plugins and Gradle internal classes from IntelliJ IDEA - Taking a Groovy on GraalVM native image journey
Deep dive in the process of creating GraalVM native image for Groovy/Micronaut/picocli application.
- Turning lessons learned of using Axon in a legacy environment to OSS Project Klokwrk
Turning lessons learned from using Axon Framework in a complex legacy environment to an open-source Project Klokwrk. - Project Klokwrk: how it helps define software architecture and solves integration and component testing
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 testing (with event replay).
klokwkr-project
maintains a log of architecturally significant decisions by leveraging architecture decision records (ADRs). You can explore it here.
- klokwrk-tool-gradle-source-repack utility
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 created in Groovy and compiled into GraalVM native image without any reflection related GraalVM configuration. - Lists of 3rd party software issues related to
klokwkr-project
We appreciate all contributions to Project Klokwrk. If you are interested, please read through contributing guidelines.