The main page of BioContainers and the registry, served as a fully static site on GitHub Pages — no backend, no database. The tool catalog is regenerated from upstream by a pipeline that runs in GitHub Actions and is committed into the repo as static JSON; search runs entirely in the browser.
-
pipeline/— Python CLI that regenerates the static catalog from two upstream families:- bioconda recipes +
quay.io/biocontainerscontainer tags BioContainers/containersDockerfiles + DockerHubbiocontainerstags
It writes the data contract into
data/:search-index.json,tools/<id>.json,facets.json,stats.json. Seedocs/for the design spec and plans. - bioconda recipes +
-
web/— the Vue 3 + Vite single-page app. It reads only the staticdata/files and searches client-side with MiniSearch. Three screens: Home (stats), Registry (search + facets), Tool detail (versions + container pull commands). -
data/— the generated catalog, committed to the repo and served alongside the app.
.github/workflows/data-build.yml— weekly (and manual) run of the pipeline; commits an updateddata/to the default branch..github/workflows/deploy.yml— on push, buildsweb/and publishes it (withdata/) to GitHub Pages atbiocontainers.pro.
Build a small sample catalog and run the app against it:
# 1. Generate a sample data/ catalog (needs Python 3.11+)
cd pipeline
python -m venv .venv && .venv/bin/pip install -e ".[dev]"
.venv/bin/python -m biocontainers_pipeline.cli build --out ../data --only quay --limit 60
# 2. Run the web app (needs Node 20+); web/public/data symlinks to ../../data
cd ../web
npm install
npm run devTests: cd pipeline && .venv/bin/python -m pytest and cd web && npm test.
Open a PR against the default branch; merges deploy automatically to https://biocontainers.pro