Skip to content

Contributing to bunqueue: Development & PR Guide

Thank you for your interest in contributing to bunqueue! This guide will help you get started.

Be respectful and inclusive. We welcome contributors of all backgrounds and experience levels.

  • Bun v1.0+
  • Git
  • A GitHub account
Terminal window
# Fork the repo on GitHub, then:
git clone https://github.com/YOUR_USERNAME/bunqueue.git
cd bunqueue
bun install
Terminal window
# Run all tests
bun test
# Run specific test file
bun test test/queue.test.ts
# Run with coverage
bun test --coverage

We use ESLint and Prettier:

Terminal window
# Check linting
bun run lint
# Format code
bun run format
  • feat/description - New features
  • fix/description - Bug fixes
  • docs/description - Documentation
  • refactor/description - Code refactoring
  • test/description - Test additions

Follow Conventional Commits:

feat: add stall detection for workers
fix: resolve memory leak in event listeners
docs: update API reference
refactor: simplify batch operations
test: add DLQ filtering tests
  1. Create a feature branch
  2. Make your changes
  3. Add/update tests
  4. Update documentation
  5. Run bun test and bun run lint
  6. Push and create a PR
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation
## Testing
How was this tested?
## Checklist
- [ ] Tests pass
- [ ] Linting passes
- [ ] Documentation updated
src/
├── cli/ # CLI commands
├── client/ # Embedded client SDK
├── domain/ # Core business logic
├── application/ # Use cases
├── infrastructure/ # External services
└── shared/ # Utilities
  • src/domain/queue/shard.ts - Queue sharding logic
  • src/application/queueManager.ts - Central coordinator
  • src/client/queue.ts - Client Queue class
  • src/client/worker.ts - Client Worker class
  • Max 300 lines per file
  • Split if larger
  1. jobIndex
  2. completedJobs
  3. shards[N]
  4. processingShards[N]
  • Use bounded collections
  • Clean up event listeners
  • Release resources in shutdown
describe('Feature', () => {
beforeEach(() => {
// Setup
});
afterEach(() => {
// Cleanup
});
it('should do something', () => {
// Test
});
});
  • Happy path
  • Edge cases
  • Error handling
  • Concurrent operations
/** Brief description */
function simpleFunction() {}
/**
* Longer description for complex functions
* @param input - Description
* @returns Description
*/
function complexFunction(input: string): Result {}

Update README.md for:

  • New features
  • Changed APIs
  • New environment variables
  1. Update version in package.json
  2. Update CHANGELOG.md
  3. Create PR titled release: v1.x.x
  4. After merge, tag and publish

Contributors are listed in:

  • GitHub contributors page
  • README.md acknowledgments

Thank you for contributing!