Shepherd uses GitFlow. That basically means you never directly commit to master / dev.
To add a new feature or fix a bug in Shepherd, create a fork or branch from the dev branch. When you're branch is complete and your JUnit's have been created / run clear, create a pull request to merge your branch into dev. Squash your commits if you like, if you don't that will be done be at merge.
If you're working on an issue from the backlog, call your branch dev#{issueNumber}
Shepherd enforces Google Java Format via Spotless, bound to the Maven build. The format version is pinned in pom.xml, so local and CI use the exact same formatter. Pull requests with incorrectly formatted Java files will fail the lint-java check (mvn spotless:check).
Option 1 — Maven (recommended):
# Reformat all Java sources in place
mvn spotless:apply
# Verify formatting without changing files (this is what CI runs)
mvn spotless:checkmvn verify also runs spotless:check automatically, so unformatted code fails the build before you push.
Option 2 — IDE plugins:
- IntelliJ IDEA / Android Studio: Install the google-java-format plugin and enable it under Settings → google-java-format.
- Eclipse: Import the Eclipse style config under Preferences → Java → Code Style → Formatter.
- VS Code: Use the Google Java Format extension or configure the built-in formatter.
IDE plugins should be set to the same Google Java Format version pinned in pom.xml (spotless-maven-plugin → <googleJavaFormat><version>) to avoid producing output that differs from CI.
Always format before committing to avoid CI failures.
Install ZenHub for your browser and click the ZenHub tab that will appear in this repo. The Pipelines are as follows
- New Issues - Issues yet to be reviewed for priority
- Ice Box - Issues that are valid, but have not been prioritized for the backlog
- Backlog - The Backlog order for priority.
- In Progess - Items that are currently being worked
- QA Review - Issues that have pull requests and require review / approval
- Closed - Item is Done
See docs/development-workflow.md for the full development cycle, including how to:
- Create your branch and make changes
- Build and test your changes in the runtime environment using Docker
- Run the automated test suite
See docs/testing.md for instructions on running unit and integration tests with Docker.
See docs/database-configuration.md for connection pooling configuration and database setup.
Work in Progess
- New Code has 'Good' JUnit Tests that cover it
- All JUnit Tests Pass
- Acceptance Criteria of Epic has been satisfied where applicable
- Code does not introduce a vulnerability that can be leveraged to exploit the system/other users