Contributing to Upup
July 13, 2026 · View on GitHub
We love your input! We want to make contributing to Upup as easy and transparent as possible, whether it's:
- Reporting a bug
- Discussing the current state of the code
- Submitting a fix
- Proposing new features
- Becoming a maintainer
Development Process
- Fork the repo and create your branch from
v2-clean— the active v2 development line. (masteris the pre-v2 single-package release; the package layout this project documents lives onv2-clean, which is intentionally unmerged.) - Use the pinned Node version — this repo ships a
.nvmrc(Node 20.20.2), so runnvm use— then install withpnpm install. This is a pnpm workspace (corepack pinspnpm@10.11.0); other package managers will not resolve theworkspace:*links. - Make your changes.
- See your change render. A green test suite does not prove a UI change
looks right — some UI strings have no test or story. Packages consume each
other's built
dist/, notsrc/, so an edit topackages/<pkg>/srcis invisible until it is rebuilt:- Fastest: run
pnpm dev, then open the playground athttp://localhost:53004— the package watchers rebuildpackages/*/srcon save and the playground hot-reloads. - Storybook: build the package once (
pnpm --filter @upupjs/react build) or keeppnpm run dev:packagerunning, thenpnpm --filter @upupjs/storybook-react storybook(http://localhost:53050).
- Fastest: run
- Run the checks CI enforces before opening your PR. CLAUDE.md's Gates
section is the authoritative list,
docs/testing.mdexplains every test layer and how CI routes them, and CLAUDE.md's E2E section documents the MinIO setup thatpnpm run e2eneeds:pnpm run prettier-check— formatting (all nine publishable packages'src/,.ts/.tsxonly)pnpm run lint— required in CI (an input to the Status Check rollup)pnpm run typecheckpnpm run testpnpm run test:quality— test-suite hygiene guard (no.only, silent skips, vague names, unjustified sleeps)pnpm run buildpnpm run sizepnpm run e2e— the real gate: real MinIO + real uploads CI additionally runs a package-smoke suite (a real tarball consumer build), and heavy suites are routed by changed paths — seedocs/testing.md.
- Create a pull request!
Pull Request Process
- Update the README.md with details of changes if needed
- The PR will be merged once you have the sign-off of at least one maintainer
Any contributions you make will be under the MIT Software License
When you submit code changes, your submissions are understood to be under the same MIT License that covers the project.
Report bugs using Github's issue tracker
We use GitHub issues to track public bugs.
Write bug reports with detail, background, and sample code
Great Bug Reports tend to have:
- A quick summary and/or background
- Steps to reproduce
- What you expected would happen
- What actually happens
- Notes (possibly including why you think this might be happening)
License
By contributing, you agree that your contributions will be licensed under its MIT License.
References
This document was adapted from the open-source contribution guidelines for Facebook's Draft.