virtool-contrib-guide

Web Client Development

Recommended Codecademy Courses

These online courses will help you understand the basics of the technologies used in the Virtool client.

  1. Learn HTML
  2. Learn CSS
  3. Make a Website
  4. Intro to Javascript
  5. Learn ReactJS: Part I
  6. Learn ReactJS: Part II

Recommended Tutorials

  1. Git Tutorial

Recommended Reading

  1. React

    It is not necessary to follow the official React tutorial if you have already completed the Codecademy courses for React. Make sure you understand the following items in the ADVANCED GUIDES section:

  2. React-Router

    Traditionally, changes in the URL would be associated with visiting a new HTML page requested from the server. In single-page applications, rendering of content and communication with the server is done without visiting entirely new pages. Since new pages are not visted, the URL will not change. This is a problem because URLs are very useful for allowing users to use their built-in browser navigation buttons and use links to specific content.

    Many modern Javascript frameworks include URL routing functionality. This allows changes in the application state or appearance to be associated with a change in the URL. React does not include routing. Instead a separate library called React-Router used.

    Relevant documentation sections are:

  3. Redux

    Redux is used for state management. Many React components in the Virtool client take state from a central Redux data store. Relevant sections of the Redux docs are:

  4. Redux-Saga

    Redux is not well-suited to handling data asynchronously (eg. AJAX) by itself. There is Redux middleware available for dealing with this problem. We use Redux-Saga. Redux-Saga uses ES6 generators (read about them here. Relevant sections of the docs are:

  5. Webpack

    Webpack is used to turn the client source files into single bundled Javascript, CSS, and HTML assets for download by the browser. Relevant sections of the docs are:

  6. Yarn

    Yarn is used for Javascript package management. It helps to download and manage dependencies such as react.

  7. SuperAgent

    Web applications typically communicate between the web browser and the server via HTTP requests and responses. Basic information can be found here:

    SuperAgent is a client side AJAX HTTP request library that is used to request data from Virtool's API.

    Some aspects of the Virtool's Redux data store are determined by server event-driven responses.

  8. Jest

    Jest is the testing framework used for the client side. Relevant sections of the docs are:

  9. Enzyme

    Enzyme is a testing utility that helps test, traverse, simulate events, and format output for React components.

  10. Sinon

Sinon is a testing utility that specializes in spies, mocks, and stubs for Javascript testing. It has more features than what Jest provides, and the relevant docs are: