Contributing to Hermes for Android

July 9, 2026 ยท View on GitHub

Thanks for your interest! This is an early-stage open-source project. By participating you agree to the Code of Conduct.

Getting started

  1. Install Android Studio (it bundles the JBR / JDK 21 the build expects) and the Android SDK (compileSdk 36 / build-tools 36.x).
  2. Clone and open the project; let Gradle sync.
  3. Run the checks:
    ./gradlew :app:testDebugUnitTest      # JVM unit tests
    ./gradlew :app:assembleDebug          # build
    # Optional, needs a device/emulator:
    ./gradlew :app:connectedDebugAndroidTest
    

Ground rules

  • Architecture: MVVM + Hilt + Jetpack Compose + Repository. Keep transport (data/network), storage (data/auth, DataStore), and UI (ui/<screen>) separate. Business logic that can be a pure function (e.g. the chat reduce() reducer, DTO mappers) should live in a testable, I/O-free unit.
  • Tests: add JVM unit tests for logic you can test without a device (see ChatReducerTest, the *ViewModelTests). PRs that change reducers, parsing, mapping, or auth flow must include tests.
  • Security: never commit secrets โ€” keystore.properties, *.jks/*.keystore, local.properties, tokens, or anything under ~/.secrets. Store credentials only via EncryptedCredentialStore, and don't loosen the network/cleartext config beyond what self-hosted private-network use requires. See SECURITY.md. A gitleaks secret scan runs on every push (pre-push hook + CI).
  • Commits: Conventional Commits (feat:, fix:, docs:, refactor:, test:, chore:, build:, ci:). No AI/assistant attribution in commits or PRs.
  • Style: idiomatic Kotlin; match the surrounding code's conventions and comment density.

Branches & pull requests

New work lands on dev first; main is the protected, always-releasable branch (see Development & release workflow).

  1. Branch from dev: git switch dev && git switch -c feature/my-change.
  2. Open a PR into dev. Keep it focused and incremental; describe what changed and how you verified it.
  3. CI (build + unit tests + CodeQL + secret scan) must pass, and review conversations must be resolved, before merge.

By contributing you agree your contributions are licensed under GPL-3.0.