https://github.com/gorillalabs/bauhaus
Bauhaus is an opinionated set of foundational modules to optimize DevOps experience with Clojure-based services.
https://github.com/gorillalabs/bauhaus
Last synced: 25 days ago
JSON representation
Bauhaus is an opinionated set of foundational modules to optimize DevOps experience with Clojure-based services.
- Host: GitHub
- URL: https://github.com/gorillalabs/bauhaus
- Owner: gorillalabs
- Created: 2025-03-04T09:15:39.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-03-11T09:27:05.000Z (3 months ago)
- Last Synced: 2025-03-31T13:17:37.847Z (2 months ago)
- Language: Clojure
- Homepage:
- Size: 57.6 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Bauhaus
Bauhaus is an opinionated set of foundational modules to optimize DevOps experience with Clojure-based services.
## Overall design
We explain our goals and design choices in the [Design Choices](docs/design-choices.md) document.
Bauhaus is a set of modules that are designed to be used together.
The modules are designed to be used with [Integrant](https://github.com/weavejester/integrant),
but can be used without it.It is the distillation of the experience of running Clojure services in production in several different organizations.
## Usage
There is an example application showing usage in [applications/example](applications/example) and an example http
service showing more elaborate usage in [application/example-http-service](applications/example-http-service).See [Documentation: Intro](docs/intro.md) 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.```clojure
{:deps {...
org.gorillalabs.bauhaus/setup-logging {:git/url "[email protected]:gorillalabs/bauhaus.git"
:git/sha "AE..." ;; see https://github.com/gorillalabs/bauhaus/commits/main/
:deps/root "modules/setup/logging"}
...
}}
```## Modules
### Setup
| Module | Path | Description |
|--------|------|-------------|
| [Logging](modules/setup/logging/README.md) | [modules/setup/logging](modules/setup/logging) | setup proper logging infrastructure, fighting the JVM logging chaos. |
| [Shutdown](modules/setup/shutdown/README.md) | [modules/setup/shutdown](modules/setup/shutdown) | provide ordered shutdown hooks as proposed in [Killing me softly: Graceful shutdowns in Clojure](https://medium.com/helpshift-engineering/achieving-graceful-restarts-of-clojure-services-b3a3b9c1d60d) |
| [CLI](modules/setup/cli/README.md) | [modules/setup/cli](modules/setup/cli) | setup a CLI for your application. |### Dev-Tooling
| Module | Path | Description |
|------------------------------------------------|------|------------------------------------------------------------|
| [Config](modules/dev-tooling/config/README.md) | [modules/dev-tooling/config](modules/dev-tooling/config) | Handle development config and ease Integrant REPL integration. |
| [Build](modules/dev-tooling/build/README.md) | [modules/dev-tooling/build](modules/dev-tooling/build) | Support building your app. |### Clojure Contrib
| Module | Path | Description |
|-----------------------------------------------|------|------------------------------------------------------------|
| [Collection](modules/clojure-contrib/collection/README.md) | [modules/clojure-contrib/collection](modules/clojure-contrib/collection) | Collection utilities. |