First off, thank you for considering contributing to FastMask! It's people like you that make FastMask a great tool for managing Fastmail masked emails.
By participating in this project, you agree to maintain a respectful and inclusive environment for everyone.
Before creating bug reports, please check existing issues to avoid duplicates. When you create a bug report, include as many details as possible:
- Use a clear and descriptive title
- Describe the exact steps to reproduce the problem
- Describe the behavior you observed and what you expected
- Include your Android version and device model
- Include screenshots if applicable
Feature suggestions are welcome! Please:
- Use a clear and descriptive title
- Provide a detailed description of the proposed feature
- Explain why this feature would be useful
- Include mockups or examples if possible
- Fork the repository
- Create a feature branch from
main:git checkout -b feature/your-feature-name
- Make your changes
- Test your changes thoroughly
- Commit with a meaningful message:
git commit -m "Add: description of your changes" - Push to your fork:
git push origin feature/your-feature-name
- Open a Pull Request
- Android Studio (latest stable version)
- JDK 17 or higher
- Android SDK with API 34
# Clone your fork
git clone https://github.com/YOUR_USERNAME/FastMask.git
cd FastMask
# Open in Android Studio or build via command line
./gradlew assembleDebug# Run unit tests
./gradlew test
# Run instrumented tests (requires emulator or device)
./gradlew connectedAndroidTest- Follow Kotlin coding conventions
- Use meaningful names for variables, functions, and classes
- Keep functions small and focused
- Use Kotlin idioms (scope functions, extension functions, etc.)
- Keep composables small and reusable
- Use
rememberandderivedStateOfappropriately - Follow the Compose API guidelines
- Follow Clean Architecture principles
- Keep the data, domain, and UI layers separate
- Use use cases for business logic
- ViewModels should only contain UI state logic
Use clear, descriptive commit messages:
Add: new feature descriptionFix: bug descriptionUpdate: what was changedRefactor: what was refactoredDocs: documentation changes
app/src/main/java/com/fastmask/
├── data/ # Data layer (API, storage, repository implementations)
├── domain/ # Domain layer (models, repository interfaces, use cases)
├── di/ # Hilt dependency injection modules
└── ui/ # UI layer (screens, viewmodels, components, theme)
Feel free to open an issue with the question label if you have any questions about contributing.
Thank you for contributing!