A family of small, composable Clojure / ClojureScript libraries for building
real applications: schemas, datastores, transport, build tooling. Each library
stands on its own and is published independently to Clojars under the
com.cleancoders.c3kit group.
This repository is a meta-repo. Each library lives in its own GitHub repository and is mounted here as a git submodule for cross-module work.
| Module | Clojars | Build | Purpose |
|---|---|---|---|
| apron | Core utilities: app lifecycle, schema, log, time, util. JVM + Babashka + cljs. | ||
| bucket | Unified entity-storage API: Datomic, JDBC, in-memory, IndexedDB. | ||
| wire | HTTP / transport for rich-client web apps. Ships wire (Reagent) and wire-core (React-free). |
||
| scaffold | Build / test runner for ClojureScript SPAs and Garden-based CSS. |
Each library publishes independently. Pull only what you need:
;; deps.edn
{:deps {com.cleancoders.c3kit/apron {:mvn/version "2.7.0"}
com.cleancoders.c3kit/bucket {:mvn/version "2.13.1"}
com.cleancoders.c3kit/wire {:mvn/version "4.0.0"} ;; or wire-core
com.cleancoders.c3kit/scaffold {:mvn/version "2.3.4"}}};; project.clj
[com.cleancoders.c3kit/apron "2.7.0"]apron is the foundation — bucket, wire, and scaffold depend on it.
git clone git@github.com:cleancoders/c3kit.git
cd c3kit
git submodule update --initMost real work happens inside a submodule. Each submodule has its own
README, CHANGES.md, CONTRIBUTING.md, test setup, and release process.
cd apron
clj -M:test:specThe bin/ directory has fan-out helpers for cross-module operations
(bin/pullall.sh, bin/pushall.sh, bin/testall.sh). For agent-oriented
context on the meta-repo workflow, see AGENTS.md.
Each library releases independently to Clojars. There is no synchronised
release across the family. See DEPLOY.md for the full per-module
release flow.
We welcome contributions. Before opening a pull request please:
- Read the meta-repo
CONTRIBUTING.mdfor repo conventions. - Read the target submodule's
CONTRIBUTING.md— each library has its own test commands and release notes. - Open or find an issue first. PRs without a linked, maintainer-acknowledged issue are auto-closed.
This project follows the Contributor Covenant Code of Conduct. By participating you agree to abide by it.
Please report security issues privately. See SECURITY.md for
how to reach us — do not open a public issue.
MIT © Clean Coders.



