Source Code Structure

CoreWallet backend

The CoreWallet backend consists of the following modules:

  • base-common - contains lightweight common classes and functionality, such as Money, Paging, PublicIdConverter, WalletException etc. It can be used in MicroServices without too many dependency introduction
  • common - contains common classes and functionality, such as call monitoring, logging, timestamp synchronization, etc.
  • accounting - contains structures and processes for accounts, which have an account balance, and transfers between accounts, which change the account balance. The accounting component defines the currency-configurations and provides the extension point for currency exchange rate providers.
    • account.api - contains the internal API for the accounting module
    • accounting.impl - contains the implementation for the accounting module
  • user - contains structures and processes for user data management, the KYC-process and verification processes for various user data, such as email address, phone-number, address, date of birth, etc.
    • user.api - contains the internal API for the user module
    • user.impl - contains the implementation for the user module
  • payment - contains structures and processes for external PSP integrations, defines the concept of a payment-gateway, and provides basic PSP routings for payment-sessions and payment-transactions based on context data.
    • payment.api - contains the internal API for the payment module
    • payment.impl - contains the implementation for the payment module
  • authentication - contains structures and processes for authentication, authorization and token validation. Different techniques are implemented e.g. User-Token and OAuth2
    • authentication.api contains the internal API for the authentication module
    • authentication.impl contains the implementation for the authentication module
  • wallet - contains structures and processes for a wallet with wallet-accounts. Aggregates the other components into base wallet functionality, and provides several transaction types, such as invoices, wallet-payments, voucher-based P2P transactions, etc.
    • wallet.api - contains the internal API for the wallet module
    • wallet.impl - contains the implementation for the wallet module
    • wallet.webapp.common - contains common classes and functionality for the internal/external webapp deployments
    • wallet.webapp.external - contains the public API controllers which communicate with the wallet.webapp.internal
    • wallet.webapp.internal - contains the wallet/payment/user/accounting implementations and exposes the internal API to allow communication from wallet.webapp.external
    • wallet.webapp.combined - contains single-deployment integration tests using Spring-Boot for features such as generic 4-eyes-principle
  • installations - contains the SQL scripts and release-scripts

The following diagrams shows the modules in relation to each other.

The following diagram shows the CoreWallet modules (in blue) in combination with example Product modules (in yellow).