I'll throw in my two cents for Duct, also from @weavejester, the maintainer of Compojure and Ring.
At it's core, it brings Component and the Ring router under one roof. Reasons why I use Duct:
- Excellent philosophical foundation: it encourages you to build your app as a series of small components, and it strikes a nice balance between holding few opinions while providing sane defaults.
- Stable path: I speak for myself, but over the years I've felt that the Clojure community has presented one less-than-credible web framework after another. A couple simply felt too experimental (my experience with Om and client-side Pedestal) for "getting things done" (not that they won't prove superior down the road). On the other hand, I feel like @weavejester has brought the same stability and measured progress to Duct that he did to Compojure and Ring, which have been superbly born out in the community.
- It's super lightweight, and out of the way of my components.
Major features:
- Organizes routes by "endpoints", small components that can you can think of as mini web servers (or, small cross sections of your HTTP routes).
- Out-of-the-box support for the Reloaded Workflow.
- Perfect integration with Ring and Compojure.
- Development and production configurations (something I've found conspicuously missing elsewhere).
- Good documentation with examples.
Note: It goes without saying, but for the benefit of web development newcomers, like most Clojurey things Duct requires a solid grasp of Clojure the language. I also recommend reading about Component first.
On another personal note, I've been using Duct in several production applications for over a year now and am extremely happy with it.