Skip to content

raymcdermott/repl-ui

Repository files navigation

REPL-REPL - Web UI

Web UI part of the REPL-REPL 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).

Features

REPL-REPL connectivity

  • Multi-user REPL connectivity
  • Authenticated server access
  • Real-time keystrokes from all connected users

Other REPL users

  • Watch / hide visibility control

Clojure code support

  • Parinfer integration
  • Colorised edits / output
  • Show matching / balancing parens
  • Code completion / suggestions
  • Expose function documentation

Clojure evaluation

  • Shared REPL state
  • Shared, accessible history
  • Friendly exceptions
  • Incremental feedback on long running REPL evaluations
  • Cancel long running REPL evaluations

Dynamic library addition

  • Add a library on demand (Maven & Git SHAs)

Security

  • Secure REPtiLe server connection

REPtiLe developer hacking features

  • Live reloadable client code
  • Live reloadable server code

User features under consideration post 1.0

  • Choice of editor key mappings
  • Automatic editor visibility based on activity
  • OpenID Connect Services eg GitHub / Slack

Development

Running with a REPL:

clojure -A:fig:repl

Configuration

The location of the back-end server is configurable.

The name of the server can be set in the min.cljs.edn by changing repl.repl.ziggy.config/TAIL_SERVER

Please also checkout the REPtiLE configuration options

Local deps.edn configuration

Add some entries to the aliases section of ~/.clojure/deps.edn similar to these:

:aliases {
  :body/local {:override-deps {repl-body {:local/root "/Users/your-name/dev/repl-house/body"}}}
  :body/path {:extra-paths ["/Users/your-name/dev/repl-house/body/dev"]}
}

And then run it from the command line:

clj -A:fig:dev:body/local:body/path

Production Build

clojure -A:fig:min

AWS S3 hosting

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.

Copyright © 2019 Ray McDermott

Distributed under the GPL v3

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published