Feat/2303 contributor docs (#2304)

Signed-off-by: DaneEvans <dane@goneepic.com>
Co-authored-by: rcarteraz <robert.l.carter2@gmail.com>
This commit is contained in:
DaneEvans 2025-07-02 14:20:42 +10:00 committed by GitHub
parent 02fa1dd358
commit ee544d3bd0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
41 changed files with 207 additions and 2 deletions

83
CONTRIBUTING.md Normal file
View file

@ -0,0 +1,83 @@
# Contributing to Meshtastic-Android
Thank you for your interest in contributing to Meshtastic-Android! We welcome contributions from everyone. Please take a moment to review these guidelines to help us maintain a high-quality, collaborative project.
## How to Contribute
- **Fork the repository** and create your branch from `main` or the appropriate feature branch.
- **Make your changes** in a logical, atomic manner.
- **Test your changes** thoroughly before submitting a pull request.
- **Submit a pull request** (PR) with a clear description of your changes and the problem they solve.
- If you are addressing an existing issue, please reference it in your PR (e.g., `Fixes #123`).
## Code Style
- Follow the [Kotlin Coding Conventions](https://kotlinlang.org/docs/coding-conventions.html) for Kotlin code.
- Use Android Studio's default formatting settings.
- Write clear, descriptive variable and function names.
- Add comments where necessary, especially for complex logic.
- Keep methods and classes focused and concise.
- Use localised strings; edit the English [`strings.xml`](app/src/main/res/values/strings.xml) file. CrowdIn will manage translations to other languages.
- For example,
```kotlin
// instead of hardcoding a string in your code:
Text("Settings")
// use the localised string resource:
Text(stringResource(R.string.settings))
```
### Linting
Meshtastic-Android uses [Detekt](https://detekt.dev/) for static code analysis and linting of Kotlin code.
- Run `./gradlew detekt` before submitting your pull request to ensure your code passes all lint checks.
- Fix any Detekt warnings or errors reported in your code.
- It is possible to suppress warnings individually, but this should be used very sparingly.
- You can find Detekt configuration in the `config/detekt` directory. If you believe a rule should be changed or suppressed, discuss it in your PR.
Consistent linting helps keep the codebase clean and maintainable.
### Testing
Meshtastic-Android uses both unit tests and instrumented UI tests to ensure code quality and reliability.
- **Unit tests** are located in `app/src/test/java/` and should be written for all new logic where possible.
- **Instrumented tests** (including UI tests using Jetpack Compose) are located in `app/src/androidTest/java/`. For Compose UI, use the [Jetpack Compose Testing APIs](https://developer.android.com/jetpack/compose/testing).
#### Guidelines for Testing
- Add or update tests for any new features or bug fixes.
- Ensure all tests pass by running:
- `./gradlew test` for unit tests
- `./gradlew connectedAndroidTest` for instrumented tests
- For UI components, write Compose UI tests to verify user interactions and visual elements. See existing tests in `DebugFiltersTest.kt` for examples.
- If your change is difficult to test, explain why in your pull request.
Comprehensive testing helps prevent regressions and ensures a stable experience for all users.
## Pull Requests
- Ensure your branch is up to date with the latest `main` branch before submitting a PR.
- Provide a meaningful title and description for your PR.
- Inlude information on how to test and/or replicate if it is not obvious.
- Include screenshots or logs if your change affects the UI or user experience.
- Be responsive to feedback and make requested changes promptly.
- Squash commits if requested by a maintainer.
## Issue Reporting
- Search existing issues before opening a new one to avoid duplicates.
- Provide a clear and descriptive title.
- Include steps to reproduce, expected behavior, and actual behavior.
- Attach logs, screenshots, or other helpful context if applicable.
## Community Standards
- Be respectful and considerate in all interactions.
- The Meshtastic Android project is subject to the code of conduct for the parent project, which can be [found here:](https://meshtastic.org/docs/legal/conduct/)
- Help others by reviewing pull requests and answering questions when possible.
Thank you for helping make Meshtastic-Android better!

View file

@ -13,8 +13,9 @@
This is a tool for using Android with open-source mesh radios. For more information see our webpage: [meshtastic.org](https://www.meshtastic.org). If you are looking for the the device side code, see [here](https://github.com/meshtastic/Meshtastic-device).
This project is currently beta testing, if you have questions or feedback
please [Join our discussion forum](https://github.com/orgs/meshtastic/discussions). We would love to hear from
you!
please [Join our discussion forum](https://github.com/orgs/meshtastic/discussions) or the [Discord Group](https://discord.gg/meshtastic) . We would love to hear from you!
For the latest Beta, use xxx,
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
alt="Get it on F-Droid"
@ -39,6 +40,10 @@ You can help translate the app into your native language using [Crowdin](https:/
https://meshtastic.org/docs/development/android/
## Contributing guidelines
For detailed instructions on how to contribute, please see our [CONTRIBUTING.md](CONTRIBUTING.md) file.
## Repository Statistics
![Alt](https://repobeats.axiom.co/api/embed/fdb0a61e65b85e53bf4b5f92e634b0f352953d00.svg "Repobeats analytics image")

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">الرسائل</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">Поруке</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">Съобщения</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_channel">Canal</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">Zprávy</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">Nachrichten</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">Μηνύματα</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">Mensajes</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_channel">Kanal</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">Viestit</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_channel">kanal</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">Messages</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_channel">Cainéal</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_channel">Canle</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_channel">Kanal</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">Üzenetek</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="channel_name">Heiti rásar</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">Messaggi</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">הודעות</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">メッセージ</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">메시지</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_channel">Kanalas</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_channel">Kanal</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">Berichten</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">Wiadomości</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">Mensagens</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">Mensagens</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="routing_error_admin_public_key_unauthorized">Cheie publică neautorizată</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">Сообщения</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">Správy</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_channel">Kanal</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_channel">Kanal</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">Поруке</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">Meddelanden</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">Mesajlar</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">Повідомлення</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">消息</string>

View file

@ -14,6 +14,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify the english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>
<string name="main_tab_messages">訊息</string>

View file

@ -13,6 +13,9 @@
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
~
~ NOTE: Only modify this english strings.xml file directly.
~ Other languages are managed by CrowdIn
-->
<resources>