Holy grail
Well, on second thought, let’s not go to Camelot – it is a silly place. — King Arthur
What is it?
This demonstrates the holy grail workflow for web development the way I envision it: an auto-restartable back-end in the REPL + a hot-reloadable front-end in the browser.
This workflow is built on top of Boot, a build tool, and system, a component library.
Installation
Clone this repo, cd into it and start the development pipeline build.
$ git clone [email protected]:danielsz/holygrail.git
$ cd holygrail
$ boot dev
Principle of operation
Compose a build pipeline:
(deftask dev
"Run a restartable system in the Repl"
[]
(comp
(environ :env {:http-port 3000})
(watch)
(system :sys #'dev-system :auto true :files ["handler.clj"])
(reload)
(cljs)
(repl :server true)))
Start it:
$ boot dev
The headless REPL advertises its coordinates.
nREPL server started on port 49722 on host 127.0.0.1 - nrepl://127.0.0.1:49722
You can connect to it if you plan to do development in the REPL (M-x cider-connect
in Emacs works great).
Your web app is started and listening at http://localhost:3000.
The auto
option in the system
boot task takes care of your application lifecycle. Your system will automatically be reset after editing handler.clj
. Changes elsewhere that do not require a system restart will be reloaded on the fly everytime you save your work.
Note: The build.boot
in this repo already contains those options.
Demo
A demo video that tries to demonstrate how developing for the web can be a liberating and seamless experience.
Do you feel the creative juices flow? Are you ready for endless hours of sheer creative output?