Thank you for your interest in contributing to ΞTHΛURΛ! This document provides guidelines and instructions for contributing.
By participating in this project, you agree to abide by our Code of Conduct:
- Be respectful and inclusive
- Welcome newcomers
- Focus on constructive feedback
- Respect differing viewpoints
- Report unacceptable behavior
Before creating bug reports, please check existing issues. When creating a bug report, include:
- Clear title and description
- Steps to reproduce
- Expected vs actual behavior
- Environment details (OS, browser, network)
- Screenshots or logs if applicable
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion, include:
- Clear use case
- Detailed description
- Potential implementation approach
- Alternatives considered
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Add tests for new functionality
- Ensure tests pass (
make test) - Format code (
make format) - Commit changes with clear messages
- Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow existing code style
- Write clear commit messages
- Add tests for new features
- Update documentation
- Keep PRs focused and small
- Reference related issues
type(scope): subject
body
footer
Types:
feat: New featurefix: Bug fixdocs: Documentationstyle: Formattingrefactor: Code restructuringtest: Adding testschore: Maintenance
Example:
feat(account): add multi-device support
Implement support for multiple public keys per account
with configurable weights and threshold.
Closes #123
- Foundry
- Node.js >= 18
- Git
# Clone your fork
git clone https://github.com/YOUR_USERNAME/ethaura.git
cd ethaura
# Add upstream remote
git remote add upstream https://github.com/ORIGINAL_OWNER/ethaura.git
# Install dependencies
make install
# Build contracts
make build
# Run tests
make test-
Sync with upstream
git fetch upstream git checkout main git merge upstream/main
-
Create feature branch
git checkout -b feature/your-feature
-
Make changes and test
# Edit files make test make format
-
Commit and push
git add . git commit -m "feat: your feature" git push origin feature/your-feature
-
Create Pull Request
- Go to GitHub
- Click "New Pull Request"
- Fill in template
- Submit for review
- Follow Solidity Style Guide
- Use NatSpec comments for all public functions
- Keep functions small and focused
- Use descriptive variable names
- Add events for state changes
Example:
/**
* @notice Update the public key for this account
* @param _qx The new x-coordinate of the public key
* @param _qy The new y-coordinate of the public key
*/
function updatePublicKey(bytes32 _qx, bytes32 _qy) external onlyOwner {
qx = _qx;
qy = _qy;
emit PublicKeyUpdated(_qx, _qy);
}- Use ES6+ features
- Follow Airbnb style guide
- Use functional components
- Add JSDoc comments
- Handle errors gracefully
Example:
/**
* Sign a message with passkey
* @param {Object} credential - The credential info
* @param {Uint8Array} message - The message to sign
* @returns {Promise<Object>} Signature data
*/
export async function signWithPasskey(credential, message) {
// Implementation
}# Run all tests
forge test
# Run specific test
forge test --match-test testFunctionName
# Run with verbosity
forge test -vvv
# Run with gas report
forge test --gas-report
# Run with coverage
forge coveragecontract MyContractTest is Test {
MyContract public myContract;
function setUp() public {
// Setup
}
function test_FeatureName() public {
// Test implementation
}
function testFuzz_FeatureName(uint256 input) public {
// Fuzz test
}
}cd frontend
npm test
npm run lint- Update README.md for user-facing changes
- Update ARCHITECTURE.md for technical changes
- Add inline comments for complex logic
- Update DEPLOYMENT.md for deployment changes
-
Automated checks must pass
- Tests
- Linting
- Build
-
Code review by maintainers
- Code quality
- Test coverage
- Documentation
-
Approval required before merge
-
Squash and merge for clean history
- Update version in package.json
- Update CHANGELOG.md
- Create release tag
- Deploy to testnet
- Announce release
- Discord: Join our Discord server
- GitHub Discussions: Ask questions
- Documentation: Check docs first
- Issues: Search existing issues
Contributors will be:
- Listed in CONTRIBUTORS.md
- Mentioned in release notes
- Eligible for bounties (if applicable)
By contributing, you agree that your contributions will be licensed under the MIT License.
Feel free to reach out:
- Open a GitHub Discussion
- Join our Discord
- Email: contribute@ethaura.example.com
Thank you for contributing to ΞTHΛURΛ! 🚀