Skip to content

raymcdermott/reptile-tongue

Repository files navigation

Reptile Team REPL - UI

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).

Features

REPtiLe connectivity

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

Other editors

  • Visibility controls

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

Deps.edn

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

Security

  • Secure REPtiLe server connection

REPtiLe developer features

  • Live reloadable client code
  • Live reloadable server code

User features under consideration post 1.0

  • Choice of editor key mappings
  • Per user name spaces
  • Automatic editor visibility based on activity
  • OpenID Connect Services eg GitHub

Development

Running with a REPL:

clojure -A:fig:repl:body:body-path

Run application on the command line:

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.

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 reptile.tongue.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 {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

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.

About

Browser UI for REPtiLe - a shared REPL

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published