First off, thank you for considering contributing to ComputeKit! It's people like you that make ComputeKit such a great tool.
By participating in this project, you are expected to uphold our Code of Conduct: be respectful, inclusive, and constructive.
Before creating bug reports, please check the issue tracker as you might find that the bug has already been reported. When you create a bug report, please include as many details as possible:
- Use a clear and descriptive title
- Describe the exact steps to reproduce the problem
- Provide specific examples (code snippets, links to files)
- Describe the behavior you observed and what you expected
- Include your environment (OS, Node version, browser)
Feature suggestions are welcome! Please:
- Use a clear and descriptive title
- Provide a detailed description of the suggested feature
- Explain why this feature would be useful
- Include code examples if applicable
- Fork the repo and create your branch from
develop - If you've added code that should be tested, add tests
- Ensure the test suite passes
- Make sure your code follows the existing style
- Write a clear PR description
# Clone your fork
git clone https://github.com/your-username/computekit.git
cd computekit
# Install dependencies
npm install
# Build all packages
npm run build
# Run tests
npm test
# Start the React demo
npm run devpackages/
├── core/ # Main library
│ └── src/
│ ├── index.ts # Public API
│ ├── pool.ts # Worker pool
│ ├── wasm.ts # WASM utilities
│ └── types.ts # TypeScript types
│
└── react/ # React bindings
└── src/
└── index.ts # Hooks and provider
- Use strict TypeScript
- Export types for public APIs
- Prefer interfaces over type aliases for object shapes
- Use meaningful variable names
- Use Prettier for formatting (it runs on commit)
- Use ESLint rules (they run on commit)
- Write JSDoc comments for public APIs
- Keep functions small and focused
We use conventional commits:
feat:New featurefix:Bug fixdocs:Documentation onlystyle:Formatting, no code changerefactor:Code change that doesn't fix a bug or add a featuretest:Adding testschore:Maintenance tasks
Example: feat: add progress reporting to useCompute hook
- Write tests for new features
- Ensure existing tests pass
- Test edge cases
- Use descriptive test names
describe('WorkerPool', () => {
it('should execute tasks in parallel', async () => {
// ...
});
});Releases are automated via GitHub Actions when a version tag is pushed:
npm version patch # or minor, major
git push --follow-tagsFeel free to open an issue or reach out to the maintainers.
By contributing, you agree that your contributions will be licensed under the MIT License.