Thank you for your interest in contributing!
git clone git@github.com:marcstraube/zappzarapp-node-browser-utils.git
cd zappzarapp-node-browser-utils
pnpm installpnpm run test # Run all tests
pnpm run test:watch # Run tests in watch mode
pnpm run test:coverage # Run tests with coverage reportAll contributions must pass:
pnpm run lint # ESLint (no warnings allowed)
pnpm run lint:fix # Auto-fix lint issues
pnpm run typecheck # TypeScript strict mode
pnpm run format:check # Prettier formatting check
pnpm run format # Auto-format code
pnpm run quality # Run all quality checks- TypeScript strict mode with no errors
- ESLint with zero warnings (
--max-warnings=0) - 100% test coverage for new code
- Prettier formatting
- Minimum 85% mutation score (Stryker, enforced in CI)
CRITICAL: All commits MUST be GPG-signed.
This is enforced in CI/CD:
- GitHub Actions will fail on unsigned commits
- Pull requests with unsigned commits will be rejected
# Generate GPG key
gpg --full-generate-key
# List keys
gpg --list-secret-keys --keyid-format=long
# Export public key
gpg --armor --export YOUR_KEY_ID
# Configure Git
git config --global user.signingkey YOUR_KEY_ID
git config --global commit.gpgsign true
git config --global tag.gpgSign true- Go to https://github.com/settings/keys
- Click "New GPG key"
- Paste your public key
See GitHub's GPG documentation for full setup instructions.
Use Conventional Commits:
feat: add new feature- minor version bumpfix: resolve bug- patch version bumpsecurity: fix vulnerability- patch + Security section in CHANGELOGfeat!: breaking change- major version bumpdocs:,style:,refactor:,test:,chore:- no version bump
Examples:
feat(storage): add encryption support
fix(cookie): handle SameSite in older browsers
docs: update installation instructions
test(form): add validation edge cases
security: sanitize user input in download filename
- Fork the repository
- Create a feature branch (
feature/your-feature) - Make your changes
- Run
pnpm run quality- all checks must pass - Push to your fork
- Create a Pull Request
- All commits are GPG-signed
- All tests pass (
pnpm run test) - Code style is clean (
pnpm run lint) - TypeScript compiles (
pnpm run typecheck) - Formatting is correct (
pnpm run format:check) - New features have tests (100% coverage)
- Documentation is updated
This is a security-focused package. All contributions must:
- Use cryptographically secure functions (
crypto.getRandomValues()) - Avoid dangerous patterns (
eval,innerHTML,document.write) - Include security-focused test cases
- Validate all external input
- Document security implications
Do not report security vulnerabilities via public issues.
See SECURITY.md for responsible disclosure process.
Open a discussion on GitHub or reach out via email@marcstraube.de