Awesome Clojure Overview
A curated list of awesome Clojure libraries and resources. Inspired by awesome-... stuff
🏠 Home · 🔥 Feed · 📮 Subscribe · ❤️ Sponsor · 😺 razum2um/awesome-clojure · ⭐ 2.6K · 🏷️ Programming Languages
Awesome Clojure
-
- OneKeePass (⭐111): A secure password manager and mobile app in ClojureScript (⭐73)
- Penpot: design and prototyping platform
- LightTable (IDE) (archived)
- Maria.cloud (Online IDE for beginners)
- Riemann (Monitoring)
- Precursor (Online prototyping tool)
- Puppet Server (⭐286)
- PuppetDB (⭐294)
- Metabase (⭐36k)
- Metabase Datomic (⭐63)
- CircleCI
- Avi (vim rewrite) (⭐214)
- Liquid (Text Editor) (⭐957)
- Clojupyter (⭐812)
- meins (⭐11)
- Jepsen (⭐6.6k)
- Braid (⭐916): a team-chat app with a novel UI that leads to better conversations
- Accelerated Text (⭐789): a natural language generation environment (backend: Clojure, frontend: JS)
- Ziggurat (⭐389): a framework built to simplify Stream processing on Kafka
- Nightcode (⭐1.4k): An IDE for Clojure (archived)
- Nightlight (⭐789): text editor (archived)
- Atea (⭐612): a minimalistic menu bar time tracker for MacOS (legacy, requires jvm 1.6)
- herfi (⭐106) - 3D multiplayer game prototype written in Clojure and ClojureScript
- racing-game-cljs (⭐234) - A 3D racing game built with ClojureScript, React and ThreeJS
Awesome SaaS (partially OSS) in Clojure
- Logseq (⭐30k): knowledge management and collaboration (open frontend)
-
- Awesome macros usage
- Advanced datastructures
- Web Framework
- Dependency injection
- Build Automation and Package management
- Version Control Management
- Date and Time
- GUI
- Audio
- HTTP
- Database
- Connection pools
- Structural Migrations
- Redis
- JSON
- Protocol Buffers and gRPC
- ORM and SQL generation
- Security
- RESTful API
- GraphQL API
- Emails
- HTML Manipulation
- Data Validation
- Type System
- Pattern Matching
- Async processing
- Monads
- WebSocket
- Testing
- Webdriver automation
- Code Analysis and Linter
- Science and Data Analysis
- Machine Learning
- Computer Vision
- Text Processing
- Parsing
- Editor Plugins
- Documentation
- Literate Programming
- Archives and Compression
- Miscellaneous
- Debugging tools
- CI
- Project Management
- Terminal UI
- Graphviz
Awesome macros usage
Answers why the lisp shines, killer features in action
- core.async (⭐1.9k) - transforms AST into CSP programs
- cloroutine (⭐225) - suspends and continuations (coroutines)
- missionary (⭐600) - a reactive dataflow programming toolkit
- photon (⭐7) - realtime web, like Meteor, but for Clojure(Script)
- metaclj (⭐79) - staged compilation
- meander (⭐906) - transparent data transformation using datastructure pattermatching
- proteus (⭐111) - introduce mutable variables (don't use, just learn how to map your mind into immutable world)
Advanced datastructures
- specter (⭐2.5k): an elegant API for querying and transforming nested and recursive data
- meander (⭐906): transparent data transformation (defined as pattern-matching)
- Persistent AVL trees (⭐124): persistent sorted maps and sets with log-time rank queries
- Finger Tree (⭐213): double-list, counted-double-list, counted-sorted-set
- Hitchhiker Tree (⭐1.2k): create fast, snapshottable, massively scalable databases
- Hierarchical set (⭐7)
- Ordered (⭐255): ordered sets and maps
- Lazy Map (⭐48): whose values are only calculated when accessed
- Duratom (⭐193): persisted atoms
- Durable Queue (⭐381): queue persisted on disk
- bifurcan (⭐957): linear map/set/list (stores entries contiguously in memory), ;writtern in java, but test suite (read: usage examples) in clojure (⭐957)
Web Framework
Actually don't search rails/django here, but compose them by yourself
- Compojure (⭐4.1k)
- Compojure-api (⭐1.1k)
- Luminus
- Duct (⭐1.1k)
- Pedestal (⭐2.7k)
- Datsys (⭐230)
- yada (⭐732)
- Hoplon
- Fulcro (⭐1.5k)
- Coast
- Reitit (⭐1.4k)
- Tadam
- Column
- Biff
Dependency injection
Managed lifecycle of stateful objects
- Component (⭐2.1k)
- System (⭐607)
- mount (⭐1.2k)
- Integrant (⭐1.2k)
- clip (⭐226)
- piotr-yuxuan/closeable-map (⭐56)
- darkleaf/di (⭐31)
Build Automation and Package management
Libraries for project build automation and package/dependency management.
- Leiningen (⭐7.3k)
- Boot (⭐1.7k)
- tools.build
- clojurephant (⭐171) (Gradle plugin)
- shadow-cljs (⭐2.2k) (Clojurescript)
Version Control Management
Code utilities for interacting with VCS software
Date and Time
Libraries for working with dates and times.
- clj-time (⭐737)
- clojure.java-time (⭐451) - Java 8 Date-Time API
- holi (⭐4) - Calendar operations that are aware of weekends and holidays
- timewords (⭐29)
- tick (⭐583): Clojure(Script) library, intended as replacement for clj-time
GUI
Audio
HTTP
Libraries for working with HTTP.
- clj-http (⭐1.8k) : Apache HttpComponents client wrapper
- http-kit (⭐2.4k) : Simple, high-performance event-driven HTTP client and server
- ring (⭐3.7k) : HTTP server abstraction
- kvlt (⭐69) : Uniform, asychronous client interface for HTTP across JVM / Node / browsers
- aleph (⭐2.5k) : Async client/server based on Netty, with defaults for HTTP, TCP and UDP
- hato (⭐354) : An HTTP client for Clojure, wrapping JDK 11's HttpClient
Database
Databases and database client libraries
- Datomic
- xtdb (⭐2.4k): bitemporal database for SQL, Datalog & graph queries
- Datahike (⭐1.6k)
- Datascript (⭐5.3k)
- Datalevin (⭐1k)
- next.jdbc (⭐726)
- clojure.java.jdbc (⭐712)
- clojure.jdbc (⭐105)
- cravendb (⭐61)
- Monger: for MongoDB
- Monglorious: for MongoDB
- clj-rethinkdb (⭐204): for RethinkDB
- Revise (⭐146): for RethinkDB
- Spandex (⭐257): for ElasticSearch
- Elastisch: for ElasticSearch
- neocons: for Neo4j
- Alia (⭐245): for Cassandra
- aerospike-clj (⭐28): 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 (⭐443)
- Korma (⭐1.5k)
- Specql (⭐130)
- stch-library/sql (⭐41)
- sqlingvo (⭐208)
- sqlium
- honeysql (⭐1.7k)
- Toucan (⭐570)
Security
Authentication, authorization and other security related libraries.
- Buddy (⭐826)
- caesium (⭐176) (libsodium bindings)
- Friend (⭐1.2k)
- secrets.clj (⭐87)
- bolt (⭐123)
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.
- Guardrails (⭐221)
- Malli (⭐1.4k)
- Validateur
- Prismatic's schema (⭐2.4k)
- Bouncer (⭐361)
- clova (⭐14)
- Orchestra (⭐619)
- struct (⭐119)
- domaintypes (⭐6)
Type System
Optional type system for Clojure
Pattern Matching
Async processing
Monads
WebSocket
Testing
Webdriver automation
Code Analysis and Linter
- Slamhound (⭐474)
- eastwood (⭐1.1k)
- kibit (⭐1.8k)
- yagni (⭐218)
- lein-bikeshed (⭐177)
- spectrum (⭐591)
- cloverage (⭐504)
- clj-kondo (⭐1.7k)
- splint (⭐85)
Science and Data Analysis
Libraries, extended REPLs, and other tools for scientific and statistical data anylysis and visualization.
- Incanter (⭐2.2k)
- Cascalog
- Onyx (⭐2k)
- sparklling (⭐444)
- flambo (⭐608)
- Neanderthal (⭐1k)
- Streaming Histograms (⭐152)
- Gorilla REPL
- Bayadera - Bayesian Data Analysis on the GPU (⭐360)
- ClojureCUDA (⭐173)
- Neanderthal - fast matrix and linear algebra (⭐1k)
- ClojureCL - parallel computations with OpenCL (⭐273)
- Loom - graph library for Clojure (⭐878)
Machine Learning
- neanderthal (⭐1k): fast matrix library
- clojurecuda (⭐173)
- clojurecl (⭐273)
- bayadera (⭐360): bayesian data analysis on the GPU
- cortex (⭐1.3k)
- Flare (⭐284)
- MXNet - Clojure API
- clj-bigml (⭐49)
- Deeplearning4j (⭐13k)
- Enclog (⭐136)
- lambda-ml (⭐75)
- clojure-tensorflow (⭐111)
- dl4clj (deeplearning4j to clojure) (⭐99)
- Anglican
- clj-ml (⭐147)
- Clatern (⭐67)
- k9 (⭐104)
- Statistiker (⭐63)
- Synaptic (⭐88)
- Infer (⭐176)
- clj-synapses (⭐1)
- scicloj.ml (⭐197)
Computer Vision
- origami (⭐113): OpenCV 4 wrapper
- clj-tesseract (⭐55)
- vision
Text Processing
Parsing
- Instaparse (⭐2.7k)
- kern (⭐235)
- duckling (⭐1.3k)
- buran (⭐31) - RSS/Atom feed consumer and producer
Exceptions and Error Handling
Rule-based Programming
Editor Plugins
- Calva (VSCode) (⭐1.5k)
- clojure-lsp (multiple editors) (⭐1.1k)
- CIDER (Emacs) (⭐3.5k)
- smartparens (Emacs) (⭐1.8k)
- rainbow-delimiters (Emacs) (⭐655)
- aggressive-indent (Emacs) (⭐833)
- Conjure (Neovim) (⭐1.6k)
- vim-cljfmt (Vim) (⭐152)
- vim-eastwood (Vim) (⭐84)
- vim-fireplace (Vim) (⭐1.7k)
- vim-redl (Vim) (⭐106)
- vim-leiningen (Vim) (⭐197)
- rainbow_parentheses.vim (Vim) (⭐375)
- vim-iced (Vim) (⭐511)
- Cursive (IntelliJ)
- proto-repl (Atom)
- Parinfer (multiple editors)
- Bracket Pair Colorizer (VSCode)
- clojureVSCode (VSCode) (⭐205)
- Notepad++ (⭐20): modified config files of Lisp
Documentation
Utilities and libraries for (non-LP) code and project documentation
Literate Programming
Archives and Compression
Miscellaneous
- potemkin (⭐564) - reexport vars in another ns / act like a clojure map
- clj-tuple (⭐179)
- slingshot (⭐642)
- virgil (⭐274)
- javastar (⭐64)
- riddley (⭐193)
- kezban (⭐41)
- clj-grpc (⭐15)
Debugging
- flow-storm-debugger (⭐623)
- playback (⭐87)
- tools.trace (⭐355)
- debugger (⭐264)
- debug-repl (⭐150)
- ritz (⭐320)
- redl (⭐33)
- limit-break (⭐25)
- spyscope (⭐578)
- aprint (⭐129)
- packed-printer (⭐37)
- pretty (⭐588)
- prone (⭐511)
- figwheel (⭐2.9k)
- ultra (⭐1.2k)
- mate-clj (⭐57)
- scope-capture (⭐557)
CI
Project Management
Terminal UI
Graphviz
- zipper-viz (⭐8)
- dorothy (⭐241)
- viz.cljc (⭐31)
- fsmviz (⭐50)
- rhizome (⭐446)
- re-frame-flow (⭐145) - Graph based visualization tool for re-frame event chains (ClojureScript)
Game Development
- jme-clj (⭐131) - A Clojure 3D Game Engine (Wrapper), Powered by jMonkeyEngine
- play-cljc (⭐519) - A Clojure and ClojureScript game library
Guides
- The Clojure Style Guide (⭐4k)
- Clojure Distilled
- clojure-cookbook (⭐2.6k)
- A Brief Beginner's Guide To Clojure
- Clojure for the Brave and True
- Clojure from the ground up
- Error message catalog (⭐446)
- 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.