Contributing

jupyterhub-configurator has three components:

  1. A tornado based JupyterHub service written in python, providing the backend for storing and retreiving config

  2. A set of mixins to be used with your JupyterHub spawner for dynamic configuration

  3. A react based frontend

Backend & JupyterHub

Since jupyterhub-configurator is run as a JupyterHub service, it is best developed when run by JupyterHub itself. We ship a jupyterhub_config.py that runs a JupyterHub in development mode with appropriate service setup.

  1. Install required dependencies and the configurator package itself

    pip install -r requirements.txt
    
  2. Start a jupyterhub. You might first need to npm install -g configurable-http-proxy as well.

    jupyterhub
    

    This should start a JupyterHub on http://localhost:8000.

  3. Log in to the hub with username admin and any password.

  4. Open the configurator UI at http://localhost:8000/services/configurator/

You’ll need to stop and start the jupyterhub process whenever you make a change to the backend.

Frontend

You need npm to work on the frontend, which is contained inside the frontend/ directory.

  1. Get inside the frontend/ directory and install required dependencies

    cd frontend
    npm i
    
  2. We use webpack to build our dependencies, and it can automatically rebuild whenever you make a change.

    npm run dev
    
  3. Your configurator page should now be running your latest local build of JS. You have to refresh the page to pick up any changes.