• Stars
    star
    131
  • Rank 275,867 (Top 6 %)
  • Language
    Clojure
  • Created over 9 years ago
  • Updated about 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Demo of a restartable back-end in the REPL + hot-reloadable front-end in the browser.

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.

Holy Grail demo

Do you feel the creative juices flow? Are you ready for endless hours of sheer creative output?

More Repositories

1

system

Reloaded components à la carte
Clojure
607
star
2

mmailer

The purpose of Mmailer is to allow the sending of bulk email through regular smtp providers, like gmail.
Ruby
121
star
3

certificaat

General-purpose ACME client
Clojure
104
star
4

meyvn

Next-gen builds for Clojure
85
star
5

android-oauth2-client

Android OAuth2 client for the Resource Owner Password Grant
Java
57
star
6

Palimpsest

Palimpsest, an Emacs minor mode providing various strategies when deleting text
Emacs Lisp
47
star
7

cohere-clojure

Unofficial port of the Cohere SDK
Clojure
43
star
8

benjamin

Idempotency with side-effects
Clojure
31
star
9

system-dependency-injection

Example for dependency injection with system
Clojure
29
star
10

kampbell

Entity management on top of key-value stores
Clojure
21
star
11

oauth2-client

Java OAuth2 client for the Resource Owner Password Grant
Java
16
star
12

om-mode

Insert Om component template with life cycle.
Emacs Lisp
14
star
13

boot-autoprefixer

Boot task for css autoprefixer
Clojure
12
star
14

sente-boot

Sente's example app for Boot
Clojure
11
star
15

back-end-template

Clojure back end template with components
Clojure
11
star
16

sente-system

Sente example app for system
Clojure
9
star
17

system-websockets

Wiring example for a system with Sente.
Clojure
9
star
18

om-pageslider

Om implementation of Christophe Coenraets's experiment with page transitions in React.js
CSS
9
star
19

lein-runit

Leiningen plugin providing runit integration, a UNIX init scheme with service supervision.
Clojure
9
star
20

etsy-clojure-api

Etsy API library for Clojure
Clojure
7
star
21

sketching-with-css-in-clojure

How to sketch css in Clojure - live coding in emacs and the browser.
Clojure
6
star
22

boot-environ

Compatibility layer for Boot and environ.
Clojure
6
star
23

blat

A library to fetch results concurrently from pagination APIs
Clojure
6
star
24

boot-shell

Runs a shell script straight from your Boot fileset, as root if needed.
Clojure
5
star
25

meyvn-el

This package provides an Emacs client for the Meyvn build tool, https://meyvn.org
Emacs Lisp
5
star
26

ring-websockets-meyvn

A fully fleshed example that shows how to piece everything together in Meyvn
Clojure
5
star
27

boot-runit

A boot task for runit, an init scheme with service supervision
Clojure
4
star
28

RubyonRails

Mergers and acquisitions
Ruby
3
star
29

system-advanced-example

Database and web handler example for system
Clojure
3
star
30

om-flash-bootstrap

Flash widget for Om and Bootstrap
Clojure
2
star
31

blog

Early blog
JavaScript
2
star
32

boot-binstub

Stub an executable in boot/bin directory for boot-clj projects .
Clojure
2
star
33

Circles.dart

Circles DART version
Dart
2
star
34

javafxdemo

Demo of the meyvn javafx template
Clojure
2
star
35

interactiveprogrammingtalk

Slides for the interactive programming talk
HTML
2
star
36

Circles

Josef Müller-Brockmann copycat
2
star
37

cljs-utils

General purpose utilities for clojurescript development.
Clojure
1
star
38

scramblies

Flexiana's scramblies test
Clojure
1
star
39

helloworld

Testing Meyvn builds via github actions
Clojure
1
star
40

underground_talk_dec_19

Ruby metaprogramming from scratch
JavaScript
1
star
41

kryptos

Cryptographic helper library
Clojure
1
star
42

newspeak-mode

Major mode for the Newspeak language
Emacs Lisp
1
star
43

meyvn-installer

The official Meyvn installer
Clojure
1
star
44

om-meetup

Demo of Om by way of RSVP'ed users for a meetup (Meetup.com)
Clojure
1
star
45

system-duct-style-example

This demonstrates a project with two endpoints and middleware common to both
Clojure
1
star
46

gerbil-gumbo

Gumbo parser bindings for Gerbil scheme
Scheme
1
star
47

appimagetool-maven-plugin

Will take jpackage output and use it as input for appimagetool
Clojure
1
star
48

bytecoder-clojure

Hello world in Clojure - bytecoder
Clojure
1
star
49

telefunken

Send email, contact form, fully integrated with system
Clojure
1
star
50

shade-edn-transformer

Shade plugin transformer to merge data readers (Clojure) when building jars
Java
1
star
51

detijd

Time utils (syntactic sugar)
Clojure
1
star
52

lang-utils

Language utilities, complementing Clojure to do useful things with the data structures. No dependencies. Clojure/Clojurescript
Clojure
1
star
53

Metaprogramming

Ruby underground's metaprogramming from scratch complementary code
Ruby
1
star
54

ring-utils

Ring utils (status, logout)
Clojure
1
star
55

ghosts-in-the-machine

Accompanying code for http://danielsz.github.io/2016/05/06/Ghosts-in-the-machine
Clojure
1
star
56

hashtags

GraalVM-based script to shuffle and display hashtags for Instagram posting
Clojure
1
star