/awesome-clojure

A curated list of awesome Clojure libraries and resources. Inspired by awesome-... stuff

Primary LanguageClojure

Awesome Clojure Awesome

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

Dependency injection

Managed lifecycle of stateful objects

Build Automation and Package management

Libraries for project build automation and package/dependency management.

Version Control Management

Code utilities for interacting with VCS software

Date and Time

Libraries for working with dates and times.

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

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.

Security

Authentication, authorization and other security related libraries.

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.

Machine Learning

Computer Vision

Text Processing

Parsing

Exceptions and Error Handling

Rule-based Programming

Editor Plugins

Documentation

Utilities and libraries for (non-LP) code and project documentation

Literate Programming

Archives and Compression

Miscellaneous

Debugging

CI

Project Management

Terminal UI

Graphviz

Game Development

  • jme-clj - A Clojure 3D Game Engine (Wrapper), Powered by jMonkeyEngine
  • play-cljc - A Clojure and ClojureScript game library

Guides

Video tutorials

YouTube

Websites

Twitter

Exercises