π€ Contributing to AppDimens
May 13, 2026 Β· View on GitHub
Thank you for your interest in contributing to AppDimens! This document provides guidelines and information for contributors.
π Table of Contents
- Code of Conduct
- Getting Started
- Development Setup
- Contributing Guidelines
- Pull Request Process
- Issue Guidelines
- Documentation
- Testing
- Release Process
π Code of Conduct
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.
π Getting Started
Prerequisites
- Android Development: Android Studio, JDK 11+, Android SDK
- iOS Development: Xcode 12+, Swift 5.0+, iOS 13.0+
- General: Git, GitHub account
Fork and Clone
- Fork the repository on GitHub
- Clone your fork locally with submodules (needed for platform code and accurate docs):
If you already cloned without submodules:git clone --recurse-submodules https://github.com/your-username/appdimens.git cd appdimensgit submodule update --init --recursive - Add the upstream repository:
git remote add upstream https://github.com/bodenberg/appdimens.git
π Development Setup
Android Setup (submodule: appdimens-dynamic, appdimens-sdps, appdimens-ssps, appdimens-games, β¦)
-
Open in Android Studio:
cd appdimens-dynamic # or appdimens-sdps, appdimens-ssps, appdimens-games, appdimens-dynamic-kmp # Open Android Studio and import the project -
Install Dependencies:
./gradlew build -
Run Tests:
./gradlew test
iOS Setup (submodule: appdimens-ios)
-
Open in Xcode:
cd appdimens-ios open AppDimens.xcodeproj -
Install Dependencies:
- CocoaPods:
pod install - Swift Package Manager: Automatic
- CocoaPods:
-
Run Tests:
- In Xcode: Product β Test (β+U)
Flutter / React Native / Web
Work in the corresponding submodule directory (appdimens-flutter, appdimens-react-native, appdimens-web). Follow each projectβs README, package.json, or pubspec.yaml for install, test, and lint commands.
π Contributing Guidelines
Types of Contributions
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
Development Workflow
-
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"
Coding Standards
Android (Kotlin)
- 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
}
iOS (Swift)
- 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
}
Commit Message Format
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
π Pull Request Process
Before Submitting
- 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
Pull Request Template
## 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)
Review Process
- Automated Checks: Run tests and linters in the relevant submodule; this meta-repo may not define a global CI pipeline
- Code Review: Maintainers review the code
- Testing: Changes are tested on multiple devices
- Approval: At least one maintainer approval required
π Issue Guidelines
Before Creating an Issue
- Search Existing Issues: Check if the issue already exists
- Check Documentation: Review relevant documentation
- Test Latest Version: Ensure you're using the latest version
Bug Reports
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 information
Feature Requests
Use 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
π Documentation
Documentation Standards
- 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
Documentation Types
- API Documentation: Code comments and inline documentation
- User Guides: Installation and usage guides
- Examples: Practical usage examples
- Architecture: Technical architecture documentation
Updating 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
Hub theory (DOCS/) checklist
Contributions touching DOCS/ still need careful cross-linksβthere is no semver pinned there.
Before opening a hub PR please:
DOCS/stays versionless β never bake Maven/npm/CocoaPods lines into prose; hyperlink submodules instead.- Android Compose samples stay honest:
sdp/sspβscaled; BALANCED hybrid βautoβasdp/assp/β¦. Full tables live inDOCS/PLATFORMS.mdandDOCS/MIGRATION.md. - Grep the diff for dead
LANG/links, accidental dependency pins (implementation(",pod '), and marketing language that contradicts Kotlin sources. - Run link spot checks (
README.md,DOCS/*.md) when adding new pages β updateDOCS/README.mdwhen you mint a fresh doc slug.
π§ͺ Testing
Testing Requirements
- 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
Running Tests
Android
# Unit tests
./gradlew test
# Instrumented tests
./gradlew connectedAndroidTest
# Lint checks
./gradlew lint
iOS
# In Xcode: Product β Test (β+U)
# Or command line:
xcodebuild test -scheme AppDimens -destination 'platform=iOS Simulator,name=iPhone 14'
Test Coverage
- Minimum Coverage: 80% for new code
- Critical Paths: 100% coverage for critical functionality
- Edge Cases: Test edge cases and error conditions
π Release Process
Version Numbering
We follow Semantic Versioning:
- MAJOR: Breaking changes
- MINOR: New features (backward compatible)
- PATCH: Bug fixes (backward compatible)
Release Checklist
- 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
Release Files
- Android: AAR files, Maven coordinates
- iOS: Framework, CocoaPods, Swift Package Manager
- Documentation: Updated documentation and examples
π· Labels and Milestones
Issue Labels
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
Pull Request Labels
ready for review: Ready for maintainer reviewneeds testing: Requires additional testingbreaking change: Breaking change that requires major version bumpperformance: Performance improvement
π Getting Help
Communication Channels
- GitHub Issues: For bug reports and feature requests
- GitHub Discussions: For questions and general discussion
- Email: for private matters
Response Times
- Issues: Within 48 hours
- Pull Requests: Within 72 hours
- Questions: Within 24 hours
π Recognition
Contributors will be recognized in:
- README: Listed as contributors
- Release Notes: Mentioned in release notes
- GitHub: Listed in the contributors section
π License
By contributing to AppDimens, you agree that your contributions will be licensed under the Apache License 2.0.
π Thank You
Thank you for contributing to AppDimens! Your contributions help make responsive design accessible to developers worldwide.
Happy Contributing! π