Skip to content

simonvanlierde/credit-heatmap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CRediT generator

CI codecov Website DOI License: MIT Contributions welcome

A web app for drafting CRediT (Contributor Roles Taxonomy) contribution statements for scholarly publications.

Add contributors, assign the 14 roles, and copy a manuscript-ready statement. It also builds a contribution heatmap and exports for journal submission systems: JATS4R XML, CSV, JSON, and Markdown.

Try it: credit.duinlab.nl

The CRediT Generator workspace: a contributors list beside an editable contribution grid, with the generated statement and export controls below

What it does

  • Contributors: add, rename, reorder, paste a whole author list, or paste an ORCID iD or URL to look up the name
  • Contribution grid: click cells to assign the 14 roles as yes/no values or as contribution levels. The grid is the heatmap — transpose it, swap initials for full names, and recolor it in place
  • Statements: render by role or by author, with full names or initials and optional level labels
  • Localized output: translate role names in statements, Markdown tables, and heatmaps (via credit-translation). Machine-readable exports keep the canonical English CRediT terms
  • Heatmap: download the grid as SVG or PNG
  • Exports: copy or download JATS4R XML, CSV, JSON, and Markdown
  • Sharing & import: encode a draft in a URL, paste names, or import JSON, CSV, or JATS4R XML
First run Statement & export
Empty first-run state with a getting-started card inviting you to add a contributor, import, or load sample data The contribution statement with grouping and level options, a copy-statement button, and a format picker offering copy or download

Architecture

Stack

TypeScript 6 throughout, on pnpm workspaces (app at the root, reusable packages/core).

Layer Choice Why
Frontend Next.js 16 (App Router) Runs on Cloudflare Workers via OpenNext
Styling Tailwind CSS v4 Design tokens via @theme; no runtime CSS
State Zustand + immer + persist Survives a refresh via localStorage
Validation Zod Schema checks at trust boundaries
Heatmap @nivo/heatmap + hand-crafted SVG (core) One SVG source feeds both download and canvas PNG

Project structure

Browser
  └─ Next.js app  (repo root, App Router)
       ├─ React UI + Zustand store (persisted to localStorage)
       ├─ @credit-generator/core   ← all domain logic, runs in the browser
       │     statements · JATS4R XML · CSV · JSON · Markdown · heatmap SVG · validation
       └─ /api/orcid  (route handler) ──→ pub.orcid.org    ← the only server-side call

Nearly everything runs in the browser. packages/core holds the domain logic — statements, exports, validation, XML import (native DOMParser), and the heatmap SVG — as pure TypeScript with one runtime dependency, zod. The PNG download is drawn from that same SVG onto a <canvas>.

The one server-side call is the ORCID lookup: the ORCID public API sends no CORS headers, so /api/orcid proxies it through a small Next.js route handler. (/health backs uptime monitors.)

Contributions are stored as a 0–100 integer score rather than a boolean, so the UI can switch between binary and level-based editing without changing the stored model. See packages/core/README.md for the score-to-level boundaries.


Self-hosting

Prerequisites: Node ≥ 26, pnpm ≥ 11, just (optional)

git clone https://github.com/simonvanlierde/credit-heatmap
cd credit-heatmap
pnpm install
pnpm dev            # → http://localhost:3000

See CONTRIBUTING.md for the full command list, dev workflow, and the lint/typecheck/test checklist. Run just to list the watch/fix recipes layered on the pnpm scripts.

Deployment

The live demo runs on Cloudflare Workers via @opennextjs/cloudflare, which adapts the Next.js build.

Pipeline: push to main → Cloudflare Workers Builds builds and deploys to credit.duinlab.nl. The trigger is configured in the Cloudflare dashboard (settings mirrored in wrangler.jsonc); non-main branches and PR previews are disabled. CI only lints, tests, and build-checks.

Manual deploy (needs Cloudflare credentials):

pnpm preview        # build + run the Worker locally
pnpm deploy         # build + deploy to Cloudflare

Config lives in wrangler.jsonc and open-next.config.ts

Roadmap

  • Localize the app UI. Today only the output (statements, Markdown tables, heatmaps) uses the bundled role translations; the interface itself is English-only.
  • Widen locale coverage. Only a curated subset of credit-translation locales is vendored under packages/core/src/credit-i18n/translations; refresh them with node packages/core/scripts/fetch-credit-translations.mjs.
  • Smooth onboarding. Better empty states and a gentler path from a blank workspace to a finished statement.

Contributing

Bug reports and small features are welcome, see CONTRIBUTING.md for setup, testing, and the accessibility checks. Design decisions are recorded as ADRs.

Acknowledgements

The CRediT Generator builds on prior tools and scholarship on contributorship:

Related work

  • Brand, A., Allen, L., Altman, M., Hlava, M., & Scott, J. (2015). Beyond authorship: attribution, contribution, collaboration, and credit. Learned Publishing, 28(2), 151–155. https://doi.org/10.1002/leap.1210
  • Holcombe, A. O., Kovács, M., Aust, F., & Aczel, B. (2020). Documenting contributions to scholarly articles using CRediT and tenzing. PLOS ONE, 15(12), e0244611. https://doi.org/10.1371/journal.pone.0244611
  • Nakagawa, S., Ivimey-Cook, E. R., Grainger, M. J., O'Dea, R. E., et al. (2023). Method Reporting with Initials for Transparency (MeRIT) promotes more granularity and accountability for author contributions. Nature Communications, 14, 1788. https://doi.org/10.1038/s41467-023-37039-1

Citing this software

If you use the CRediT Generator in your work, please cite it. Metadata lives in CITATION.cff, and GitHub's "Cite this repository" button generates APA and BibTeX from it. The archived, versioned release is on Zenodo: doi:10.5281/zenodo.21213659.

van Lierde, S. CRediT Generator [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.21213659

License

MIT © Simon van Lierde

About

Web tool for CRediT author-contribution statements: interactive role matrix, contribution heatmap, and JATS4R XML / CSV / JSON export. Next.js 15 with a framework-agnostic TypeScript core.

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages