Simple Banking Backend
A Simple Banking backend application implemented in Java 21 with Spring Boot 3.14.
This backend application provides simple banking operations like account creation, money transfer, etc.
The backend application serves from Simple Banking Backend End-Point.
Table of Contents
- How to Contribute
- Requirements
- Coding Standards
- Version Control Standards
- Running the Application Locally
- Running the Application in Docker
- Run Actuator
- Run Swagger UI
- Run RabbitMQ
- Extra Notes
- Copyright
How to Contribute
For the contributor covenant to this project, please check the Code of Conduct file.
Credits
Please check the Contributors List to see who makes this open-source alive.
Requirements
For building and running the application belows are required;
Coding Standards
Below coding standards should be followed within the project;
- Javadoc should be written for each class & method. @author, @since annotations should be added while adding or updating the javadoc
- General code structure should be followed while adding or refactoring classes.
Version Control Standards
Below version control standards should be followed within the project;
- The default branch is staging branch.
- Feature enhancements or defect fixes should not be committed to the default branch, they should be coded in feature or bug branches.
- Issues should be created for each feature or fix in the Simple Banking Backend GitHub Repository Project.
- Pull request (PR) should be created for each feature/bug branch to staging branch.
- While creating a PR "[Feature]: ", "[Bug]: " or "[Doc]: " prefix should be used to identify the PR type.
- PRs should be linked with a valid issue in the Simple Banking Backend GitHub Repository Project.
- If validations are passed in the staging branch, then a merge branch request is created with "merge branch" label & a linked PR to the main branch.
Running the Application Locally
Application can be run with SimpleBankingBackendApplication class.
Alternatively you can use the Spring Boot Gradle plugin like so:
gradle clean build
gradle bootRun
Running the Application in Docker
Application can be run in Docker. Dockerfile in the project root folder is the configuration file for Docker build.
docker build -t simple-banking-backend:1.0.0 --build-arg APP_JAR=simple-banking-backend-1.0.0.jar .
docker run -p 8081:8081 --name SimpleBankingBackend simple-banking-backend:1.0.0
Note that you can specify the name of the APP_JAR argument based on the jar file that is generated by gradle. If the argument is not provided, it will pick the default name specified in the Dockerfile.
Run Actuator
Spring Boot Actuator can be reached from local url for Actuator.
Only health and caches endpoints are enabled by default. Configuration can be updated within the "actuator" section of the related application.properties file.
Run Swagger UI
Swagger UI can be reached from local url for Swagger UI and production url for Swagger UI.
Run RabbitMQ
RabbitMQ is used for messaging between services. It can be run with the following command after getting the image from Docker Hub;
docker run --name simple-banking-rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.12-management
RabbitMQ management console can be reached from local URL for RabbitMQ management console. Default username and password are "guest".
You need to create a new queue from "Queues and Streams" from RabbitMQ management console.
Extra Notes
- The module can be booted with Spring Cloud Config Server or directly within the application. In order to boot the project within itself, enable the properties in application.properties file and disable bootstrap.properties file.
Copyright
GNU General Public License v3.0 Permissions of this strong copyleft license are conditioned on making available complete source code of licensed works and modifications, which include larger works using a licensed work, under the same license. Copyright and license notices must be preserved. Contributors provide an express grant of patent rights. Please check the LICENSE file for more details.