Useful Libraries

Contents

  1. Assets
  2. Authentication
  3. Caching
  4. Configuration
  5. ClojureScript
  6. Database clients
  7. Database Migrations
  8. SQL Libraries
  9. Dependency Injection
  10. Email
  11. Graphics
  12. Template Languages
  13. Miscellaneous
  14. Web Services

Luminus aims to provide solid defaults for creating your web application. As such it comes packaged with several libraries by default. These libraries include Buddy for security, Bouncer for validation, Selmer for HTML templating, Tower for internationalization and a few others. Of course, there are many other Clojure libraires for web development. Here we are going to provide a list of Clojure and ClojureScript libraries which can be useful in addition to those already included with Luminus.

Assets

Authentication

Caching

  • Spyglass - a Memcached client (also: Couchbase, Kestrel)
  • core.cache - a caching library implementing various cache strategies

Configuration

ClojureScript

  • Om - ClojureScript interface to Facebook's React
  • Kioo - DOM manipulation and templating library for Reagent/Om
  • Hickory - parses HTML into Clojure data structures
  • Sente - bidirectional a/sync comms over both WebSockets and Ajax (auto-fallback)
  • Datascript - central, uniform approach to manage all application state
  • Garden - a library for rendering CSS in Clojure and ClojureScript
  • Dommy - a no-nonsense templating and (soon) dom manipulation library
  • json-html - generates human representation of the JSON/EDN encoded data
  • lein-externs - a plugin to automatically generate externs files for Js libs

Database clients

  • Carmine - Clojure Redis client & message queue
  • Cassaforte - A young client for Apache Cassandra 1.2+
  • Clutch - a library for Apache CouchDB
  • CongoMongo - Wrapper for the mongo-db java api
  • Monger - a client for MongoDB
  • Neocons - a feature rich idiomatic client for the Neo4J REST API
  • pgjdbc-ng - JDBC driver with PostgreSQL specific features
  • Rotary - DynamoDB API
  • Rummage - a client library for Amazon's SimpleDB (SDB)
  • Welle - an expressive client for Riak

Database Migrations

  • Drift - a migration library
  • Lobos - Lobos is a library to help you create and modify database schemas
  • Ragtime - database-independent migration library

SQL Libraries

  • Honey SQL - a Korma alternative DSL for building SQL queries
  • clojure.java.jdbc - a low level wrapper for Java JDBC
  • blackwater - a library for logging SQL queries and the time they took for Korma and clojure.java.jdbc

Dependency Injection

Email

  • Mailer - an ActionMailer-inspired mailer library
  • Postal - Clojure email support

Graphics

  • Analemma - a Clojure-based SVG DSL and charting library
  • Monet - a small ClojureScript library to make it easier (and performant) to work with canvas

Template Languages

  • Cuma - extensible micro template engine for Clojure.
  • Basil - a general purpose template library
  • Stencil - a fast, compliant implementation of Mustache
  • Enlive - a selector-based (à la CSS) templating and transformation system

Miscellaneous

  • clj-pdf - PDF report generation library
  • clj-rss - a library for generating RSS feeds
  • metrics-clojure - a thin Clojure façade around Coda Hale’s wonderful metrics library
  • ring-logger-timbre - log Ring requests & responses using Timbre
  • slf4j-timbre - SLF4J binding for Clojure's Timbre logging library
  • ring-rewrite - Ring middleware for defining and applying rewrite rules
  • Pantomime - a Library For Working With MIME Types
  • Route One - a library that generates HTTP resource routes (as in Ruby on Rails and similar modern Web application frameworks)
  • Schema - a Clojure(Script) library for declarative data description and validation.
  • Urly - a library that unifies parsing of URIs, URLs and URL-like values like relative href values
  • Validateur - a validation library inspired by Ruby's ActiveModel
  • aging-session - a memory based ring session store that has a concept of time
  • Timbre - a Clojure/Script logging and profiling library
  • Throttler - token bucket algorithm to control both the overall rate as well as the burst rate for function calls (e.g. incoming requests)
  • Elastisch - a minimalistic Clojure client for ElasticSearch, a modern distributed search engine
  • cronj - a library for scheduling tasks
  • ring-async - a Ring adapter for supporting asynchronous responses

Web Services

It's just few categories, more libraries related to web development for testing, data validation, text search, random data generation, JSON parsing, exception handling, SQL abstractions and other can be found on The Clojure Toolbox and ClojureWerkz websites.