# Contributing to Rabbit Relay πŸ‡βš‘ First of all, thank you for taking the time to contribute! **Rabbit Relay** is an open-source project built with the goal of making RabbitMQ usage in Node.js **reliable, type-safe, and developer-friendly**. Contributions of all kinds are welcome πŸ’™ --- ## Project Philosophy Rabbit Relay is built around a few core principles: - **Type safety first** (TypeScript-driven APIs) - **Reliability over magic** - **Explicit, predictable behavior** - **Minimal runtime dependencies** - **Production-ready by default** Every contribution should aim to support these goals. --- ## Ways to Contribute You can contribute in many ways, including: - Reporting bugs - Proposing or implementing new features - Adding tests or improving coverage - Improving documentation or examples - Refactoring or improving internal code quality - Suggesting design or API improvements If you’re unsure where to start, check existing issues or open a discussion. --- ## 🐞 Reporting Bugs Before opening a new issue: 1. Search existing issues to avoid duplicates 2. Make sure you're using the latest version 3. Provide as much detail as possible Please include: - Rabbit Relay version - Node.js version - RabbitMQ version - Minimal reproducible example (if possible) - Expected behavior vs actual behavior - Error logs or stack traces --- ## ✨ Feature Requests Feature requests are welcome! Please describe: - The problem you're trying to solve - Why existing solutions are insufficient - How the feature fits Rabbit Relay’s philosophy - Proposed API shape (TypeScript examples encouraged) Large changes should be discussed before implementation. --- ## πŸ›  Development Setup ### Prerequisites - Node.js (LTS recommended) - npm or pnpm - A running RabbitMQ instance (Docker is fine) ### Install dependencies ```bash npm install ``` ### Build the package ```bash npm run build ``` ## Code Style & Conventions - TypeScript only - Avoid `any` unless absolutely necessary - Prefer explicit types for public APIs - Avoid breaking changes unless discussed - Keep functions small and focused --- ## Pull Request Process 1. Fork the repository 2. Create a feature branch 3. Commit with clear messages 4. Open a Pull Request 5. Be ready to iterate based on feedback --- ## 🚦 Breaking Changes Breaking changes require: - Clear justification - Migration guidance - Explicit mention in PR title and description --- ## 🀝 Code of Conduct Be respectful, inclusive, and constructive. Harassment or toxic behavior will not be tolerated. --- ## πŸ’™ Community & Vision Rabbit Relay is part of **Bitspacer Labs**, focused on open-source tooling and developer communities. Everyone is welcome to contribute. --- ## ⭐ Support the Project If you find Rabbit Relay useful: - ⭐ Star the repository - πŸ“£ Share it - πŸ’¬ Provide feedback Thank you for contributing