Lambda Island Open Source is a collection of Clojure/ClojureScript libraries and tools created by the same people who brought you Lambda Island Education.
Look at the RELEASES file to see what we've been up to.
Kaocha is our flagship project, a test runner for the future. Easy to use, rich in features, extensible, and built with tooling in mind.
Kaocha is actually a collection of projects, which includes kaocha-cljs, kaocha-junit-xml, kaocha-cloverage, kaocha-cucumber, and kaocha-boot.
Corgi is a unbundled vim-style Emacs configuration for Clojure developers and teams. It provides a great Clojure development experience out of the box. By being minimal and having reproducibel installs it has good performance and is uber-stable, while still leaving room for customization by the user.
CSS-in-Clj(s). Create styled components in your Clojure or ClojureScript code, which compile to plain CSS files and Hiccup/Reagent style component functions. Keep your styling and markup separated but co-located. Works with Garden CSS syntax, or with Tailwind-style utility classes.
Our take on the Hiccup templating syntax for writing HTML inside Clojure.
Provides escaping by default to prevent cross site scripting attacks, and
supports fragments (:<>) and functions-as-components, just like Reagent. This
library is clojure (backend) only, but can help to write cross-platform
components by supporting some of the same Hiccup extensions as Reagent. Pairs
well with Ornament.
Deep-diff is our most downloaded project, it compares Clojure data structures and gives an easy to scan visual overview of the differences. This is a spin-off from Kaocha, where it is used to provide clearer error messages when tests fail.
Test factories for fun and profit. Gongxi Facai!
Port of the Faker Ruby gem, generate dummy values for your tests, factories, or UI demos.
still in alpha
Regal is Clojure's ultimate regular expression library. It provides a Hiccup-like syntax for regular expression, and eases the burden of writing cross-platform code. With its support for string generation it pairs wonderfully with generative testing, and its parser can be used to manipulate regular expressions as data, and to convert between Java and JavaScript regexes.
A idiomatic and cross-platform URI library. RFC-compliant to the dot, it also contains helpers for normalization, and for manipulating query strings.
Classpath/classloader/deps.edn related utilities. Inspect the current classloader stack, manipulate the classpath, and provide hot-reloading for deps.edn.
A ClojureScript logging library based on goog.log, inspired by pedestal.log.
It does syntax highlighting, plays well with cljs-devtools, and allows tweaking
the log level per namespace.
Convert ANSI escape codes (the ones used to provide color in terminal applications), and convert to Hiccup. Valuable if you're putting anything Terminal-based onto the web.
still in alpha
A browser-based ClojureScript test runner with a delightful UI, built with auto-reload workflows in mind.
Funnel is a WebSocket message relay. It accepts connections from multiple clients, and then acts as a go-between, funneling messages between them, with flexible mechanisms for setting up message routing. It also provides discoverability, so clients can find out who is there to talk to.
Clojure and ClojureScript client implementations, to make it easy to build funnel-based tools.
project site | rel-clienteases
Read/write newline-separated EDN files.
An idiomatic, promises-based wrapped for JavaScript's fetch.
Lightweight and idiomatic ClojureScript local time/date library
Define print handlers for custom or third party types easily. Cross platform and with support for multiple printing backends.
Implement print handlers (through data-printers) for various JavaScript types.
This way instead of printing #object[HTMLElement] you'll get #js/Element [:div "hello"].
Globbing and other shell/file utils
2D pathfinding for ClojureScript, primarily for use in games. A wrapper around hxDaedalus-js.
Wrapper for the Pixi.js rendering library, and other game development utilities.
still in alpha
2D physics engine API, Uses jBox2D on Clojure, and Planck.js on ClojureScript.
A Clojure API and Plugin for Bukkit-based Minecraft server. Manipulate the Minecraft world from a REPL.
project site | releases plugin site | plugin releases
Build a static site based on your reitit routes.
Turn Metabase into a dashboard engine. Provides an idempotent API for programatically creating dashboards in Metabase and embedding them inside your application.
A Datomic database connector for Metabase. This was created before Datomic Analytics, and so no longer actively maintained. You can use Datomic Analytics and Presto/Trino to connect to Metabase instead. That said it can still provide some benefits because it supports some Datomic features directly, or can serve as a basis for implementing connectors for other Datalog databases.
Proxy server for debugging nREPL messages.
still in alpha
Generated complex graphs of entities with Specmonstah and Malli.
still in alpha
Build rich terminal applications with Hiccup. An ongoing research project.
still in alpha
Visualize Clojure.zip zippers with graphviz.
Component to watch Garden namespaces for changes, and recompile them to CSS on the fly.
We have a style guide that applies to all of our projects.
Our preferred open source/free software license is the Mozilla Public License v2.0 (a less intrusive copyleft license), although some of our projects still use the Eclipse Public License.
We prefer Clojure CLI over Leiningen, although some projects may still use
project.clj instead of deps.edn.
We like to run our tests through Kaocha on CircleCI.
All our projects are covered by the Contributor Covenant Code of Conduct.
A code of conduct is important to set a baseline for how we expect people to behave, however we aspire to go above and beyond that. On the internet people don't see your face, they don't hear your tone of voice. What was intended as simply a brief response can easily be construed as rude or unhelpful.
To counter this it is good to be a little "extra" in your communication. Say "please" and "thank you", be clear and explicit, explain your reasoning, use emoji and animated gifs. Seriously we love gifs! (jifs?)
Particating in open source can be daunting, overwhelming, and scary. Make it clear that people are welcome, that their concerns are valid, and that they have a right to contribute.
We aspire to have "first-timers only" issues on every project that is under active development. These are issues that have it spelled out in very fine detail what needs to happen. These issues are only open to people who have not contributed to Lambda Island projects before.
If you find value in our work please consider becoming a backer on Open Collective
| Project | CI | Docs | Release | Coverage |
|---|---|---|---|---|
| kaocha | ||||
| kaocha-cljs | ||||
| kaocha-cucumber | ||||
| kaocha-junit-xml | ||||
| kaocha-cloverage | ||||
| kaocha-boot | ||||
| deep-diff2 | ||||
| uri | ||||
| glogi | ||||
| ansi | ||||
| chui | ||||
| edn-lines | ||||
| fetch | ||||
| regal |


