OpenCite is a Vite + React single-page app that generates both CITATION.cff and .zenodo.json from a single metadata form.
It is browser-first (no Node-only runtime assumptions in app code) and part of
the Imageomics ecosystem.
Documentation and contributor workflows align with Imageomics principles of transparency, accountability, collaboration, and safety.
OpenCite helps maintain high-quality, release-ready citation metadata by letting you:
- Generate
CITATION.cffand.zenodo.jsonmetadata from one form. - Import metadata from GitHub repositories.
- Validate existing metadata files.
- Compare repository metadata against citation metadata.
- Review metadata health checks and recommendations.
Primary user entry point (deployed application): https://imageomics.github.io/OpenCite/
The app is built to reduce release-time metadata drift by keeping citation fields consistent across:
- GitHub release tags and notes
CITATION.cff.zenodo.json
OpenCite focuses on:
CITATION.cff.zenodo.json
These files should remain consistent with repository information, release version, license, authors, grants, and DOI/references when available.
- Open the deployed application: https://imageomics.github.io/OpenCite/
- Enter metadata directly, or import metadata from a GitHub repository.
- Review generated
CITATION.cffand.zenodo.jsonoutputs. - Validate metadata before export.
- Download generated metadata files (or ZIP export).
Most users should use the deployed application. Local setup is primarily for contributors and development/testing workflows.
OpenCite is a React + Vite frontend. It is browser-first for runtime use, with Node-based local tooling for development, tests, and metadata checks.
npm install
npm run devOpen the local URL shown by Vite and fill in the form. You can then:
- Generate
CITATION.cff - Generate
.zenodo.json - Download both together as a ZIP
Run these commands from the repository root:
npm run dev # Start local dev server
npm run build # Production build
npm run test # Node test runner
npm run validate:metadata # Validate root CITATION.cff and .zenodo.json
npm run preview # Preview production build.zenodo.json validation uses the official Zenodraft CLI via a pinned local
dependency. The direct equivalent command is:
npm exec -- zenodraft metadata validate .zenodo.jsonDuring export, OpenCite validates generated .zenodo.json metadata. ZIP exports include METADATA_VALIDATION.txt for downstream provenance checks.
- Paste a GitHub repository URL into the import field.
- OpenCite automatically inspects known repository metadata files unless disabled by integration options.
- Metadata file import reads from the repository's default branch (typically main).
- OpenCite does not currently fetch CITATION.cff from a specific branch, tag, or commit referenced in the GitHub URL.
- Supported import sources include:
CITATION.cff.zenodo.json- package metadata (for example
package.json,pyproject.toml,setup.py,Cargo.toml,pom.xml) - GitHub repository/release metadata and contributor data
- Metadata is merged with precedence rules (release/repository provenance, citation/zenodo/package fields, and contributor enrichment) before loading the editable form.
- Imported author lists include contributor-based context and are deduplicated.
- Review, adjust, and regenerate metadata files before release.
OpenCite validates metadata at multiple stages:
- Form-level validation before export.
CITATION.cffand.zenodo.jsoncontent validation.- Comparison checks between repository/GitHub metadata and citation metadata.
- Health checks that compare imported metadata with available repository/archive signals, including version, repository URL, license, authors, ORCID, DOI, and release information.
- Missing repository/archive information may produce warnings instead of failures.
- Author, grant, and reference metadata checks where applicable.
- Repository-level validation via
npm run validate:metadatafor rootCITATION.cffand.zenodo.json.CITATION.cffuses in-repo citation validation logic..zenodo.jsonuses the official Zenodraft validator.
- Version values should match your planned GitHub release tag.
- Grant IDs must use
<funder-code>::<grant-number>. - Publication date should be a real
YYYY-MM-DDdate. - ORCID values are validated when provided.
- References can be plain lines or structured key/value blocks.
OpenCite follows Semantic Versioning (MAJOR.MINOR.PATCH).
MAJOR: breaking or incompatible changesMINOR: backward-compatible featuresPATCH: backward-compatible bug fixes
Use the exact version/tag string you intend to publish for your GitHub release.
When preparing a release:
- Create the GitHub release and include meaningful release notes.
- Ensure the release tag matches the version used in OpenCite.
- Update
CITATION.cfffields as needed:versiondate-released- release identifiers/URLs
- Update
.zenodo.jsonmetadata when applicable. - Verify release metadata is consistent across GitHub,
CITATION.cff, and.zenodo.json.
OpenCite automatically includes GitHub release and source-tree identifiers in CITATION.cff when a version and repository URL are present.
The Grants field includes one-click suggestions for:
021nxhr62::2118240(Imageomics NSF grant)021nxhr62::2330423(ABC NSF grant; NSERC updates may be manual)
Suggestions can be added individually or all at once, and duplicate values are ignored.
src/App.jsx: main app orchestration and export flowsrc/components/MetadataForm.jsx: form UI and field interactionssrc/validation/validation.js: input validation and normalizationsrc/metadata/normalizeMetadata.js: canonical metadata shapingsrc/services/citation.js:CITATION.cffserializationsrc/services/zenodo.js:.zenodo.jsonserializationsrc/services/githubImporter.js: GitHub import pipeline
This checklist is based on the Imageomics Collaborative Distributed Science Guide repository recommendations.
-
README.mdwith project overview, usage, release workflow, and citation guidance. -
AGENTS.mdwith code-agent project context and workflow constraints. -
.gitignorepresent. - machine-readable dependency lockfile (
package-lock.json) present. -
CONTRIBUTING.mdpresent and linked from README. -
LICENSEfile present in repository root. - root-level
CITATION.cffcommitted for GitHub citation panel. - root-level
.zenodo.jsoncommitted for release metadata tracking. -
CODE_OF_CONDUCT.mdpresent. -
SECURITY.mdpresent. - CI workflow present for pull requests (
.github/workflows/ci.yml).
Before initial public release, make sure the unchecked items are completed.
Contributions are welcome for this repository.
See CONTRIBUTING.md for project-specific contribution workflow details.
- Open an issue (or comment on an existing one) describing the change.
- Create a branch for your work.
- Keep changes focused on the requested feature or bug fix.
- Run checks before opening a PR:
npm run testnpm run build
- Open a pull request with:
- a clear summary of what changed
- why the change is needed
- any screenshots or notes for UI changes
- Avoid unrelated refactors or broad formatting-only edits.
- Preserve export behavior for
CITATION.cffand.zenodo.jsonunless the change explicitly targets that behavior. - Keep public service APIs stable, especially under
src/services/. - Prefer updating existing documentation sections instead of creating duplicate docs.
- Software citation practices (FORCE11 principles)
- GitHub release workflow
- Zenodo GitHub integration guide
- Citation File Format schema guide
- Imageomics Repository Guide
- Imageomics GitHub + PyPI + Zenodo Integration
- Downstream Verification Checklist
- The generated Zenodo metadata file should download with the exact filename:
.zenodo.json. - Some browser/file picker flows may remove the leading period during save.
- OpenCite uses a direct browser download path for
.zenodo.jsonexports to preserve the canonical filename where supported. - Verify saved filenames in your browser environment when preparing releases.
- Health checks were improved to reduce false positives, but some checks remain heuristic because repositories do not always include complete citation metadata.
- DOI checks depend on available Zenodo/archive signals.
- Author consistency checks may differ between citation authors and repository contributors because they represent different concepts.
- Health and comparison results are based on merged metadata.
- Field-level source tracking/provenance is not currently exposed in the UI.
CITATION.cffparsing supports common structures but does not fully model every advanced CFF feature.preferred-citationhandling remains limited.
This work was supported by both the Imageomics Institute and the AI and Biodiversity Change (ABC) Global Center. The Imageomics Institute is funded by the U.S. National Science Foundation's Harnessing the Data Revolution (HDR) program under Award #2118240 (Imageomics: A New Frontier of Biological Information Powered by Knowledge-Guided Machine Learning). The ABC Global Center is funded by the U.S. National Science Foundation under Award No. 2330423 and Natural Sciences and Engineering Research Council of Canada under Award No. 585136. This work draws on research supported by the Social Sciences and Humanities Research Council. Any opinions, findings and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation, Natural Sciences and Engineering Research Council of Canada, or Social Sciences and Humanities Research Council.
Isabella Lo and Elizabeth Campolongo.