Awesome ClojureScript
A community driven list of ClojureScript frameworks, libraries and wrappers.
Books
Canvas
Monet 143 13 – A small ClojureScript library to make it easier to work with canvas and visuals.
Quamolit – A tiny declarative animation library , inspired by React.
Client/Server Communication
Cumulo server /client – A pair of libries to sync data among clients, based on WebSocets and diff/patch.
Fetch 205 31 – A ClojureScript library that makes client/server interaction painless.
Code Analysis
kibit 1k 115 — Static code analyzer to find patterns of code that could be rewritten with a more idiomatic function or macro.
Data Serialization
Cljson 56 2 – Clojure/ClojureScript library for accelerated browser data deserialization.
Transit 218 14 – A data interchange format and set of libraries for conveying values between applications written in different programming languages.
Data Visualization
C2 – It lets you declaratively create HTML and SVG markup based on data.
Database
Datascript 3k 203 – An immutable in-memory database and Datalog query engine in ClojureScript.
Jaki 9 5 – A simple ClojureScript CouchDB client.
Konserve 55 2 – A clojuresque key-value/document store protocol with core.async.
Development
Ambly 495 26 — A ClojureScript REPL into iOS JavaScriptCore.
cljs-devtools 747 30 – Better presentation of ClojureScript values in Chrome Devtools.
Devcards 1k 94 – Devcards aims to provide a visual REPL experience for ClojureScript.
lein-cljsbuild 1k 200 — A Leiningen plugin to make ClojureScript development easy.
lein-figwheel 2k 220 – Leiningen plugin that pushes ClojureScript code changes to the client.
Lumo 1k 62 – Fast, cross-platform, standalone ClojureScript environment.
Planck 879 82 – A stand-alone ClojureScript REPL for macOS and Linux based on JavaScriptCore.
Ribol – Conditional restarts for clojure/clojurescript.
shadow-cljs 204 9 - ClojureScript compilation made easy
Document Object Model
cljs-binding 59 5 – It binds html elements to ClojureScript functions.
Crate 187 22 – A ClojureScript implementation of Hiccup.
Dominator 79 5 – Virtual-Dom in ClojureScript.
Dommy – A no-nonsense ClojureScript templating and DOM manipulation library.
Enfocus – A DOM manipulation and templating library for ClojureScript inspired by Enlive.
Freactive 413 33 – A high-performance, pure Clojurescript, declarative DOM library inspired by reagent, om, reflex and hiccup.
Hiccups 87 9 – A ClojureScript port of the Hiccup.
Hickory 291 25 – It parses HTML into Clojure data structures, so you can analyze, transform, and output back to HTML.
json-html 37 3 – Provide JSON and get a DOM node with a human representation of that JSON.
Kioo 414 45 – DOM manipulation and templating library for Facebook's React and Om in ClojureScript.
Sablono 607 66 – Lisp/Hiccup style templating for Facebook's React in ClojureScript.
Documentation
codox 443 77 – A tool for generating API documentation from Clojure or ClojureScript source code.
Graphics
geom 474 44 – A 2D/3D geometry toolkit for Clojure/Clojurescript.
HTTP Handler
Castra 89 12 – An HTTP remote procedure call handler for Clojure.
Internationalization
Tower 270 28 – A Clojure(Script) i18n & L10n library.
Tempura 95 4 - A Clojure(Script) i18n library, succeeding Tower
JavaScript Interoperability
CLJSJS – An easy way for Clojurescript developers to depend on Javascript libraries.
Jayq 423 63 – A ClojureScript wrapper for jQuery.
Purnam – A ClojureScript library designed to provide better clojurescript/javascript interop, testing and documentation tools.
Pylon 28 1 – A Javascript class system in 100% Clojurescript.
Miscellaneous
Automat 205 10 – A Clojure(Script) library for defining and using finite-state automata, inspired by Ragel.
Bardo 50 1 – A Clojure(Script) library for functional interpolation and transitions.
core.async 1k 171 – A Clojure(Script) library designed to provide facilities for async programming and communication.
Entanglement – It creates atoms from other atoms and links the data together.
Garden 858 52 – A library for rendering CSS in Clojure and ClojureScript.
inflections-clj 155 19 – Rails-like inflection library for Clojure and ClojureScript.
Instaparse 93 6 – It aims to be the simplest way to build parsers in ClojureScript.
Keybind 37 3 – Library for handling key bindings (shortcuts) in browser.
markdown-clj 352 89 – Markdown parser in Clojure/ClojureScript.
om-tools – It aims to provide higher-order abstractions and utilities frequently useful when building components with Om's API.
Quil 2k 143 – A processing and graphics programming library.
reforms 165 7 – Beautiful Bootstrap 3 forms for Om and Reagent.
reagent-forms 236 78 – Bootstrap form components for Reagent.
Respo 16 2 – A Respo nsive DOM library, inspired by React.
Sepal.clj 13 2 – A library to generate Clojure code from a vector of strings and vectors with macro system.
Truss 193 10 – An opinionated assertions API for Clojure/ClojureScript.
Brutha 133 2 – A simple and functional ClojureScript interface to React.
Om 3k 273 — A powerful interface to React, makes use of its object oriented structures.
Quiescent 637 48 — It favors functional style, fully stateless.
re-com 477 113 – A ClojureScript library of reusable components for Reagent.
Reagent — Minimalistic, feature complete.
Rum 967 83 — Decomplected, extensible, simple.
Reactive Programming
Javelin 194 14 – A Functional Reactive Programming library for ClojureScript.
Manifold-cljs — A port of Manifold 503 74 to ClojureScript.
Reagi 135 9 – An FRP library for Clojure and ClojureScript, built on top of core.async.
rx-cljs 18 4 – A ClojureScript wrapper for Reactive Extensions (Rx) for Javascript.
Yolk 36 3 – A thin ClojureScript wrapper around bacon.js.
Routing
Bidi 740 97 – A Clojure(script) data driven routing library.
Router 73 4 – Bidirectional Ring router for Clojure/Script. REST oriented.
Secretary 329 24 – A client-side router for ClojureScript.
Silk 216 12 – An isomorphic routing library for Clojure & ClojureScript.
State Management
component 1k 90 – Managed lifecycle of stateful objects in Clojure(Script).
hodgepodge – A idiomatic ClojureScript interface to HTML5 Storage.
mount 637 54 – A beautifl idiomatic state management library.
plato 18 1 – Incrementally persists atom state to Local Storage in ClojureScript.
storage-atom 145 13 – ClojureScript atoms backed by HTML5 web storage.
Waltz 93 13 – A ClojureScript library that helps manage state in client-side applications using non-deterministic finite state machines.
Testing
cljs.test 8k 795 – Integrated test framework for ClojureScript (merged from clojurescript.test 142 28 )
Expectations – A minimalist's unit testing framework.
Speclj 403 61 – A TDD/BDD framework for Clojure and ClojureScript.
test.check 822 87 – A generative property-based testing tool inspired by QuickCheck.
Validation
Bouncer 335 35 – A validation DSL for Clojure & Clojurescript applications.
Validateur – A Clojure validation library inspired by Ruby's ActiveModel.
Web Framework & Template
atw-om 31 5 – A web application template with Clojure/Compojure, ClojureScript/Om & core.async.
Chestnut 1k 129 – An Application template for ClojureScript/Om with live reloading.
Clops 146 6 – An opinionated, full stack and easy to use web framework.
descjop 314 14 – A template for Web based desktop application with Electron.
electron-template 99 8 – A template for creating web based desktop applications with Electron, ClojureScript and Reagent.
Fulcro - A library for development of single-page full-stack web applications in clj/cljs.
Hoplon – Write everything in Clojure and ClojureScript, clientside and serverside.
Keechma – Micro frontend framework for ClojureScript and Reagent.
Luminus – It aims to provide a robust, scalable, and easy to use platform.
Macchiato 126 9 – It aims to provide an easy to use platform for Node.js.
Mies 347 53 – A minimal ClojureScript project template.
Precept 370 14 - A declarative programming framework.
re-frame 3k 456 – A Reagent Framework For Writing SPAs, in Clojurescript.
Tenzing – A ClojureScript template with no backend that uses Boot.
WebFUI 212 15 – Client-Side Web Framework for ClojureScript.
WebSockets
Chord 135 16 – Designed to bridge the gap between the triad of CLJ/CLJS, web-sockets and core.async.
Sente 1k 136 – Clojure(Script) + core.async + WebSockets/Ajax.
Contributing
All contributions are welcome. Please read Contributing before opening a pull request.
License
Han Tuzun has dedicated the work to the public domain by waiving all of his rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.
You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.