Thank you for your interest in contributing to Stellar Teye! This document provides guidelines and information for contributors.
For a full setup walkthrough and codebase tour, see the Contributor Onboarding guide.
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/Teye-Contracts.git - Setup the development environment:
./setup.sh - Create a feature branch:
git checkout -b feature/issue-number-description
- Look for issues labeled
good first issuefor beginner-friendly tasks - Check issues labeled
help wantedfor tasks needing assistance - Issues labeled
Stellar Waveare part of our contribution program
- Check if the issue is assigned to someone
- Comment on the issue to express your interest
- Wait for maintainer confirmation before starting
# Create a feature branch
git checkout -b feature/123-add-new-feature
# Make your changes
# ...
# Format and lint
cargo fmt
cargo clippy
# Run tests
cargo test --all
# Commit with conventional commit message
git commit -m "feat: add new feature (closes #123)"
# Push to your fork
git push origin feature/123-add-new-featureWe use Conventional Commits:
feat:- New featurefix:- Bug fixdocs:- Documentation changestest:- Adding or updating testsrefactor:- Code refactoringchore:- Maintenance tasks
Example: feat: implement batch record operations (closes #45)
Use the same format as commit messages.
Include:
- Summary of changes
- Related issue number (
Closes #123) - Testing performed
- Screenshots (if applicable)
- Code compiles without warnings
- All tests pass
- Code is formatted (
cargo fmt) - No clippy warnings (
cargo clippy) - Documentation updated (if needed)
- PR description is complete
All contributions must include comprehensive tests. For detailed testing requirements, patterns, and quality gates, see the Testing Strategy Guide.
- Write tests for new functionality
- Ensure all existing tests pass
- Aim for >80% code coverage per contract
- Include unit tests, integration tests, and property tests where applicable
- Add fuzz targets for security-critical functions
- Unit Tests: Individual function testing (
contracts/*/src/test.rs) - Integration Tests: Cross-module interaction testing (
contracts/*/tests/) - Property Tests: Invariant verification (
contracts/*/tests/property/) - Fuzz Tests: Random input exploration (
fuzz/) - Benchmarks: Performance regression testing (
contracts/benches/)
# Run all tests
cargo test --all
# Run specific test
cargo test test_name
# Run with output
cargo test -- --nocapture
# Check coverage
./scripts/run_coverage.sh
# Run benchmarks
cargo bench
# Run fuzz tests
cargo fuzz run vision_recordsBefore submitting a PR, ensure:
- All tests pass (
cargo test --all) - Coverage ≥ 80% for affected contracts
- No clippy warnings (
cargo clippy -- -D warnings) - Code formatted (
cargo fmt -- --check) - No security vulnerabilities (
cargo audit) - Fuzz targets pass brief runs
- Benchmarks show no regressions
For complete testing guidelines, see Testing Strategy Guide.
- Follow standard Rust conventions
- Use
cargo fmtfor formatting - Address all
cargo clippywarnings
- Document public APIs
- Add inline comments for complex logic
- Update README for new features
Contributors are recognized in:
- CHANGELOG.md
- GitHub contributors list
- Project documentation
- Open a Discussion
- Join our Discord community
- Tag maintainers in issues
Thank you for contributing! 👁️