Bauhaus is an opinionated set of foundational modules to optimize DevOps experience with Clojure-based services.
We explain our goals and design choices in the Design Choices document.
Bauhaus is a set of modules that are designed to be used together. The modules are designed to be used with Integrant, but can be used without it.
It is the distillation of the experience of running Clojure services in production in several different organizations.
There is an example application showing usage in applications/example and an example http service showing more elaborate usage in application/example-http-service.
See Documentation: Intro for a more detailed introduction utilizing the two example applications.
And while we keep bauhaus in a monorepo, this does not mean that you have to follow our path here. You can use the modules independently, even within your git-based deps.edn dependencies.
{:deps {...
org.gorillalabs.bauhaus/setup-logging {:git/url "git@github.com:gorillalabs/bauhaus.git"
:git/sha "AE...<commit sha>" ;; see https://github.com/gorillalabs/bauhaus/commits/main/
:deps/root "modules/setup/logging"}
...
}}
Module | Path | Description |
---|---|---|
Logging | modules/setup/logging | setup proper logging infrastructure, fighting the JVM logging chaos. |
Shutdown | modules/setup/shutdown | provide ordered shutdown hooks as proposed in Killing me softly: Graceful shutdowns in Clojure |
CLI | modules/setup/cli | setup a CLI for your application. |
Module | Path | Description |
---|---|---|
Config | modules/dev-tooling/config | Handle development config and ease Integrant REPL integration. |
Build | modules/dev-tooling/build | Support building your app. |
Module | Path | Description |
---|---|---|
Collection | modules/clojure-contrib/collection | Collection utilities. |