Giter Site home page Giter Site logo

brodygaudel / bank-cqrs-event-sourcing Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 828 KB

Welcome to the Banking and Operations Management Application, a comprehensive solution for handling customer management and bank account operations such as credit, debit, and transfers. This application is developed using the CQRS and Event Sourcing architecture to ensure a robust and scalable system.

Home Page: https://brodygaudel.github.io/java-documentation-app-cqrs-event-sourcing/

Dockerfile 0.47% Java 99.53%
axon-framework axon-server axonframework cqrs cqrs-architecture cqrs-es cqrs-framework cqrs-pattern event-driven event-driven-architecture

bank-cqrs-event-sourcing's Introduction

Banking and Operations Management Application

Overview

Welcome to the Banking and Operations Management Application, a comprehensive solution for handling customer management and bank account operations such as credit, debit, and transfers. This application is developed using the CQRS (Command Query Responsibility Segregation) and Event Sourcing architecture to ensure a robust and scalable system.

Features

Customer Management Module

  • Create Customer:

    • Allows the creation of new customer profiles with essential information.
  • View Customer Details:

    • Provides the ability to retrieve and view customer details.
  • Update Customer Information:

    • Allows updating customer information such as name, contact details, etc.
  • Delete Customer:

    • Enables the removal of customer profiles when necessary.

Bank Account and Operations Management Module

  • Create Bank Account:

    • Facilitates the creation of new bank accounts for customers.
  • Credit:

    • Allows the addition of funds to a bank account.
  • Debit:

    • Enables the withdrawal of funds from a bank account.
  • Transfer:

    • Allows transferring funds between different bank accounts.
  • View Account Balance:

    • Provides the ability to check the balance of a bank account.

Technology Stack

  • Java 17:

    • The core programming language used for the application.
  • Spring Boot 3.2.1:

    • Provides a robust and convention-over-configuration framework for building Java-based enterprise applications.
  • Axon Framework 4.9.1:

    • Utilized for implementing the CQRS and Event Sourcing architecture, ensuring separation of concerns and scalability.
  • Axon Server:

    • Serves as the communication and coordination hub for the Axon Framework, ensuring reliable event processing.
  • MySQL:

    • The chosen relational database for storing customer and bank account information.
  • CICD:

    • Jenkins : Jenkins is an open-source automation server for continuous integration and continuous delivery, streamlining the software development process.
    • Maven : It is a build automation and project management tool that simplifies the build process, manages dependencies, and facilitates project documentation in Java-based applications.
    • SonarQube : It is a platform for continuous inspection of code quality, providing static code analysis to identify and fix code vulnerabilities and maintain code health.
    • Nexus : It is a repository manager that simplifies the management of binary artifacts, supporting build and deployment automation in software development.
    • Docker : It is a platform for developing, shipping, and running applications in containers, enabling consistent and efficient deployment across diverse environments.
    • Kubernetes : It is an open-source container orchestration platform that automates the deployment, scaling, and management of containerized applications, ensuring efficient and resilient container orchestration.

Getting Started

  1. Clone the Repository:

    git clone https://github.com/BrodyGaudel/bank-cqrs-event-sourcing.git
    cd bank-cqrs-event-sourcing
  2. Build, Test and Run:

    mvn clean install
    mvn test
    mvn spring-boot:run
  3. Access the Application:

    • The application will be accessible at http://localhost:8787/bank/swagger-ui.html.

Configuration

  • Database Configuration:

    • Configure your MySQL database connection details in application.properties.
  • Axon Server Configuration:

    • Ensure that Axon Server is running and configure the connection details in application.properties.
    • You can download Axon Server here: https://developer.axoniq.io/download.
    • You will find documentation on Axon Framework and Axon Server here: https://docs.axoniq.io/reference-guide/axon-framework/introduction.

Illustration

  • Jenkins:

    • CICD Jenkins
    • CICD Jenkins
  • Nexus Repository:

    • CICD Nexus
    • CICD Nexus
  • Docker

    • CICD Docker
    • CICD Docker
  • Axon Server

    • CICD Docker
    • CICD Docker
  • Swagger UI:

    • Swagger UI
    • Event Store

Documentation

For detailed information on API endpoints and usage, refer to the https://brodygaudel.github.io/java-documentation-app-cqrs-event-sourcing/.

Contributing

Contributions are welcome! Feel free to open issues or pull requests for any improvements or new features.

License

This project is licensed under the MIT License.

Author

Brody Gaudel MOUNANGA BOUKA

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.