| layout | default |
|---|---|
| title | 🤝 Contributing to AppDimens |
Thank you for your interest in contributing to AppDimens! This document provides guidelines and information for contributors.
Languages: English | Português (BR) | Español
Note: Spanish translation is not yet available.
- Code of Conduct
- Getting Started
- Development Setup
- Contributing Guidelines
- Pull Request Process
- Issue Guidelines
- Documentation
- Testing
- Release Process
This project adheres to a code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior through our private contact channel.
- Android Development: Android Studio, JDK 11+, Android SDK
- iOS Development: Xcode 12+, Swift 5.0+, iOS 13.0+
- General: Git, GitHub account
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/your-username/appdimens.git cd appdimens - Add the upstream repository:
git remote add upstream https://github.com/bodenberg/appdimens.git
-
Open in Android Studio:
cd Android # Open Android Studio and import the project
-
Install Dependencies:
./gradlew build
-
Run Tests:
./gradlew test
-
Open in Xcode:
cd iOS open AppDimens.xcodeproj -
Install Dependencies:
- CocoaPods:
pod install - Swift Package Manager: Automatic
- CocoaPods:
-
Run Tests:
- In Xcode: Product → Test (⌘+U)
We welcome several types of contributions:
- 🐛 Bug Fixes: Fix existing issues
- ✨ New Features: Add new functionality
- 📚 Documentation: Improve documentation
- 🧪 Tests: Add or improve tests
- 🎨 Examples: Add usage examples
- 🔧 Performance: Optimize performance
- 🌐 Translations: Add language support
-
Create a Branch:
git checkout -b feature/your-feature-name # or git checkout -b fix/issue-number -
Make Changes:
- Follow the coding standards
- Add tests for new functionality
- Update documentation as needed
-
Test Your Changes:
# Android ./gradlew test ./gradlew lint # iOS # Run tests in Xcode
-
Commit Your Changes:
git add . git commit -m "feat: add new responsive dimension type"
- Follow Kotlin Coding Conventions
- Use meaningful variable and function names
- Add KDoc comments for public APIs
- Follow the existing code style
/**
* Calculates responsive dimensions based on screen characteristics.
*
* @param baseValue The base dimension value
* @param screenType The screen type to use for calculations
* @return The calculated responsive dimension
*/
fun calculateDimension(baseValue: Float, screenType: ScreenType): Float {
// Implementation
}- Follow Swift API Design Guidelines
- Use meaningful variable and function names
- Add documentation comments for public APIs
- Follow the existing code style
/// Calculates responsive dimensions based on screen characteristics.
///
/// - Parameters:
/// - baseValue: The base dimension value
/// - screenType: The screen type to use for calculations
/// - Returns: The calculated responsive dimension
func calculateDimension(baseValue: CGFloat, screenType: ScreenType) -> CGFloat {
// Implementation
}Use conventional commits format:
type(scope): description
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changesrefactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
Examples:
feat(android): add new scaling algorithm for tablets
fix(ios): resolve memory leak in dimension calculations
docs: update installation guide with new examples
test(android): add unit tests for conditional scaling
- Update Documentation: Update relevant documentation
- Add Tests: Add tests for new functionality
- Update Examples: Add examples if applicable
- Check Compatibility: Ensure changes work across supported platforms
- Performance: Consider performance implications
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Documentation update
- [ ] Performance improvement
- [ ] Breaking change
## Testing
- [ ] Tests pass locally
- [ ] New tests added for new functionality
- [ ] Manual testing completed
## Checklist
- [ ] Code follows project style guidelines
- [ ] Self-review completed
- [ ] Documentation updated
- [ ] No breaking changes (or documented)- Automated Checks: CI/CD pipeline runs automatically
- Code Review: Maintainers review the code
- Testing: Changes are tested on multiple devices
- Approval: At least one maintainer approval required
- Search Existing Issues: Check if the issue already exists
- Check Documentation: Review relevant documentation
- Test Latest Version: Ensure you're using the latest version
Use the bug report template:
## Bug Description
Clear description of the bug
## Steps to Reproduce
1. Step one
2. Step two
3. Step three
## Expected Behavior
What should happen
## Actual Behavior
What actually happens
## Environment
- Platform: Android/iOS
- Version: X.X.X
- Device: [Device model]
- OS Version: [OS version]
## Additional Context
Any additional informationUse the feature request template:
## Feature Description
Clear description of the feature
## Use Case
Why is this feature needed?
## Proposed Solution
How should this feature work?
## Alternatives Considered
Other solutions you've considered
## Additional Context
Any additional information- Clear and Concise: Write clear, easy-to-understand documentation
- Examples: Include practical examples
- Up-to-date: Keep documentation current with code changes
- Consistent: Follow the established documentation style
- API Documentation: Code comments and inline documentation
- User Guides: Installation and usage guides
- Examples: Practical usage examples
- Architecture: Technical architecture documentation
When making code changes:
- Update API Documentation: Update relevant code comments
- Update User Guides: Update installation and usage guides
- Add Examples: Add examples for new features
- Update README: Update main README if needed
- Unit Tests: Add unit tests for new functionality
- Integration Tests: Test integration with existing code
- Platform Tests: Test on both Android and iOS
- Device Tests: Test on different device types and screen sizes
# Unit tests
./gradlew test
# Instrumented tests
./gradlew connectedAndroidTest
# Lint checks
./gradlew lint# In Xcode: Product → Test (⌘+U)
# Or command line:
xcodebuild test -scheme AppDimens -destination 'platform=iOS Simulator,name=iPhone 14'- Minimum Coverage: 80% for new code
- Critical Paths: 100% coverage for critical functionality
- Edge Cases: Test edge cases and error conditions
We follow Semantic Versioning:
- MAJOR: Breaking changes
- MINOR: New features (backward compatible)
- PATCH: Bug fixes (backward compatible)
- Update Version: Update version numbers in all relevant files
- Update Changelog: Update CHANGELOG.md with new features and fixes
- Run Tests: Ensure all tests pass
- Update Documentation: Update documentation for new features
- Create Release: Create release on GitHub
- Publish: Publish to relevant package managers
- Android: AAR files, Maven coordinates
- iOS: Framework, CocoaPods, Swift Package Manager
- Documentation: Updated documentation and examples
bug: Something isn't workingenhancement: New feature or requestdocumentation: Improvements or additions to documentationgood first issue: Good for newcomershelp wanted: Extra attention is neededquestion: Further information is requestedwontfix: This will not be worked on
ready for review: Ready for maintainer reviewneeds testing: Requires additional testingbreaking change: Breaking change that requires major version bumpperformance: Performance improvement
- GitHub Issues: For bug reports and feature requests
- GitHub Discussions: For questions and general discussion
- Email: for private matters
- Issues: Within 48 hours
- Pull Requests: Within 72 hours
- Questions: Within 24 hours
Contributors will be recognized in:
- README: Listed as contributors
- Release Notes: Mentioned in release notes
- GitHub: Listed in the contributors section
By contributing to AppDimens, you agree that your contributions will be licensed under the Apache License 2.0.
Thank you for contributing to AppDimens! Your contributions help make responsive design accessible to developers worldwide.
Happy Contributing! 🚀