This is the web app for the Open Targets Platform, based on the Open Targets REST API. The app is based on Angular, while D3 is used for visualization and graphs.
Depending on how you deploy, you might want to do two things:
- change the API the webapp points to
- apply a
custom.jsonconfig that overrides the value inapp/config/<general,dictionary,datatypes,datasources>/default.json,
for example to change evidence_sources displayed
NB: In general, you shouldn't use custom.json to override the {"api":}
variable of the app, otherwise the deploy steps described below will fail.
- Fork the webapp (unless you are a member of the Open Targets team who deploys to production 😄 )
- (optional) add a
custom.jsonto/app/config/**/to change your fork's configuration. When deploying with netlify, thecustom.jsoncannot be changed without first commiting it to the code. - Set up netlify/github integration, including specifying the build steps
(
yarn run full-setup) and the directory served (app). - Change the
netlify.tomlto point to your API. The app will point to the API specified withAPIHOSTin thenetlify.tomlfile.
A docker image with a compiled version of the webapp from a NGINX web server is available on quay.io
To start a container locally using the image:
docker run -d -p 8443:443 -p 8080:80 quay.io/opentargets/webappThen visit https://localhost:8443
The standard image comes with self-signed certificates, so you will have click through a couple of security warnings to get to the app. To add your own certificates, run something like this:
docker run -d -p 8443:443 -p 8080:80 \
-v <my_ssl_dir>/server.crt:/usr/share/nginx/server.crt \
-v <my_ssl_dir>/server.key:/usr/share/nginx/server.key \
quay.io/opentargets/webappYou can specify the variables:
REST_API_SCHEME(httporhttpsare valid options,httpsis the default)REST_API_SERVER(e.g.rest_apito point to a container namedrest_apiorapi.opentargets.ioto point to the production api;platform-api.opentargets.iois the default)REST_API_PORT(default is the HTTPS/443 port)
Example:
docker run -d -p 8443:443 -p 8080:80 \
-e "REST_API_SCHEME=https" \
-e "REST_API_SERVER=devapi.appspot.com" \
-e "REST_API_PORT=443" \
quay.io/opentargets/webappBy default, the webapp /proxy should redirect to the proxy that is built into the rest api container. But it is also possible to specify a separate server for all /proxy calls (calls to external services and data resources used in some pages). These are the variables:
PROXY_SCHEME(httporhttpsare valid options,$REST_API_SCHEMEis the default)PROXY_SERVER(if not set,$REST_API_SERVERis the default)PROXY_PORT(if not set,$REST_API_PORTis the default)PROXY_PATH(if not set,proxyis the default)
ℹ️ When using the rest api built-in proxy, additional domains can be included by adding them to the appropriate nginx configuration file. See https://github.com/opentargets/rest_api/ documentation for more details.
Any other modifications, including changing the custom.json for the container,
cannot be made at runtime. You'd have to create your own fork/modifications.
Read on to the developing section.
The script build_webapp.sh will install the various dependencies needed to build the web application from source, assuming you're on a Debian (or Debian-like) machine.
Note that you will need to set the APIHOST environment variable to point to your own REST API server if you're not using the default http://platform-api.opentargets.io
If you need to make any customisations to the web application code, you'll need to run yarn setup and yarn build-all after each change.
Once the build has completed, the code required for deployment will be in app/
You can test your build with Yarn's built-in web server via yarn run server from the webapp directory - this should not be used in production.
Any webserver that can serve the /app directory will do.
NOTE to have a fully functional app, you also need to have your web server reverse proxy /proxy to a valid REST API server. See how the build and deployment is done for Nginx in the Dockerfile of this project.
You can run a nginx webserver using docker.
We have a Dockerfile that is derived from nginx:alpine which you can use.
To build:
docker build . -t webapp-imageTo run: see section "Deploy using our docker image" above.
If you want to change the nginx configuration, you can change the nginx_conf/nginx.template before running the build step above.
If you push some changes to a branch of the main repo, a container with the tag of the branch will be publicly available after a few minutes on quay.io
docker pull quay.io/opentargets/webapp:<yourbranchname>Read about how to create platform plugins here.