Contributing
We welcome contributions to Pulsarr.
Getting Started
- Fork the repository to your GitHub account
- Create a branch following naming conventions (see below)
- Make changes and ensure code quality
- Submit a pull request to the
developbranch
Branch Naming
| Type | Format | Example |
|---|---|---|
| Feature | feature/description | feature/multi-instance-sync |
| Bug fix | fix/description | fix/notification-delivery |
| Refactor | refactor/description | refactor/status-service |
| Docs | docs/description | docs/api-examples |
| Performance | perf/description | perf/query-optimization |
Code Quality
npm run fix # Safe lint fixes
npm run fix:unsafe # Import organization (if CI fails)
npm run typecheck # TypeScript checks
Commit Messages
This project follows Conventional Commits with commitlint.
Format
type(scope): description
[optional body]
Types
| Type | Purpose |
|---|---|
feat | New features or functionality |
fix | Bug fixes |
refactor | Code changes without functional impact |
perf | Performance improvements |
docs | Documentation updates |
test | Adding or updating tests |
chore | Maintenance tasks |
Examples
feat(router): add streaming service routing condition
fix(client): resolve variable shadowing in mutation handlers
refactor(watchlist-status): extract unified status sync module
perf(junction): use Set for O(1) planned primary lookups
Guidelines
- Use lowercase for type, scope, and description
- Keep description under 72 characters
- Use present tense ("add" not "added")
- Scope should identify the affected module/area
- Reference issues when applicable:
fixes #123
API Development
- Define request/response schemas using Zod
- Include OpenAPI tags and descriptions in route definitions
- OpenAPI docs auto-generate during CI build
Pull Requests
- Describe what changes accomplish
- Link related issues (e.g., "Fixes #123")
- Include screenshots for visual changes
- Update documentation if needed
Questions?
Open an issue with the "question" label.