Introduces GitHub issue and PR templates, contributing and security documentation. Adds Android 12+ splash screen support, updates theming and status color handling, and improves MaskedEmail card/detail UI with shared transitions and accessibility. Updates dependencies for Compose and Material3, and enhances README with detailed setup and contribution instructions.
3.3 KiB
3.3 KiB
Contributing to FastMask
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.
Code of Conduct
By participating in this project, you agree to maintain a respectful and inclusive environment for everyone.
How Can I Contribute?
Reporting Bugs
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
Suggesting Features
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
Pull Requests
- 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
Development Setup
Prerequisites
- Android Studio (latest stable version)
- JDK 17 or higher
- Android SDK with API 34
Building the Project
# 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
Running Tests
# Run unit tests
./gradlew test
# Run instrumented tests (requires emulator or device)
./gradlew connectedAndroidTest
Code Style
Kotlin
- 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.)
Compose
- Keep composables small and reusable
- Use
rememberandderivedStateOfappropriately - Follow the Compose API guidelines
Architecture
- 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
Commit Messages
Use clear, descriptive commit messages:
Add: new feature descriptionFix: bug descriptionUpdate: what was changedRefactor: what was refactoredDocs: documentation changes
Project Structure
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)
Questions?
Feel free to open an issue with the question label if you have any questions about contributing.
Thank you for contributing!