Hippo testing during active development phase: mount the code in git branch directly to container and have it handle notebook server.
git clone https://github.com/xchem/HIPPONot strictly necessary but it's convenient to have database connection parameters in .env file, in project root directory. Should contain minimally:
DB_NAME=designdb
DB_USER=postgres
DB_PASSWORD=<choose a password>
DB_HOST=database
TA_AUTH_SERVICE=https://ta-authenticator.xchem.diamond.ac.uk/
TA_AUTH_QUERY_KEY=<auth key>
These are for local connection, values may be different for kubernetes deployment
NB! depending on your environment, you may have to prefix your docker commands with sudo
In project root directory:
docker build . -t hippo_backend:latestIn <project root>/images/xchem-designdb directory:
docker build -t xchem_designdb:latest .This may take some time.
Occasionally it may be necessary to add --no-cache to docker builds, this ensures the new container is built from scratch.
docker-compose.yaml contains instructions for docker to run the services.
docker compose upIf not using local database, just the app container:
docker compose up backendAfter running the up command, at the very end you should see notebook server addres:
hippo_backend | Or copy and paste one of these URLs:
hippo_backend | http://localhost:8888/lab?token=90de0d2f297079ee393cdc202c06064406c5cb3a8032e8d8
hippo_backend | http://127.0.0.1:8888/lab?token=90de0d2f297079ee393cdc202c06064406c5cb3a8032e8d8
hippo_backend | [I 2026-04-23 09:49:32.420 ServerApp] Skipped non-installed server(s): basedpyright, bash-language-server, dockerfile-language-server-nodejs, javascript-typescript-langserver, jedi-language-server, julia-language-server, pyrefly, pyright, python-language-server, python-lsp-server, r-languageserver, sql-language-server, texlab, typescript-language-server, unified-language-server, vscode-css-languageserver-bin, vscode-html-languageserver-bin, vscode-json-languageserver-bin, yaml-language-server
Copy one of the addresses to a broser tab and you're in jupyter lab environment.
docker compose downWhen using local database and it's necessary to wipe db contents:
docker compose down -vHIPPO uses the uv for dependency and environment management. HIPPO is linted using ruff and commits are automatically linted using the lint workflow. The use of pre-commit is encouraged for local development to automatically run the linting at git commit time:
pip install pre-commit
pre-commit installTo simplify running routine commands, Makefile with several targets exists in project root, e.g.
make checkruns the linters and formatters. To see all available targets run make without arguments.
To check API reference coverage use docstr-coverage
pip install docstr-coverage
docstr-coverage hippo