Thank you for your interest in contributing to better-chatbot! We welcome contributions from the community and truly appreciate your effort to improve the project.
For new features or significant changes, please create an issue first to discuss your idea before submitting a PR.
This helps us:
- Align on the feature direction and design
- Avoid duplicate work
- Ensure the feature fits with the project roadmap
- Save your valuable time on implementation
What requires discussion:
- New UI components or major UI changes
- New API endpoints or data models
- Integration with external services
- Performance optimizations that change behavior
- Breaking changes
What doesn't require discussion:
- Bug fixes
- Documentation improvements
- Minor UI tweaks
- Code refactoring (without behavior changes)
-
Fork this repository on GitHub.
-
Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/better-chatbot.git cd better-chatbot -
Create a new branch for your changes:
git checkout -b feature/your-feature-name # or git checkout -b fix/your-bug-fix -
Implement your changes, following the existing code style and structure.
For any new logic, please add comprehensive unit tests. For any UI changes, please add or modify e2e tests. If you are fixing a bug, please add tests to prevent the same bug from happening again.
-
Test your changes thoroughly:
pnpm dev pnpm test -
Run e2e tests:
pnpm playwright:install # install playwright browsers pnpm test:e2e # run all e2e tests (48 tests covering core functionality) # Optional: run specific test suites pnpm test:e2e -- tests/agents/ pnpm test:e2e -- tests/models/ # Debug specific test pnpm test:e2e -- tests/agents/agent-visibility.spec.ts --headed
E2E Test Requirements:
- PostgreSQL database (use
pnpm docker:pgfor quick setup) - At least one LLM provider API key (OpenAI, Anthropic, or Google)
BETTER_AUTH_SECRETenvironment variable set
- PostgreSQL database (use
We use Release Please to automate GitHub releases. Only the Pull Request title needs to follow the Conventional Commits format. Commit messages can be written freely.
fix: voice chat audio not initializingfeat: support multi-language UI togglechore: update dependencies
-
PR titles must start with one of the following prefixes:
feat: ... fix: ... chore: ... docs: ... style: ... refactor: ... test: ... perf: ... build: ... -
Only the PR title is used for changelog and versioning
-
We use squash merge to keep the history clean
-
Changelog entries and GitHub Releases are automatically generated after merging
-
Format, check code quality and run tests:
pnpm check # lint, type check, and run unit tests pnpm test:e2e # run comprehensive e2e test suite (recommended)
-
Commit and push:
git add . git commit -m "your internal message" git push origin your-branch-name
-
Open a Pull Request:
- Title: Must follow the Conventional Commit format
- Description: Explain what you changed, why you made the change, and how the changes were verified and tested.
- Link to related issues, if any
- Include screenshots or demos for any UI changes:
- Before/After images are highly recommended
- Screen recordings for interactive features
- Mobile/Desktop views if responsive changes are made
When submitting Issues or Pull Requests:
For UI changes:
- Always include before/after screenshots when possible
- Use clear, high-quality images that show the changes
- Highlight the changed areas with arrows or borders if needed
- For responsive changes, include both desktop and mobile views
- For interactive features, consider adding a short screen recording
For feature requests:
- Include reference images or mockups to illustrate your idea
- Add screenshots from similar apps if applicable
- Use diagrams to explain complex workflows or integrations
For bug reports:
- Include screenshots showing the issue
- Add console errors or network logs if relevant
- Show expected vs actual behavior with images when possible
Example:
## Before

## After

## Reference
We sincerely appreciate your contribution to better-chatbot. Let’s build a powerful, well tested and lightweight AI experience together! 🚀