Thank you for your interest in contributing to NotifyChain! This document provides guidelines and instructions for contributing to the project.
- Be respectful and inclusive
- Provide constructive feedback
- Focus on what is best for the community
- Show empathy towards other contributors
To contribute to NotifyChain, make sure you have:
- Rust installed with WebAssembly target (
rustup target add wasm32-unknown-unknown) - Stellar CLI installed
- Node.js (for listener and dashboard components)
- Basic understanding of Soroban smart contracts, Git, and GitHub
- Fork the repository
- Clone your fork:
git clone https://github.com/your-username/Notify-Chain.git cd Notify-Chain - Add the upstream repository:
git remote add upstream https://github.com/Core-Foundry/Notify-Chain.git
Always start from an up‑to‑date main:
git checkout main
git pull upstream main
git checkout -b <branch-name>Use descriptive branch names following these conventions:
feature/for new featuresfix/for bug fixesdocs/for documentationrefactor/for code refactoringtest/for adding or modifying testschore/for maintenance tasks
Example:
feature/add-slack-notificationsfix/resolve-event-deduplication-bugdocs/update-contributing-guide
- Write clean, readable code
- Follow existing code style in each directory
- Add comments for complex logic
- Update documentation as needed
All new features and bug fixes must include tests.
cd contract/contracts/hello-world
cargo testcd listener
npm install
npm testcd dashboard
npm install
npm testWrite clear, descriptive commit messages following Conventional Commits:
feat:new featurefix:bug fixdocs:documentation changestest:test additions or changesrefactor:code refactoringchore:maintenance tasks
Example:
git commit -m "feat: add retry queue for failed notifications"
git commit -m "fix: resolve event parsing issue in listener"
git commit -m "docs: update README with setup instructions"git push -u origin <branch-name>Then create a Pull Request on GitHub!
Use the same format as commit messages:
feat: add retry queue for notificationsfix: standardize error messages across contracts
Include:
- Overview: What changes does this PR introduce?
- Related Issue: Link to GitHub issue(s) this PR addresses
- Changes: What was added/removed/modified
- Verification Results: What tests passed, coverage, etc.
- How to Test: Instructions for testing your changes
- Code follows project style guidelines
- Tests added/updated and passing
- Documentation updated
- All tests pass locally
- Branch is up to date with
main
Follow existing patterns in contract/contracts/hello-world/:
- Format with
cargo fmt - Add
///documentation comments for public functions/structs - Use
#[contracterror]for custom errors - Test all functionality
Follow the existing style in listener/ and dashboard/:
- Run
npm run lintbefore committing - Use TypeScript for type safety
- Write unit tests for all new logic
- Follow existing naming conventions
- Ensure all tests pass locally
- Address reviewer feedback promptly
- Keep PR scope focused on a single issue or feature
- Be open to suggestions
- Review code thoroughly
- Test locally if needed
- Provide constructive feedback
- Approve when ready
- Open an issue for bugs or feature requests
- Check existing issues and PRs first
- Join discussions on GitHub
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to NotifyChain! 🎉