
The Bank Management Application is a microservices-based system designed to handle various banking operations, such as customer management, account transactions (credit, debit, transfer), authentication, and notifications. The project implements CQRS (Command Query Responsibility Segregation) and Event Sourcing patterns using the Axon Framework for the Account Service, ensuring scalability and performance while handling large amounts of banking data.
The frontend of the application is developed using Angular, while the backend services are built with Spring Boot. All services are containerized with Docker and integrated into a CI/CD pipeline using Jenkins. The project also features code quality analysis using SonarQube and artifact management with Nexus.
The system follows a microservices architecture and utilizes various Spring Cloud technologies, including Spring Cloud Eureka Server for service discovery and Spring Cloud Reactive Gateway for routing.
The project uses a range of technologies to deliver a reliable, scalable, and efficient banking management solution:
To ensure proper initialization of services, they need to be started in the following order:
Note: The Axon Server should be started first as it handles event storage and routing for the Account Service. For more information about Axon Server, please refer to its official documentation.
This application leverages the Axon Framework for implementing CQRS and Event Sourcing in the Account Service. Axon Framework provides the tools necessary to build scalable and maintainable event-driven systems. It uses Axon Server for event storage and routing.
Clone the backend repository:
bash
git clone https://github.com/BrodyGaudel/bank
cd bank
Package the microservices with Maven:
bash
mvn clean install
Start each service individually using Maven:
Start the Axon Server (make sure it's running before starting any other services):
bash
java -jar axonserver.jar
Start the Discovery Service:
bash
cd discovery-service
mvn spring-boot:run
Start the Gateway Service:
bash
cd gateway-service
mvn spring-boot:run
Follow the same steps for the other services in the order mentioned above.
Clone the frontend repository:
bash
git clone https://github.com/BrodyGaudel/bank-ui
cd bank-ui
Install dependencies and run the application:
bash
npm install
npm start
Access the frontend via http://localhost:4200.
The project includes a Jenkinsfile that defines the CI/CD pipeline. Ensure Jenkins is configured with the necessary plugins to support Docker and Maven builds.
Inter-service communication is achieved using Spring Cloud OpenFeign, enabling synchronous calls between microservices.
bank/ ├── discovery-service/ ├── gateway-service/ ├── customer-service/ ├── account-service/ ├── authentication-service/ ├── notification-service/
Contributions are welcome! Please feel free to submit a pull request or open an issue for any bugs or feature requests.
This project is licensed under the MIT License.
For any inquiries, please contact: - Brody Gaudel - brodymounanga@gmail.com