Libraries for building kotlin services


License
Apache-2.0

Documentation

CircleCI codecov Maven Central

Tribe Dynamics' Leaky Cauldron

Description

Leaky Cauldron contains a collection of libraries used for building kotlin services.

It's where [drop]wizards get their guice!

Versioning

Release version are of the form X.Y.Z where:

  • X: Major version, incremented when a subjectively "major" change happens
  • Y: Minor version, incremented when a breaking, backwards incompatible change happens
  • Z: Build version, incremented for every build

To uptake all new features and bugfixes without breaking changes, downstream projects can depend on a version range of the form [X.Y.1,X.W-SNAPSHOT), where W = Y + 1 (eg. [1.7.1,1.8-SNAPSHOT) for 1.7.*).

Getting Started

Install jdk and maven

  • Install openjdk 17 or newer
  • Install maven 3.5 or newer

Build and run tests

  • Building with maven will run tests
mvn clean install
  • View test coverage reports for each module at ${module}/target/site/jacoco/index.html

  • To use the Leaky Cauldron in a service of your own, see this example for a recommended project skeleton

Project Layout

Note that most modules make use of Guice for dependency injection of configured instances.

This contains resources for use during a maven build. If depended upon, it should only be brought into test scope.

This contains the parent pom to be used for all maven projects at Tribe.

This contains classes and Guice modules for configuring Jackson objects to work with Tribe codebases.

This contains classes that enhance writing unit tests.

This contains classes for parsing HOCON application.conf files with support for environmental overrides and AWS KMS-based encrypted values.

This contains classes for injecting configured jOOQ DSLContexts and JDBC DataSources into application data access code.

This contains classes for setting up a configurable Dropwizard based application.

This contains classes for adding GraphQL support to an application.