Contributing to WireChat
Thank you for considering contributing to WireChat! This guide will help you get started with contributing code, reporting bugs, and suggesting improvements.WireChat is an open-source project maintained by Namu Makwembo. Your contributions help make it better for everyone.
Ways to Contribute
There are many ways you can contribute to WireChat:- 🐛 Report bugs - Help identify issues and edge cases
- 💡 Suggest features - Propose new functionality or improvements
- 📝 Improve documentation - Fix typos, add examples, clarify concepts
- 💻 Submit code - Fix bugs, implement features, refactor code
- 🧪 Write tests - Improve test coverage and reliability
- 🎨 Improve UI/UX - Enhance components, themes, and accessibility
Getting Started
Or visit github.com/namumakwembo/wirechat and click “Fork”.
Development Workflow
Creating a New Feature
Code Style
WireChat uses Laravel Pint for code formatting:This enforces PSR-12 standards with Laravel-specific rules.
Database Queries
- Use Eloquent relationships when possible
- Eager load to prevent N+1 queries
- Add database indexes for performance
- Use transactions for multi-step operations
Conversation.php:86-102:use Wirechat\Wirechat\Models\Conversation;
use Wirechat\Wirechat\Enums\ConversationType;
test('can create a private conversation', function () {
$user1 = User::factory()->create();
$user2 = User::factory()->create();
$conversation = Conversation::create([
'type' => ConversationType::PRIVATE,
]);
$conversation->addParticipant($user1);
$conversation->addParticipant($user2);
expect($conversation->participants)->toHaveCount(2);
});
Follow Conventional Commits:
feat: - New featurefix: - Bug fixdocs: - Documentation changesstyle: - Code style changes (formatting)refactor: - Code refactoringtest: - Adding or updating testschore: - Maintenance tasksPull Request Guidelines
## What
Adds support for panel-specific notification settings.
## Why
Users requested the ability to configure different notification
behavior for admin vs. user panels.
## How
- Added `notifications()` method to Panel class
- Updated `NotifyParticipant` to check panel config
- Added tests for notification scoping
## Testing
- ✅ All existing tests pass
- ✅ Added 5 new tests for notification scoping
- ✅ Manually tested in workbench app
Reporting Bugs
When reporting bugs, include:- WireChat Version - e.g., v0.3.0-beta4
- Laravel Version - e.g., Laravel 11.x
- PHP Version - e.g., PHP 8.2
- Database - MySQL, PostgreSQL, SQLite, etc.
- Steps to Reproduce - Minimal code to trigger the bug
- Expected Behavior - What should happen
- Actual Behavior - What actually happens
- Error Messages - Full stack traces if available
Suggesting Features
Before suggesting a feature:- Check existing issues for duplicates
- Search discussions
- Consider if it fits WireChat’s scope and philosophy
- Use case - What problem does it solve?
- API design - How would developers use it?
- Alternatives - What workarounds exist today?
- Breaking changes - Would it affect existing code?
Code of Conduct
Be respectful, inclusive, and professional in all interactions. WireChat follows standard open-source community guidelines.
- Be respectful - Value diverse perspectives
- Be constructive - Provide helpful feedback
- Be patient - Maintainers are volunteers
- Be collaborative - Work together toward solutions
Recognition
All contributors are recognized in:- GitHub contributor graphs
- Release notes for significant contributions
- The WireChat documentation
Support the Project
If you can’t contribute code, you can still help:- ⭐ Star the repo on GitHub
- 💬 Share WireChat with others
- 💰 Sponsor the project via GitHub Sponsors
- ☕ Buy the maintainer a coffee via Buy Me a Coffee
Documentation Contributions
The documentation site is built with Mintlify. To contribute:- Documentation source is at wirechat.namuio.com/docs/contribution
- Follow the same PR workflow as code contributions
- Preview locally using Mintlify CLI
- Ensure MDX syntax is valid
Questions?
If you have questions about contributing:- 💬 Ask in GitHub Discussions
- 🐦 Reach out on Twitter/X
- 📧 Contact the maintainer directly
For more details, see the full contribution guide at wirechat.namuio.com/docs/contribution.