Clojure
Awesome Clojure ¶
- OneKeePass: A secure password manager and mobile app in ClojureScript
- Penpot: design and prototyping platform
- LightTable (IDE) (archived)
- Maria.cloud (Online IDE for beginners)
- Riemann (Monitoring)
- Precursor (Online prototyping tool)
- Puppet Server
- PuppetDB
- Metabase
- Metabase Datomic
- CircleCI
- Avi (vim rewrite)
- Liquid (Text Editor)
- Clojupyter
- meins
- Jepsen
- Braid: a team-chat app with a novel UI that leads to better conversations
- Accelerated Text: a natural language generation environment (backend: Clojure, frontend: JS)
- Ziggurat: a framework built to simplify Stream processing on Kafka
- Nightcode: An IDE for Clojure (archived)
- Nightlight: text editor (archived)
- Atea: a minimalistic menu bar time tracker for MacOS (legacy, requires jvm 1.6)
- herfi - 3D multiplayer game prototype written in Clojure and ClojureScript
- racing-game-cljs - A 3D racing game built with ClojureScript, React and ThreeJS
- Logseq: knowledge management and collaboration (open frontend)
- jank
- lux
- mal
- scheje
- eden
- ferret
Awesome macros usage¶
Answers why the lisp shines, killer features in action
- core.async - transforms AST into CSP programs
- cloroutine - suspends and continuations (coroutines)
- missionary - a reactive dataflow programming toolkit
- photon - realtime web, like Meteor, but for Clojure(Script)
- metaclj - staged compilation
- meander - transparent data transformation using datastructure pattermatching
- proteus - introduce mutable variables (don't use, just learn how to map your mind into immutable world)
Advanced datastructures¶
- specter: an elegant API for querying and transforming nested and recursive data
- meander: transparent data transformation (defined as pattern-matching)
- Persistent AVL trees: persistent sorted maps and sets with log-time rank queries
- Finger Tree: double-list, counted-double-list, counted-sorted-set
- Hitchhiker Tree: create fast, snapshottable, massively scalable databases
- Hierarchical set
- Ordered: ordered sets and maps
- Lazy Map: whose values are only calculated when accessed
- Duratom: persisted atoms
- Durable Queue: queue persisted on disk
- bifurcan: linear map/set/list (stores entries contiguously in memory), ;writtern in java, but test suite (read: usage examples) in clojure
Web Framework¶
Actually don't search rails/django here, but compose them by yourself * Compojure * Compojure-api * Luminus * Duct * Pedestal * Datsys * yada * Hoplon * Fulcro * Coast * Reitit * Tadam * Column * Biff
Dependency injection¶
Managed lifecycle of stateful objects
Build Automation and Package management¶
Libraries for project build automation and package/dependency management.
- Leiningen
- Boot
- tools.build
- clojurephant (Gradle plugin)
- shadow-cljs (Clojurescript)
Version Control Management¶
Code utilities for interacting with VCS software
Date and Time¶
Libraries for working with dates and times.
- clj-time
- clojure.java-time - Java 8 Date-Time API
- holi - Calendar operations that are aware of weekends and holidays
- timewords
- tick: Clojure(Script) library, intended as replacement for clj-time
GUI¶
Audio¶
HTTP¶
Libraries for working with HTTP.
- clj-http : Apache HttpComponents client wrapper
- http-kit : Simple, high-performance event-driven HTTP client and server
- ring : HTTP server abstraction
- kvlt : Uniform, asychronous client interface for HTTP across JVM / Node / browsers
- aleph : Async client/server based on Netty, with defaults for HTTP, TCP and UDP
- hato : An HTTP client for Clojure, wrapping JDK 11's HttpClient
Database¶
Databases and database client libraries
- Datomic
- xtdb: bitemporal database for SQL, Datalog & graph queries
- Datahike
- Datascript
- Datalevin
- next.jdbc
- clojure.java.jdbc
- clojure.jdbc
- cravendb
- Monger: for MongoDB
- Monglorious: for MongoDB
- clj-rethinkdb: for RethinkDB
- Revise: for RethinkDB
- Spandex: for ElasticSearch
- Elastisch: for ElasticSearch
- neocons: for Neo4j
- Alia: for Cassandra
- aerospike-clj: for Aerospike
Connection pools¶
Database connection pools
Structural Migrations¶
Keeps database and others in sync
Redis¶
JSON¶
Protocol Buffers and gRPC¶
Database Cli¶
ORM and SQL generation¶
DSL for SQL generation. * Walkable * Korma * Specql * stch-library/sql * sqlingvo * sqlium * honeysql * Toucan
Security¶
Authentication, authorization and other security related libraries.
- Buddy
- caesium (libsodium bindings)
- Friend
- secrets.clj
- bolt
RESTful API¶
Libraries for developing RESTful APIs.
GraphQL API¶
Libraries for developing GraphQL APIs.
Emails¶
HTML Manipulation¶
Libraries for working with HTML.
Data Validation¶
Libraries for validating data.
Type System¶
Optional type system for Clojure
Pattern Matching¶
Async processing¶
Monads¶
WebSocket¶
Testing¶
Webdriver automation¶
Code Analysis and Linter¶
Science and Data Analysis¶
Libraries, extended REPLs, and other tools for scientific and statistical data anylysis and visualization.
- Incanter
- Cascalog
- Onyx
- sparklling
- flambo
- Neanderthal
- Streaming Histograms
- Gorilla REPL
- Bayadera - Bayesian Data Analysis on the GPU
- ClojureCUDA
- Neanderthal - fast matrix and linear algebra
- ClojureCL - parallel computations with OpenCL
- Loom - graph library for Clojure
Machine Learning¶
- neanderthal: fast matrix library
- clojurecuda
- clojurecl
- bayadera: bayesian data analysis on the GPU
- cortex
- Flare
- MXNet - Clojure API
- clj-bigml
- Deeplearning4j
- Enclog
- lambda-ml
- clojure-tensorflow
- dl4clj (deeplearning4j to clojure)
- Anglican
- clj-ml
- Clatern
- k9
- Statistiker
- Synaptic
- Infer
- clj-synapses
- scicloj.ml
Computer Vision¶
- origami: OpenCV 4 wrapper
- clj-tesseract
- vision
Text Processing¶
Parsing¶
- Instaparse
- kern
- duckling
- buran - RSS/Atom feed consumer and producer
Exceptions and Error Handling¶
Rule-based Programming¶
Editor Plugins¶
- Calva (VSCode)
- clojure-lsp (multiple editors)
- CIDER (Emacs)
- smartparens (Emacs)
- rainbow-delimiters (Emacs)
- aggressive-indent (Emacs)
- Conjure (Neovim)
- vim-cljfmt (Vim)
- vim-eastwood (Vim)
- vim-fireplace (Vim)
- vim-redl (Vim)
- vim-leiningen (Vim)
- rainbow_parentheses.vim (Vim)
- vim-iced (Vim)
- Cursive (IntelliJ)
- proto-repl (Atom)
- Parinfer (multiple editors)
- Bracket Pair Colorizer (VSCode)
- clojureVSCode (VSCode)
- Notepad++: modified config files of Lisp
Documentation¶
Utilities and libraries for (non-LP) code and project documentation
Literate Programming¶
Archives and Compression¶
Miscellaneous¶
- potemkin - reexport vars in another ns / act like a clojure map
- clj-tuple
- slingshot
- virgil
- javastar
- riddley
- kezban
- clj-grpc
Debugging¶
- flow-storm-debugger
- playback
- tools.trace
- debugger
- debug-repl
- ritz
- redl
- limit-break
- spyscope
- aprint
- packed-printer
- pretty
- prone
- figwheel
- ultra
- mate-clj
- scope-capture
CI¶
Project Management¶
Terminal UI¶
Graphviz¶
- zipper-viz
- dorothy
- viz.cljc
- fsmviz
- rhizome
- re-frame-flow - Graph based visualization tool for re-frame event chains (ClojureScript)
Game Development¶
- jme-clj - A Clojure 3D Game Engine (Wrapper), Powered by jMonkeyEngine
- play-cljc - A Clojure and ClojureScript game library
Guides¶
- The Clojure Style Guide
- Clojure Distilled
- clojure-cookbook
- A Brief Beginner's Guide To Clojure
- Clojure for the Brave and True
- Clojure from the ground up
- Error message catalog
- Clojure by Example
Video tutorials¶
YouTube¶
- Misophistful's channel: Understand concepts such as list comprehension, threading macros, generative testing, destructuring, core.match and introductions to Light Table, Datomic and Game development with Clojure
- Fred Overflow's channel: Introductions to Functional programming and TDD with Clojure
- Clojure Pills screencast: Introduction to Clojure one function at a time
- Clojure Pills screencast: Fun and beginner friendly content related to the overall clojure ecosystem
- Data persistance with Postgres, Clojure and JDBC
- Clojure Tutorials by Timothy Baldridge: More advanced videos on core.async, transducers, transients, logic programming and a "Function of the day" series.