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.
124 lines
3.3 KiB
Markdown
124 lines
3.3 KiB
Markdown
# 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
|
|
|
|
1. Fork the repository
|
|
2. Create a feature branch from `main`:
|
|
```bash
|
|
git checkout -b feature/your-feature-name
|
|
```
|
|
3. Make your changes
|
|
4. Test your changes thoroughly
|
|
5. Commit with a meaningful message:
|
|
```bash
|
|
git commit -m "Add: description of your changes"
|
|
```
|
|
6. Push to your fork:
|
|
```bash
|
|
git push origin feature/your-feature-name
|
|
```
|
|
7. Open a Pull Request
|
|
|
|
## Development Setup
|
|
|
|
### Prerequisites
|
|
|
|
- [Android Studio](https://developer.android.com/studio) (latest stable version)
|
|
- JDK 17 or higher
|
|
- Android SDK with API 34
|
|
|
|
### Building the Project
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# Run unit tests
|
|
./gradlew test
|
|
|
|
# Run instrumented tests (requires emulator or device)
|
|
./gradlew connectedAndroidTest
|
|
```
|
|
|
|
## Code Style
|
|
|
|
### Kotlin
|
|
|
|
- Follow [Kotlin coding conventions](https://kotlinlang.org/docs/coding-conventions.html)
|
|
- 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 `remember` and `derivedStateOf` appropriately
|
|
- Follow the [Compose API guidelines](https://android.googlesource.com/platform/frameworks/support/+/androidx-main/compose/docs/compose-api-guidelines.md)
|
|
|
|
### 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 description`
|
|
- `Fix: bug description`
|
|
- `Update: what was changed`
|
|
- `Refactor: what was refactored`
|
|
- `Docs: 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!
|