Getting started
Before you begin contributing, please:Code style and standards
Kotlin conventions
Nimaz follows the official Kotlin coding conventions:The project uses
kotlin.code.style=official in gradle.properties to enforce consistent formatting.Architecture patterns
Nimaz follows modern Android architecture best practices:- MVVM Architecture: Use ViewModels for UI logic
- Repository Pattern: Abstract data sources behind repository interfaces
- Dependency Injection: Use Hilt for dependency injection
- Jetpack Compose: All UI is built with Compose Material 3
- Clean Architecture: Separate concerns into layers (data, domain, presentation)
Project structure
Making changes
Before you code
- Check existing issues: Search for related issues or discussions
- Create an issue: For significant changes, create an issue first to discuss your approach
- Keep changes focused: Each pull request should address a single concern
Writing code
Add tests
Write unit tests for new functionality. See Testing for details.
Commit messages
Write clear, concise commit messages following conventional commits:feat: New featurefix: Bug fixdocs: Documentation changesrefactor: Code refactoringtest: Adding or updating testschore: Maintenance tasksperf: Performance improvements
Submitting a pull request
Fill out the PR template
Provide:
- Clear description of changes
- Related issue numbers (if applicable)
- Screenshots/videos for UI changes
- Testing steps performed
Automated checks
When you submit a pull request, GitHub Actions will automatically run:- Build verification: Ensures the app builds successfully
- Unit tests: Runs all unit tests (
./gradlew test) - Lint checks: Validates code style (
./gradlew lint) - Test reports: Generates and uploads test results
.github/workflows/pr_checks.yml.
Dependencies
Adding new dependencies
If your contribution requires new dependencies:- Add them to the version catalog (
gradle/libs.versions.toml) - Justify the dependency in your PR description
- Consider alternatives and library size impact
- Ensure the dependency license is compatible
Nimaz uses Gradle version catalogs for dependency management. Check
gradle/libs.versions.toml for existing libraries.Development setup
For detailed setup instructions, see Building from source.Getting help
If you need help:- GitHub Issues: Ask questions or report problems
- Discussions: Join community discussions
- Code Review: Don’t hesitate to ask questions during review