Thank you for your interest in contributing! We're building 175+ developer tools with a community-first mindset. We welcome contributions of all kinds: bug reports, feature suggestions, documentation improvements, new tools, and code contributions.
Our philosophy: Low friction > perfection. We can refine things later. It's much harder to revive an abandoned repo.
Please read through this document before submitting any issues or pull requests. For detailed guides on tool structure, offline support, and more, visit the Contributing Guides.
Before reporting a bug, please check our open issues to see if it has already been reported. If it has, please add any additional information that might be helpful. If not, please create a new issue and include:
- A clear, descriptive title
- Detailed description of the issue
- Steps to reproduce the behavior
- Expected behavior
- Actual behavior
- Environment information (browser, OS, Node.js version)
- Screenshots or error messages if applicable
We welcome ideas for improvements and new tools. There's no permission needed—if you have an idea, build it! Please create an issue or discussion with:
- A clear description of the enhancement or tool
- Why this would be useful
- Any relevant examples or use cases
Note: If your tool uses APIs or network features, that's fine! Just make it optional and gracefully handle missing connectivity. See Contributing Guides for details.
To express interest in working on an issue, simply comment on it to let us know. Maintainers will assign it to you or discuss next steps if needed.
Branch purposes:
- main: Always reflects the latest stable and released code
- develop: Contains accepted changes that will be part of the next release
For all contributors:
- Create a new branch from
develop - Open pull requests against
develop(notmain)
For regular contributors:
If your work depends on unreleased features or changes, base your work directly on develop. Pull requests merged into develop are considered accepted for now, but remain under maintainer control. Our team decides which changes move from develop to main for release, and may revert or modify any merged code if needed.
When to Commit package-lock.json
-
You MUST commit
package-lock.jsonif:- You add, remove, or upgrade a dependency in
package.json(for example, when your new tool needs a new npm package). - You intentionally update any package version in
package.json. - After such changes, always run
npm installand commit bothpackage.jsonandpackage-lock.jsontogether.
- You add, remove, or upgrade a dependency in
-
You MUST NOT commit
package-lock.jsonif:- You are only editing, adding, or refactoring tool components, UI, or logic, and did not touch
package.json. - You ran
npm installafter pulling latest develop, but did not change dependencies. If the lockfile changes, discard it (git checkout -- package-lock.json).
- You are only editing, adding, or refactoring tool components, UI, or logic, and did not touch
-
Dependency/toolchain upgrades (Next.js, ESLint, etc.) must be in a separate PR, never mixed with feature/tool PRs.
For Adding a New Tool:
- If your tool needs a new npm package:
- Add the dependency to
package.json. - Run
npm install(this updatespackage-lock.json). - Commit both files in your PR.
- Add the dependency to
- If your tool does NOT need a new dependency, do NOT touch or commit
package-lock.json.
Why?
- Our CI uses
npm ci, which requires the lockfile to matchpackage.jsonexactly. - Random lockfile churn (from different npm versions or accidental upgrades) causes huge, noisy diffs and can break builds.
- Only the canonical lockfile in
developis valid.
Please ensure your pull request adheres to the following guidelines:
- Search open pull requests to ensure your change hasn't already been submitted
- Target the
developbranch with your pull request (notmain) - Rebase your branch with the latest changes from
developbefore opening your PR - Follow the existing code style and conventions
- Test your changes locally:
npm run devandnpm run lint - Use TypeScript for all new code
Adding a new tool? Check the Feature and Module Structure guide for detailed walkthrough and examples.
This project follows Conventional Commits. Please use one of the following commit types:
feat- A new featurefix- A bug fixperf- A performance improvementrefactor- Code refactoringdocs- Documentation changesstyle- Code formatting (no logic changes)test- Test additions or changesci- CI/CD changeschore- Other changes
Examples:
feat(tools): add markdown to html converterfix(ui): resolve responsive layout on mobiledocs: update installation guide
Releases and changelog updates are automated via CI. Do not manually edit CHANGELOG.md.
- Use TypeScript for all new files
- Follow the existing code style in the repository
- Test your changes work locally before submitting
- Ensure no console errors or warnings
Test your changes locally before submitting a pull request:
- Test with various inputs and edge cases
- Test on different browsers (Chrome, Firefox, Safari, Edge)
- Test responsive design on mobile, tablet, and desktop viewports
- Verify accessibility where applicable
- For offline-safe tools: Test offline mode by running
npm run build && npm start, then enabling offline in DevTools. See PWA and Offline Behavior for details. - For tools with APIs: Verify graceful failure when the API is unavailable
We love documentation contributions! Whether it's more complete descriptions, new examples, or better formatting, any help improving the documentation is appreciated.
🚫 Don't: Require user login, store personal data, or collect user information.
✅ Everything else is negotiable: Network features, APIs, AI integrations—all welcome if implemented thoughtfully.
This keeps us legally sound and makes contributing stress-free.
Join us on Discord to connect with the community and core team. Please be respectful and follow our Code of Conduct.
For detailed guides on tool structure, offline support, contributing philosophy, and more, visit Contributing Guides.
For questions or concerns, please reach out to us at dev@betterbugs.io or ask in our Discord community.
Thank you for your interest and contributions to BetterBugs 🪲