- Ensure you have an assigned issue before starting work.
- Discuss major changes in the issue before implementing.
- Use the appropriate issue templates for bug reports or feature requests.
When creating new issues, please use the provided templates to ensure consistent and complete information:
Use the Bug Report template (.github/ISSUE_TEMPLATE/bug_report.md) for:
- Contract functionality issues
- Build or deployment problems
- Security vulnerabilities
- Performance issues
The template includes sections for:
- Clear bug description with reproduction steps
- Environment details (Rust version, Soroban CLI, OS)
- Affected contracts/modules
- Security impact assessment
Use the Feature Request template (.github/ISSUE_TEMPLATE/feature_request.md) for:
- New contract functionality
- Educational platform enhancements
- Performance optimizations
- Developer experience improvements
The template includes sections for:
- Problem description and proposed solution
- Implementation details and affected contracts
- Technical considerations and complexity assessment
- Security and compliance implications
- Ensure your PR links to the related issue ID.
- Update documentation as needed.
- Add tests for new functionality.
- Ensure all tests pass and CI checks are successful.
- The CODEOWNERS file will automatically request review from @LaGodxy (maintainer).
The repository uses a CODEOWNERS file (.github/CODEOWNERS) to automatically assign reviewers:
- Maintainer: @LaGodxy is the primary maintainer and will be automatically requested for review on all PRs
- Contract-specific ownership: Different contracts may have specific ownership requirements
- Security-sensitive files: Files related to authentication, authorization, and reentrancy protection require maintainer review
- All PRs require approval from the maintainer (@LaGodxy)
- Security-related changes require additional scrutiny
- Large architectural changes should be discussed in issues before implementation
- Follow Rust best practices and use
rustfmtandclippy. - Write comprehensive tests for all functionality.
- Document all public functions and modules.
- Maintain a security-first mindset.
- Follow the naming and formatting guide in CODE_STYLE.md.
- Use
snake_casefor variables and functions. - Use
PascalCasefor types (struct,enum,trait,typealiases). - Use
SCREAMING_SNAKE_CASEfor constants. - Format all code with
cargo fmt --all. - Run clippy style checks:
cargo clippy --workspace --all-targets --all-features -- -D warnings -D nonstandard-style
Install pre-commit hooks once after cloning:
pip install pre-commit
pre-commit installRun hooks manually at any time:
pre-commit run --all-filesWhen creating or updating smart contracts, ensure you include comprehensive documentation:
- README.md: Each contract directory must have a README.md following the standard template
- Function Documentation: All public functions must have rustdoc comments
- Interface Documentation: Document all public entrypoints with parameters and return types
- Event Documentation: Document all emitted events and their schemas
- Usage Examples: Include code examples for common operations
Use the README_TEMPLATE.md as a guide for contract documentation. The template includes:
- Overview: Brief description of the contract's purpose
- Interface: List of public entrypoints with parameters
- Events: Description of emitted events and their schemas
- Configuration: Constants, settings, and environment variables
- Testing: How to run tests and test coverage information
- Deployment: Deployment notes and environment setup
- Related Docs: Links to other relevant documentation
Before submitting a PR with contract changes:
- README.md follows the standard template
- All public functions have rustdoc comments
- Events are documented with schemas
- Configuration parameters are explained
- Test instructions are provided
- Deployment steps are documented
- Usage examples are included
- Related documentation is linked
Follow the conventional commits format: ``` feat(scope): add new feature fix(scope): fix issue docs(scope): update documentation test(scope): add tests chore(scope): maintenance tasks