Thank you for your interest in contributing to ChainSmith! This document provides guidelines and instructions for contributing.
Please read and follow our Code of Conduct.
- Check existing issues to avoid duplicates
- Use the bug report template
- Include:
- ChainSmith version
- Node.js version
- Operating system
- Steps to reproduce
- Expected vs actual behavior
- Check existing issues for similar suggestions
- Use the feature request template
- Describe the use case and expected behavior
- Fork the repository
- Create a feature branch from
main:git checkout -b feature/your-feature-name
- Make your changes following our coding standards
- Write or update tests as needed
- Ensure all tests pass:
pnpm lint pnpm format:check pnpm type-check pnpm build
- Commit using conventional commits format:
feat: add new feature fix: resolve bug docs: update documentation refactor: improve code structure test: add tests - Push and create a Pull Request
-
Clone the repository:
git clone https://github.com/57blocks/ChainSmith.git cd ChainSmith -
Install dependencies:
pnpm install
-
Initialize test configuration:
pnpm init:tests
-
Configure your test environment in
tests/config.json
See DEVELOPMENT.md for detailed setup instructions.
- Use TypeScript for all source code
- Follow ESLint and Prettier configurations
- Write meaningful commit messages
- Add JSDoc comments for public APIs
- Maintain test coverage for new features
src/
├── core/ # Core blockchain management
├── blockchain/ # Chain-specific implementations
├── infrastructure/ # Node and Docker management
├── utils/ # Utility functions
└── index.ts # Main entry point
Feel free to open an issue for any questions or discussions.