Source Code Structure
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).