FireCloud user interface for web browsers.
ClojureScript is used for the UI.
We use the Leiningen build tool to manage ClojureScript dependencies, and npm for Javascript dependencies.
The code incorporates usage of react-cljs which is a ClojureScript wrapper for React.
Figwheel replaces the running JavaScript within the page so changes are visible without a browser reload. More information here. This video gives some insight into the productivity gains available when using this technology (up to about 15:00 is all that is necessary).
Scala and Selenium are used for full-system UI integration tests.
Choose File -> New -> Project from Existing Sources...
and select the base firecloud-ui
directory of your git clone. With the Cursive plugin installed, you can select Import project from external model
and then select Leiningen
. If prompted for a Project SDK, select a recent Java SDK to use.
FireCloud is currently supported within Broad's engineering environment:
https://github.com/broadinstitute/terra-helmfile
Support for running FireCloud outside of the Broad is planned.
Before you get started, take a look at CONTRIBUTING.md
- Render configuration files by running:
./local-dev/bin/render
- Be sure you've added local.broadinstitute.org to your
/etc/hosts
:
sudo sh -c "echo '127.0.0.1 local.broadinstitute.org' >> /etc/hosts"
./config/docker-rsync-local-ui.sh
You must be viewing the application via HTTP. HTTPS is not supported by Figwheel.
This can take around 40 seconds to completely start. When ready, it will display the following message:
Prompt will show when figwheel connects to your application
To connect, load http://local.broadinstitute.org
http://localhost:3449
in your browser (Chrome is strongly recommended for development). The prompt should appear less than ten seconds after you reload the page. If it is not connecting, make sure to check the JavaScript console for error messages.
To compile the clojure project into the target directory, run
./scripts/build.sh compile
To compile and build the broadinstitute/firecloud-ui
docker image, run
./scripts/build.sh compile -d build
See TESTING.md