First off, thank you for considering contributing to POWR! This document provides guidelines and steps for contributing.
- Fork the Repository
- Clone your fork
- Create a new branch:
git checkout -b feature/your-feature-name
- Make your changes
- Commit with clear messages
- Push to your fork
- Submit a Pull Request
- Install dependencies:
npm install
- Start the development server:
npx expo start
- Use TypeScript for all new code
- Provide proper type definitions
- Avoid using
any
- Document complex types
- Use functional components
- Implement proper error boundaries
- Follow React hooks best practices
- Keep components focused and reusable
- Write tests for new features
- Maintain existing test coverage
- Use descriptive test names
- Follow the "Arrange-Act-Assert" pattern
- Use JSDoc comments for functions and classes
- Document component props
- Explain complex logic
- Keep inline comments clear and necessary
- Update README.md if needed
- Document new features
- Update CHANGELOG.md
- Add migration notes if needed
- Create a descriptive PR title
- Fill out the PR template
- Link related issues
- Update documentation
- Ensure tests pass
- Request review
- Address feedback
Follow the conventional commits specification:
- feat: New feature
- fix: Bug fix
- docs: Documentation changes
- style: Code style changes
- refactor: Code refactoring
- test: Test updates
- chore: Build process updates
Example:
feat(exercise): add custom exercise creation
- Add exercise form component
- Implement validation
- Add database integration
- Check existing issues first
- Use issue templates when available
- Provide clear reproduction steps
- Include relevant information:
- Platform (iOS/Android/Web)
- React Native version
- Error messages
- Screenshots if applicable
- Keep PRs focused and small
- Explain complex changes
- Update tests and documentation
- Ensure CI checks pass
- Be respectful and constructive
- Focus on code, not the author
- Explain your reasoning
- Approve once satisfied
- Follow platform conventions
- Maintain consistency
- Consider accessibility
- Support dark mode
- Keep components focused
- Use proper prop types
- Implement error handling
- Consider reusability
- Version bump
- Update CHANGELOG.md
- Create release notes
- Tag the release
- Build and test
- Deploy
If you have questions:
- Check existing issues
- Review documentation
- Open a discussion
- Ask in our community channels
- Be respectful and inclusive
- Help others learn
- Share knowledge
- Give constructive feedback
- Follow the code of conduct