Contributing

Contributions are welcome — bug fixes, new channels, docs, and tests. See the CONTRIBUTING guide in the repository for the full workflow. The essentials:

1. Build & test

./mvnw verify                       # build + test + all quality gates
./mvnw verify -Pdefault             # also builds/tests the sample (what CI runs)
./mvnw spring-javaformat:apply      # auto-fix formatting before committing

2. Quality gates

Every verify enforces (all fail the build):

  • spring-javaformat — strict format check; run spring-javaformat:apply to fix.

  • Checkstyle and PMD — config at the repo root (checkstyle.xml, pmd-ruleset.xml).

  • JaCoCo — line coverage must stay above the configured floor; new code generally needs tests.

3. Adding a channel

  1. Add a notifier class in notify4j-core (extend AbstractHttpNotifier for webhook-style channels and implement payload/headers).

  2. Register its scheme in NotifierUrlParser.

  3. Add a payload-shape test (see ChannelPayloadTest) pinning the exact wire format.

  4. Document the scheme in Configuration.