Using Node.js version 20.10.0, run npm install in the root directory of the repository to install dependencies.
The app can be run for development using npm run dev, and accessed at http://localhost:3000.
Run npm run build:local to build. The built app can be run using npm start, and accessed at http://localhost:3000.
Using Python version 3.12.4 is recommended.
Create a Python virtual environment and install requirements:
python3 -m venv ./venv
source ./venv/bin/activate
pip install -r ./catalog/build/py/requirements.txtThen run the script:
npm run build-brc-from-ncbiThe environment can be deactivated by running deactivate, and re-activated by running source ./venv/bin/activate
again.
To build catalog data for use by the app, run the script:
npm run build-brc-dbThe list of assemblies is defined in the YAML file catalog/source/assemblies.yml. Assemblies are labeled
with comments specifying the species name (as defined by NCBI), and sorted alphabetically by species.
To add a new assembly, add a new list item to the assemblies entry in the YAML, labeled and sorted as appropriate,
consisting of a dictionary with a single entry, accession, specifying the assembly's accession.
For instance, to add a new assembly for Anopheles gambiae with the accession XXX_000000000.0, add this line below
the # Anopheles gambiae comment:
- accession: XXX_000000000.0Run
npm run iwc-manifest-to-workflows-yaml
npm run build-brc-dbto fetch a list of current workflows from https://iwc.galaxyproject.org/workflow_manifest.json.
Only workflows for currently enabled categories are fetched.
If necessary, update parameters that require a reference genome id, fasta or gtf file to include the variable slot,
containing one of ASSEMBLY_ID, ASSEMBLY_FASTA_URL, GENE_MODEL_URL, SANGER_READ_RUN_SINGLE or SANGER_READ_RUN_PAIRED.
These values will be substituted with assembly-specific values at runtime.
If the LinkML schemas in catalog/py_package/catalog_build/schema are edited, the derived JSON schemas and TypeScript definitions should be
updated
as follows:
- Ensure that the Python virtual environment is activated, as described above.
- Run npm run gen-schema.
The run-checks GitHub workflow performs checks to ensure that the catalog data and schemas are well-formed; this is
done by:
- Linting the schemas via linkml-lint.
- Converting the schemas to Python, to catch any errors that occur.
- Validating the catalog source files against their corresponding schemas.
This repository uses Release Drafter to automatically generate release notes based on PR titles and semantic versioning.
The release process involves three main components:
- Release Drafter: Automatically creates/updates draft releases based on merged PRs
- Publish Release Workflow: Publishes the draft and creates a version bump PR
- Version Display: Shows build info in the UI footer using environment variables set at build time
PRs are categorized based on their titles using conventional commit format:
- breaking!or- majorlabels → major version bump (e.g., 1.0.0 → 2.0.0)
- feat:,- feature:,- enhancement:,- minorlabels → minor version bump (e.g., 1.0.0 → 1.1.0)
- fix:,- docs:,- chore:, etc. → patch version bump (e.g., 1.0.0 → 1.0.1)
# Check current draft releases
gh release list
# View the draft release details
gh release view v<VERSION> --json body,name,tagName,targetCommitish# Get the release ID from the list above
gh release list | grep "Draft"
# Publish using the workflow (recommended)
gh workflow run publish-release.yml -f release_id=<RELEASE_ID>OR publish directly:
gh release edit <RELEASE_ID> --draft=falseThe publish-release workflow will automatically:
- Create a branch release/update-version-<VERSION>
- Update package.jsonandpackage-lock.json
- Create a PR with the version changes
You must manually merge this PR to complete the release process.
# Check that tag points to correct commit
git fetch --tags
git log --oneline --decorate | head -5
# Verify version display will work
git tag --points-at HEAD  # Should show the new version tagProduction deployment happens automatically when changes are merged to the prod branch. To deploy a release:
- Merge the release version bump PR to main
- Create a PR from maintoprod
- Once merged to prod, the deployment workflow automatically builds and deploys to production