Downloaded 108 times





![Routes
Mapping: Request -> Handler:
(defroutes app-routes
(context "/users" []
(GET "/new" [] accounts/show-signup)
(POST "/" [email] (accounts/new email)))
;; GET /users/new -> accounts/show-signup
;; POST /users/ -> accounts/new](https://image.slidesharecdn.com/trakr-110808084328-phpapp02/75/Clojure-Web-Development-6-2048.jpg)
![Handlers
Request in, response out.
(defn say-hello [req]
(let [name (-> req :params :name)]
{:status 200
:body (str “Hello ” name “!”)}](https://image.slidesharecdn.com/trakr-110808084328-phpapp02/75/Clojure-Web-Development-7-2048.jpg)
![Middleware
Transform: Handler -> New Handler
(defn wrap-failsafe [handler]
(fn [request]
(try (handler request)
(catch Exception e
(.printStackTrace e)
{:status 500
:body "An error occured."}))))](https://image.slidesharecdn.com/trakr-110808084328-phpapp02/75/Clojure-Web-Development-8-2048.jpg)





This document discusses Clojure web development and describes a web-based project management system called Trakr that was created using Clojure. Trakr uses a MongoDB database and has a modern friendly UI. The architecture involves a Clojure HTTP server with a Ring middleware pipeline and Compojure routing to map requests to handlers. Testing is done with clojure.test and clojure.contrib.mock. Performance is around 70ms average latency.