We welcome contributions from the community and first want to thank you for taking the time to contribute!
Please familiarize yourself with the Code of Conduct before contributing.
Before you start working with simple-distributed-bank-services-demo, please read our Developer Certificate of Origin. All contributions to this repository must be signed as described on that page. Your signature certifies that you wrote the patch or have the right to pass it on as an open-source patch.
We welcome many different types of contributions and not all of them need a Pull request. Contributions may include:
- New features and proposals
- Documentation
- Bug fixes
- Issue Triage
- Answering questions and giving feedback
- Helping to onboard new contributors
- Other related activities
This project requires git, Java 17 (or higher) and gradle.
This project is configured as a single gradle project with sub-projects containing 3 separate Spring Boot Applications (account-service
, audit-serice
, and debit-serice
) .
To build all 3 applications at once execute:
./gradlew clean build
To build a single the application (.e.g. account-service
) execute:
./gradlew :account-service:clean :account-service:build
Each Spring Boot Application's local
profile propoerties are configured to allow the 3 applications to comunicate with each other on ports 8081
, 8082
, and
8083
on a host machine. Running all the applications, at once, can be achieved simply by executing:
SPRING_PROFILES_ACTIVE=local ./gradlew bootRun
However, running them separately is also an option.
To run the account-service
open a new terminal and execute:
SPRING_PROFILES_ACTIVE=local ./gradlew :account-service:bootRun
To run the audit-service
open a new terminal and execute:
SPRING_PROFILES_ACTIVE=local ./gradlew :audit-service:bootRun
To run the debit-service
open a new terminal and execute:
SPRING_PROFILES_ACTIVE=local ./gradlew :debit-service:bootRun
Each application has a test suite. Execute the following to run the tests for all 3 applications at once:
./gradlew test
To run the tests for a single application (.e.g. audit-service
) execute:
./gradlew :audit-service:test
This is a rough outline of what a contributor's workflow looks like:
- Make a fork of the repository within your GitHub account
- Create a topic branch in your fork from where you want to base your work
- Make commits of logical units
- Make sure your commit messages are with the proper format, quality and descriptiveness (see below)
- Push your changes to the topic branch in your fork
- Create a pull request containing that commit
We follow the GitHub workflow and you can find more details on the GitHub flow documentation.
Before submitting your pull request, we advise you to use the following:
- Check if your code changes will pass both code linting checks and unit tests.
- Ensure your commit messages are descriptive. We follow the conventions on How to Write a Git Commit Message. Be sure to include any related GitHub issue references in the commit message. See GFM syntax for referencing issues and commits.
- Check the commits and commits messages and ensure they are free from typos.
For specifics on what to include in your report, please follow the guidelines in the issue and pull request templates when available.
The best way to reach us with a question when contributing is to ask on:
- The original GitHub issue
- The developer mailing list
- Our Slack channel