Tongue is the UI part of the reptile
shared REPL. You use it to enter forms and see the results of evaluation. You can also watch your friends editing in real-time and share their REPL evaluations.
The technical implementation is a re-frame based Single Page Application (SPA).
- Multi-user REPL connectivity
- Authenticated server access
- Real-time keystrokes from all connected users
- Visibility controls
- Parinfer integration
- Colorised edits / output
- Show matching / balancing parens
- Code completion / suggestions
- Expose function documentation
- Shared REPL state
- Shared, accessible history
- Friendly exceptions
- Incremental feedback on long running REPL evaluations
- Cancel long running REPL evaluations
- Add a library on demand (Maven & Git SHAs)
- Secure REPtiLe server connection
- Live reloadable client code
- Live reloadable server code
- Choice of editor key mappings
- Per user name spaces
- Automatic editor visibility based on activity
- OpenID Connect Services eg GitHub
clojure -A:fig:repl:body:body-path
clojure -A:fig:dev:body:body-path
Figwheel will automatically push cljs changes to the browser.
Wait a bit, then browse to http://localhost:9500.
The REPtiLe server will be started in the background so there is no need to start a separate server in the development process.
The location of the back-end server is configurable.
The name of the server can be set in the min.cljs.edn
by changing reptile.tongue.config/TAIL_SERVER
Please also checkout the REPtiLE configuration options
Add some entries to the aliases
section of ~/.clojure/deps.edn
similar to these:
:aliases {
:body/local {:override-deps {reptile-body {:local/root "/Users/your-name/dev/reptile-house/body"}}}
:body/path {:extra-paths ["/Users/your-name/dev/reptile-house/body/dev"]}
}
And then run it from the command line:
clj -A:fig:dev:body/local:body/path
clojure -A:fig:min
AWS S3 buckets can be configured to host web sites and thus be used to serve the UI.
The s3-publish.sh
script is provided for building the code and syncing with an S3 bucket.
The script will also invalidate any configured CloudFront distribution.