Clack is a web application environment for Common Lisp inspired by Python's WSGI and Ruby's Rack. It's easy to use:

(clackup
  (lambda (env)
    '(200
      (:content-type "text/plain")
      ("Hello, Clack!"))))

Open your web browser and go to http://localhost:5000/.

And it's easy to setup: Just install Quicklisp and type this at the REPL:

(ql:quickload :clack)

Supported Servers

Clack is backend-agnostic: The internals of the server are completely abstracted so you can focus on writing your application, and let the server do all the hard work.

If a new, faster server comes out, it can be added as a Clack handler, ensuring Clack is not tied to any particular HTTP server implementation.

Additionally, you can try different servers to figure out what setup is right for your application's needs.

Hunchentoot
Web server written in Common Lisp.
FastCGI
FastCGI binding.
Wookie
Asynchronous HTTP server.
Woo
Fast non-blocking HTTP server, built on a pure-CL high-performance HTTP stack.
Toot
Stripped-down hunchentoot.

Frameworks built on Clack

ningle

Ningle is a minimalist web framework inspired by Python’s Flask and Ruby’s Sinatra.

(defvar *app* (make-instance 'ningle:<app>))

(setf (ningle:route *app* "/")
      "Welcome to ningle!")

(setf (ningle:route *app* "/login" :method :POST)
      #'(lambda (params)
          (if (authorize (getf params :|username|)
                         (getf params :|password|))
            "Authorized!"
            "Failed...Try again.")))

(clack:clackup *app*)

Caveman

Caveman is larger in scope than Ningle, and closer to Django in how its applications are structured. It has a little bit of magic, but not enough that it creates problems for developers.

(defparameter *app* (make-instance '<app>))

@route GET "/"
(defun index ()
  (with-layout (:title "Welcome to My site")
    (render #P"index.tmpl")))

Presentations about Clack

About Clack

at the International Lisp Conference (2012)

Clack & Caveman

at Start Common Lisp (2011)