Built to be shared

Useful by design.
Open by choice.

Focused tools for problems I care about: clearer configuration, executable design rules, expressive tests and documentation that stays close to the code.

01 / Configuration

eoconfig

Configuration that composes.

JavaCompositionImmutability

The problem

Configuration reads can spread parsing, defaults and source selection across an application.

The approach

Small, immutable Java objects provide type-safe access and compose configuration sources through a common interface.

com.github.roroche:eoconfig

02 / Architecture as code

eorules

Make design principles executable.

JavaArchUnitElegant Objects

The problem

Object-oriented design conventions are easy to agree on and hard to enforce consistently in reviews.

The approach

Custom ArchUnit rules turn Elegant Objects principles into automated checks that run alongside the test suite.

com.github.roroche:eorules

03 / Testing

kstreamsmatchers

Readable tests for stream processing.

JavaKafka StreamsHamcrest

The problem

Kafka Streams assertions can hide the behavior under test behind repetitive verification code.

The approach

Custom Hamcrest matchers express expectations for Kafka Streams applications with composable assertions.

com.github.roroche:kstreamsmatchers

04 / Documentation

class-diagram-maven-plugin

Let the code draw the diagram.

JavaMavenClassGraphPlantUML

The problem

Hand-maintained class diagrams drift away from the implementation as a codebase evolves.

The approach

ClassGraph analyzes compiled Java classes and generates configurable PlantUML diagrams within the Maven lifecycle.

com.github.roroche:class-diagram-maven-plugin