Web Development with Clojure, Third Edition (Pragmatic Bookshelf)

PragmaticBookshelf

PragmaticBookshelf

Devtalk Sponsor

Stop developing web apps with yesterday’s tools. Today, developers are increasingly adopting Clojure as a web-development platform. See for yourself what makes Clojure so desirable, as you work hands-on and build a series of web apps of increasing size and scope, culminating in a professional grade web app using all the techniques you’ve learned along the way.

Dmitri Sotnikov @dmitri and Scot Brown @svmbrown

edited by Michael Swaine @michaelswaine

Stop developing web apps with yesterday’s tools. Today, developers are increasingly adopting Clojure as a web-development platform. See for yourself what makes Clojure so desirable, as you work hands-on and build a series of web apps of increasing size and scope, culminating in a professional grade web app using all the techniques you’ve learned along the way.

This fully updated third edition will get you up to speed on the changes in the rapidly evolving Clojure ecosystem — the many new libraries, tools, and best practices. Build a fully featured SPA app with re-frame, a popular front-end framework for ClojureScript supporting a functional style MVC approach for managing the UI state in Single-Page Application-style applications. Gain expertise in the popular Ring/Compojure stack using the Luminus framework. Learn how Clojure works with databases and speeds development of RESTful services. See why ClojureScript is rapidly becoming a popular front-end platform, and use ClojureScript with the popular re-frame library to build single-page applications.

Whether you’re already familiar with Clojure or completely new to the language, you’ll be able to write web applications with Clojure at a professional level.


  • Full details: Search
  • View this book’s portal and details on how to post errata and suggestions here.

Don’t forget you can get 35% off with your Devtalk discount! Just use the coupon code “devtalk.com" at checkout :+1:

Latest Threads About This Book Top

uemusicman
@dmitri and @svmbrown I’m stuck trying to get the ClojureScript file to build and be output to the target directory. I copied the config...
New
bmads_51
Dmitri Sotnikov @dmitri and Scot Brown @svmbrown I was trying to execute the following code on p. 168: user> (in-ns 'guestbook.auth)...
New
bmads_51
Dmitri Sotnikov @dmitri and Scot Brown @svmbrown Hi all, I’m working through the Appendix 4 (Database Access) starting on p. 395 and th...
New
jschmuec
Dmitri Sotnikov @dmitri and Scot Brown @svmbrown With the guestbook app from the “Adding ClojureScript support” chapter, I get an error ...
New
mmmm
Hello, the very first (start) call on the REPL fails for me like this: 43user> (start) 44Execution error at cprop.core/load-config (...
New
mnardell
In chapter 5, page 123 the reader of the book is instructed to start the Shadow.cljs REPL with: $ npx shadow-cljs cljs-repl app … upon ...
New
pm9999
@svmbrown (json/read-value json/keyword-keys-object-mapper) json/keyword-keys-object-mapper doesn’t exist We’ve required cheshire.c...
New
pm9999
in fn home the call to get-message no longer requires the argument messages or this warner is seen: WARNING: Wrong number of args (1) p...
New
jasonwu
Hi there, when I use guestbook-profile-2 where I’m editing/updating the profile (p. 243), frequently, when I click the Update button, not...
New
jasonwu
Hi Dmitri Sotnikov @dmitri and Scot Brown @svmbrown, I am trying to run some of the source code. Sometimes I’m able to log in fine (runn...
New
pm9999
Dmitri Sotnikov @dmitri and Scot Brown @svmbrown On page 277 image-uploader needs to be referred to from components ;;… [:div.field ...
New
pm9999
(defn profile [_]    (if-let [{:keys [login created_at profile]} @(rf/subscribe [:auth/user])]    …       [:div.content       [:div {...
New
pm9999
Somehow postgresql returns messages sorted by author given the two queries. Perhaps it’d make sense to add “order by timestamp desc” to t...
New
New
pm9999
@Dmitri @svmbrown Does the syntax work on your machines somehow it’s giving me error? when calling lifecycle function guestbook.core/m...
New
pm9999
@Dmitri @svmbrown How do you test an end-point with swagger when authentication is required? I got http 403 error with the set-profile t...
New
pm9999
@Dmitri @svmbrown Can you clarify this part about cheshire’s usage? I do not see it reflected in code: We’ve required cheshire.core’s ...
New
pm9999
@Dmitri @svmbrown At the end of Restrict Posting to Authenticated Users, I think there’s a bug but I’m not able to find any solution. C...
New
pm9999
Finally, we can remove our handle-message method for :chsk/ws-ping, since we’re handling it directly from receive-message! now. This h...
New
pm9999
@Dmitri @svmbrown In method :message/create!, it’s not mentioned that the line assoc ?data :timestamp (java.util.Date.) right after msg/...
New
pm9999
I believe function handle-response! can be removed from core.cljs at the end of section “Leveraging Sente Callbacks”. It’s a trivial issu...
New
New
jasonwu
I’m on p. 219, and previously I think everything was working. I updated queries.sql as shown in the book and source code: (two - - are s...
New
lycheese
@Dmitri @svmbrown On page 218 in the pdf jsonista.core/keyword-keys-object-mapper is used, but this variable is only introduced in versi...
New
pekeler
Buddy: " this project is deprecated and not going to be updated; plase use the individual modules" which the book should probably do.
New
jasonwu
Hi there. I just started the book and followed the instructions carefully, but I get a warning when I run the (migrate) command on p.10: ...
New
New
pekeler
@svmbrown The code changes for core.cljs should also include the additional :require for [guestbook.websockets :as ws].
New
pekeler
@svmbrown The guestbook.handler code on page 141 doesn’t follow from the previous guestbook.handler code on page 62. Also, that code on ...
New
pekeler
To this point, I believe all code changes were always displayed in full, i.e. not just described abstractly by the text. Because of that,...
New

Most Active This Week Top

Most Active This Month Top

Most Active This Year Top

Most Active Last Three Years Top

simonpeter
When I try the command to create a pair of migration files I get an error. user=> (create-migration "guestbook") Execution error (Ill...
New
pekeler
@svmbrown The guestbook.handler code on page 141 doesn’t follow from the previous guestbook.handler code on page 62. Also, that code on ...
New
bmads_51
Dmitri Sotnikov @dmitri and Scot Brown @svmbrown Hi all, I’m working through the Appendix 4 (Database Access) starting on p. 395 and th...
New
jschmuec
Dmitri Sotnikov @dmitri and Scot Brown @svmbrown With the guestbook app from the “Adding ClojureScript support” chapter, I get an error ...
New
bmads_51
Dmitri Sotnikov @dmitri and Scot Brown @svmbrown I was trying to execute the following code on p. 168: user> (in-ns 'guestbook.auth)...
New
uemusicman
@dmitri and @svmbrown I’m stuck trying to get the ClojureScript file to build and be output to the target directory. I copied the config...
New

Most Active Over Three Years Top

PragmaticBookshelf
Stop developing web apps with yesterday’s tools. Today, developers are increasingly adopting Clojure as a web-development platform. See f...
New
jeremyhuiskamp
Title: Web Development with Clojure, Third Edition, vB17.0 (p9) The create table guestbook syntax suggested doesn’t seem to be accepted ...
New
jesse050717
Title: Web Development with Clojure, Third Edition, pg 116 Hi - I just started chapter 5 and I am stuck on page 116 while trying to star...
New
sdmoralesma
Title: Web Development with Clojure, Third Edition - migrations/create not working: p159 When I execute the command: user=> (create-...
New
dpb
re-frame-10x 0.7.0 fails to compile, with a number of errors, similar to this: Recent changes to Reagent impact re-frame-10x #269 A...
New
defndaines
I’ve stumbled on running the guestbook tests on pages 14–15, and realize there’s a mismatch between the book and the default generated co...
New
kentbull
Title: Web Development with Clojure 3e (vB17.0): Unknown dbtype (ch1 tests) p 15 Using conman version 0.8.4 brings the following error:...
New
pekeler
To this point, I believe all code changes were always displayed in full, i.e. not just described abstractly by the text. Because of that,...
New
mnardell
In chapter 5, page 123 the reader of the book is instructed to start the Shadow.cljs REPL with: $ npx shadow-cljs cljs-repl app … upon ...
New
jlangson
Hello, I’ve been following along with the book and I am having an issue with “reitit” in Chapter 2. I downloaded the source code include...
New
jameslewis
Web Development with Clojure, Third Edition: Page 148 of 325 It was obvious to me but may not be to many, there is no mentioning of nee...
New
lycheese
@Dmitri @svmbrown On page 218 in the pdf jsonista.core/keyword-keys-object-mapper is used, but this variable is only introduced in versi...
New
mmmm
Hello, the very first (start) call on the REPL fails for me like this: 43user> (start) 44Execution error at cprop.core/load-config (...
New
poverholt
In general, how do I correctly find the reference code that matches each book topic? More specifically, I am having problems around page...
New
pm9999
@svmbrown (json/read-value json/keyword-keys-object-mapper) json/keyword-keys-object-mapper doesn’t exist We’ve required cheshire.c...
New

Latest in Web Development with Clojure, Third Edition

View all Web Development with Clojure, Third Edition threads ❯

Get money off!

The Pragmatic Bookshelf

35% off any eBook

Use the coupon code "devtalk.com" to get 35% off any eBook published by PragProg!

Related Portals