🤝 Contributing to ChainMove
Thank you for your interest in contributing to ChainMove! We welcome all contributions, whether they're bug reports, feature requests, documentation improvements, or code contributions.
Table of Contents
- Code of Conduct
- How Can I Contribute?
- Development Workflow
- Documentation Guidelines
- Pull Request Process
- Coding Standards
- Commit Message Guidelines
Code of Conduct
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to conduct@chainmove.io.
Our Pledge
We pledge to make participation in our project a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
How Can I Contribute?
Reporting Bugs
Before creating bug reports, please check if the issue has already been reported. If you find a closed issue that seems similar, open a new issue and link to the original one.
When creating a bug report, please include:
- A clear, descriptive title
- Steps to reproduce the issue
- Expected vs. actual behavior
- Screenshots if applicable
- Browser/OS version
- Any relevant console errors
Use this template for bug reports:
**Bug Description:**
A clear and concise description of what the bug is.
**To Reproduce:**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected Behavior:**
A clear and concise description of what you expected to happen.
**Screenshots:**
If applicable, add screenshots to help explain your problem.
**Environment:**
- OS: [e.g. iOS]
- Browser: [e.g. chrome, safari]
- Version: [e.g. 22]
**Additional Context:**
Add any other context about the problem here.
Suggesting Enhancements
We welcome suggestions for new features and improvements. When suggesting an enhancement:
- Use a clear, descriptive title
- Describe the current behavior and why it's not ideal
- Explain the suggested change
- Provide examples of the new behavior
Your First Contribution
Looking for your first contribution? Look for issues labeled:
good first issue
- Good for newcomershelp wanted
- Extra attention is neededdocumentation
- Documentation improvements needed
Development Workflow
1. Fork the Repository
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/your-username/chain_move.git
cd chain_move
2. Set Up Development Environment
-
Install dependencies:
npm install
-
Set up environment variables:
cp .env.example .env.local
# Edit .env.local with your configuration -
Start development server:
npm run dev
3. Create a Feature Branch
git checkout -b feature/your-feature-name
4. Make Your Changes
- Write clean, well-commented code
- Follow our coding standards
- Add tests for new features
- Update documentation as needed
5. Test Your Changes
# Run tests
npm test
# Run linting
npm run lint
# Run type checking
npm run type-check
# Build project
npm run build
6. Commit Your Changes
git add .
git commit -m "feat: add new feature description"
7. Push and Create Pull Request
git push origin feature/your-feature-name
Then create a pull request on GitHub.
Documentation Guidelines
Writing Style
- Use clear, concise language
- Write in active voice
- Use second person ("you") for user-focused content
- Be consistent with terminology
- Use sentence case for headings
- Keep paragraphs short (3-4 sentences max)
Markdown Formatting
-
Use ATX-style headers (
##
,###
, etc.) -
Wrap lines at 100 characters
-
Use backticks for
code
,variables
, andcommands
-
Use fenced code blocks with language specification:
// Example code
function example() {
return "Hello, World!";
} -
Use relative links for internal documentation links
-
Add alt text for images
Documentation Structure
docs/
├── api/ # API reference documentation
├── getting-started/ # Getting started guides
├── smart-contracts/ # Smart contract documentation
├── user-guide/ # User-focused documentation
├── technical/ # Technical deep-dives
└── resources/ # Additional resources
Pull Request Process
- Ensure your PR has a clear title and description
- Link to any related issues
- Include screenshots for UI changes
- Add tests for new functionality
- Update documentation as needed
- Ensure all CI checks pass
PR Template
Use this template for your pull requests:
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Documentation update
## How Has This Been Tested?
Describe the tests you ran to verify your changes
## Screenshots (if applicable)
Add screenshots to help explain your changes
## Checklist
- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes
Coding Standards
TypeScript/JavaScript
- Use TypeScript for all new code
- Follow the TypeScript Style Guide
- Use ES6+ features where appropriate
- Prefer
const
andlet
overvar
- Use arrow functions for callbacks
- Use template literals for string interpolation
React
- Use functional components with hooks
- Keep components small and focused
- Use TypeScript interfaces for props and state
- Follow the React Hooks rules
Solidity
- Follow the Solidity Style Guide
- Use latest stable Solidity version
- Include comprehensive comments
- Use OpenZeppelin contracts where possible
- Write comprehensive tests
CSS/Styling
- Use Tailwind CSS for styling
- Follow the existing design system
- Keep styles modular and reusable
- Use CSS variables for theming
Commit Message Guidelines
We follow the Conventional Commits specification:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Types
feat
: A new featurefix
: A bug fixdocs
: Documentation only changesstyle
: Changes that do not affect the meaning of the coderefactor
: A code change that neither fixes a bug nor adds a featureperf
: A code change that improves performancetest
: Adding missing tests or correcting existing testschore
: Changes to the build process or auxiliary tools
Examples
feat(auth): add password reset functionality
fix(api): resolve user registration validation
docs(readme): update installation instructions
style(ui): improve button hover states
refactor(utils): simplify date formatting functions
test(auth): add unit tests for login component
chore(deps): update dependencies to latest versions
Recognition
Contributors who make significant contributions will be:
- Added to our contributors list
- Mentioned in release notes
- Invited to special contributor events
- Considered for community moderator roles
License
By contributing, you agree that your contributions will be licensed under the project's MIT License.
Questions?
Feel free to reach out if you have questions:
- Discord: Join our developer community
- Email: dev@chainmove.io
- GitHub Discussions: Start a discussion
Thank you for contributing to ChainMove! Together, we're building the future of decentralized vehicle financing. 🚀