Skip to content

broadinstitute/firecloud-ui

FireCloud UI

FireCloud user interface for web browsers.

https://portal.firecloud.org

Technologies

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.

IntelliJ Setup

Choose File -> New -> Project from Existing Sources... and select the base firecloud-uidirectory 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.

Developing

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.

Styles and Conventions

Before you get started, take a look at CONTRIBUTING.md

Development Stack Setup

  1. Render configuration files by running:
./local-dev/bin/render
  1. 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"

Starting the development server

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

Building

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

Testing

See TESTING.md