Contributing¶
Thank you for considering contributing to Paperless NGX Dedupe! This guide covers the process for reporting bugs, suggesting features, and submitting code changes.
Ways to Contribute¶
- Bug Reports: Found a bug? Open an issue with reproduction steps
- Feature Requests: Have an idea? Start a GitHub Discussion
- Documentation: Improve or fix documentation (you can edit any page using the pencil icon)
- Code: Fix bugs or implement features via pull requests
Getting Started¶
- Fork the repository on GitHub
- Clone your fork locally:
- Install dependencies:
- Create a branch for your changes:
- Make your changes and verify they work:
See the Development Guide for more on the local development workflow.
Commit Messages¶
This project uses Conventional Commits with Release Please for automated releases. Commit messages should follow this format:
Types:
| Type | Description |
|---|---|
feat |
New feature |
fix |
Bug fix |
docs |
Documentation changes |
style |
Formatting, no code change |
refactor |
Code restructuring |
perf |
Performance improvement |
test |
Adding or updating tests |
chore |
Build, CI, or tooling changes |
Scopes: core, web, sdk, cli, db, dedup, sync, jobs, api, docs
Examples:
feat(dedup): add support for custom shingle functions
fix(web): prevent duplicate SSE connections on reconnect
docs: update API reference with batch endpoint examples
Pull Request Process¶
- Ensure all checks pass:
pnpm check && pnpm lint && pnpm test - Update documentation if your change affects user-facing behavior
- Write clear commit messages following the convention above
- Open a pull request with a description of what and why
- Respond to review feedback
Code Style¶
- Prettier handles formatting: 100 char width, single quotes, trailing commas, 2-space indent
- ESLint catches code quality issues
- TypeScript strict mode is enabled
- Run
pnpm lint:fix && pnpm format:fixbefore committing
License¶
By contributing, you agree that your contributions will be licensed under the GNU General Public License v3.