Skip to main content
Clojure,Web
and
Luminus
Monday, April 29, 13
• :name “Edward Tsech”
• :nick “edtsech”
• :langs [:clojure :haskell :shen]
• :interests [:fp :frp :data]
About
Monday, April 29, 13
Agenda
• Why Clojure?
• Clojure + Web
• Clojure Toolbox
• Libraries vs Frameworks
• Existing frameworks
• Luminus’ approach
Monday, April 29, 13
Why Clojure?
Monday, April 29, 13
Clojure as Ecosystem
• Mature ecosystem of JVM
• Interactive development (REPL)
• ClojureScript
• Leiningen
• Emacs/Vim/SublimeText??
• Datomic
Monday, April 29, 13
Clojure as Language
• Rapid development
• Concurrency
• FP
• Metaprogramming
• DSL
• Data centric
Monday, April 29, 13
Clojure + Web
Monday, April 29, 13
Clojure + Web
• Ring - HTTP abstraction (WCGI, Rack,
Hack)
• Compojure - routing DSL (Sinatra, Scotty,
Scalatra)
Monday, April 29, 13
Functional Web
Architecture
https://speakerdeck.com/weavejester/functional-web-
architecture
Monday, April 29, 13
Clojure Web Toolbox
• Auth - Friend
• JSON - data.json,
cheshire
• Validation - lib-noir,
Validateur
• Testing - Kerodon,
Peridot
• Logging - tools.logging
• XML - data.xml, data.zip
• SQL - Korma,
clojure.java.jdbc
• Deploy - Leiningen
• HTML - ...
• CRUD - ?
• Performance - Grinder
Monday, April 29, 13
Libraries
vs
Frameworks
Monday, April 29, 13
Libraries
• Easy to compose
• You have to know ecosystem
• You are not limited what you can build and
how to build it
• You have to create your own architecture
Monday, April 29, 13
Frameworks
• Take care of users (security, ...)
• Basic architecture
• Defaults (Libraries)
• Docs, tutorials, guides, ecosystem
• Habits
• Limitations (what..., how...)
Monday, April 29, 13
Existing Frameworks
• Conjure
• Noir
• Joodo
• Pedestal
• Luminus
Monday, April 29, 13
Origins
• Noir
• Noir + lib-noir
• lib-noir
• lib-luminus + Luminus
• lib-noir + Luminus
Monday, April 29, 13
Luminus
• Freedom (up to you
what and how)
• Utilize existing Clojure
ecosystem
• Libraries composability
• Flexible templates
• Basic architecture
• Defaults
• Documentation
• Take care of newcomers
Monday, April 29, 13
Improvements
• Improve profiles system
• Improve architecture
• Add profiles*
• Write guides, tutorials, docs
Monday, April 29, 13
Questions?
Monday, April 29, 13
Links 1
• Luminus - http://www.luminusweb.net/
• luminus-template - https://github.com/
yogthos/luminus-template
• luminus - https://github.com/yogthos/
luminus
• lib-noir - https://github.com/noir-clojure/lib-
noir
Monday, April 29, 13
Links 2
• A brief overview of the Clojure web stack -
http://brehaut.net/blog/2011/
ring_introduction
• Project Templates - http://brehaut.net/blog/
2013/project_templates
• Functional Web Architecture -
https://speakerdeck.com/weavejester/functional-
web-architecture
Monday, April 29, 13