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.txt
Then run the script:
npm run build-files-from-ncbi
The 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-db
The 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.0
Run
npm run iwc-manifest-to-workflows-yaml
npm run build-brc-db
to 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
, or SANGER_READ_RUN
.
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!
ormajor
labels → major version bump (e.g., 1.0.0 → 2.0.0)feat:
,feature:
,enhancement:
,minor
labels → 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=false
The publish-release
workflow will automatically:
- Create a branch
release/update-version-<VERSION>
- Update
package.json
andpackage-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 tag
Production 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
main
toprod
- Once merged to
prod
, the deployment workflow automatically builds and deploys to production