# izenyogrief/multicurrency-bank-transaction-processing-engine architecture

> Architecture diagram of the GitHub repository izenyogrief/multicurrency-bank-transaction-processing-engine, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/izenyogrief/multicurrency-bank-transaction-processing-engine
- Repository: https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine

## Overview

This repository is a Spring banking backend, with API surfaces for authentication, account and customer administration, transfers, card payments, loans, overdrafts, and transaction oversight. The tree suggests a user-to-result flow from a REST endpoint through a domain service to a banking operation; sampled controller wiring is insufficient to assert those call edges. Sampled implementation does show session creation and validation, including persistence, token creation, and caching. Major capabilities are retained, but unsampled subsystem connections are intentionally not inferred.

Main entry points: [`src/main/java/com/project/banksystem/application/backend/accesssession/internal/InternalAccessSessionCreateService.java`](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/accesssession/internal/InternalAccessSessionCreateService.java) (Session Creation), [`src/main/java/com/project/banksystem/application/backend/accesssession/internal/InternalAccessSessionService.java`](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/accesssession/internal/InternalAccessSessionService.java) (Session Validation), [`src/main/java/com/project/banksystem/application/backend/accesssession/AccessSessionManager.java`](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/accesssession/AccessSessionManager.java) (Session Manager), [`src/main/java/com/project/banksystem/api/restcontroller/refreshtoken/RefreshTokenController.java`](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/api/restcontroller/refreshtoken/RefreshTokenController.java) (Token Refresh API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_auth_api["Authentication API"]
  node_transfer_api["Transfer APIs"]
  node_card_api["Card Transaction APIs"]
  node_loan_api["Loan APIs"]
end

subgraph group_identity["Identity Sessions"]
  node_auth_service["Login Services"]
  node_session_create["Session Creation"]
  node_session_check["Session Validation"]
  node_session_store["Session Manager"]
  node_refresh_api["Token Refresh API"]
  node_refresh_service["Session Refresh"]
  node_redis_cache[("Redis Session Cache")]
  node_token_services["JWT Token Services"]
  node_refresh_create["Refresh Token Creation"]
end

subgraph group_payments["Payments Ledger"]
  node_payment_sessions["Payment Session APIs"]
  node_payment_session_create["Payment Session Creation"]
  node_payment_session_store["Payment Session Manager"]
  node_account_transfer["Transfer Service"]
  node_fx_transfer["Foreign Exchange"]
  node_card_transaction["Card Transaction Service"]
end

subgraph group_lending["Lending"]
  node_loan_request["Loan Request Service"]
  node_loan_payment["Loan Payment API"]
  node_loan_session_create["Loan Session Creation"]
  node_overdraft_session_create["Overdraft Session Creation"]
end

subgraph group_operations["Bank Operations"]
  node_transaction_control["Transaction Management"]
  node_transaction_authorize["Transaction Authorization"]
  node_admin_transaction["Admin Transactions"]
end

node_user(("Customer or Admin"))
node_session_user(("Session User"))

node_session_create -->|"saves session"| node_session_store
node_session_create -->|"creates refresh token"| node_refresh_create
node_session_create -->|"caches after commit"| node_redis_cache
node_session_create -->|"creates JWTs"| node_token_services
node_session_check -->|"checks cache"| node_redis_cache
node_session_check -->|"finds session"| node_session_store
node_session_check -->|"refreshes cache"| node_redis_cache
node_refresh_api -->|"refreshes session"| node_refresh_service
node_payment_session_create -->|"saves session"| node_payment_session_store
node_loan_session_create -.-> node_loan_request
node_overdraft_session_create -.-> node_payment_sessions

click node_auth_api "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/api/restcontroller/auth/AuthenticationController.java"
click node_transfer_api "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/api/restcontroller/banktransaction/accounttransaction/publicuse/PublicAccountTransactionController.java"
click node_card_api "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/api/restcontroller/banktransaction/cardtransaction/publicuse/PublicCardTransactionController.java"
click node_loan_api "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/api/restcontroller/loan/request/PublicLoanRequestController.java"
click node_auth_service "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/auth/impl/LoginServiceImpl.java"
click node_session_create "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/accesssession/internal/InternalAccessSessionCreateService.java"
click node_session_check "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/accesssession/internal/InternalAccessSessionService.java"
click node_session_store "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/accesssession/AccessSessionManager.java"
click node_refresh_api "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/api/restcontroller/refreshtoken/RefreshTokenController.java"
click node_refresh_service "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/refreshtoken/service/AccessSessionRefreshService.java"
click node_payment_sessions "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/api/restcontroller/banktransaction/moneytransactionsession/PublicMoneyTransactionSessionRequestController.java"
click node_payment_session_create "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/moneytransactionsession/payment/internal/InternalPaymentSessionCreateService.java"
click node_payment_session_store "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/moneytransactionsession/payment/PaymentSessionManager.java"
click node_account_transfer "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/banktransaction/impl/TransferServiceImpl.java"
click node_fx_transfer "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/banktransaction/impl/ForeignExchangeTransferServiceImpl.java"
click node_card_transaction "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/banktransaction/cardtransaction/impl/CardTransactionServiceImpl.java"
click node_transaction_control "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/api/restcontroller/banktransaction/transaction/TransactionManagingController.java"
click node_transaction_authorize "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/banktransaction/transaction/service/TransactionAuthorizeService.java"
click node_loan_request "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/api/restcontroller/loan/request/PublicLoanRequestController.java"
click node_loan_payment "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/api/restcontroller/loan/payment/PublicLoanPaymentController.java"
click node_loan_session_create "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/moneytransactionsession/loan/internal/InternalLoanPaymentSessionCreateService.java"
click node_overdraft_session_create "https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/moneytransactionsession/overdraft/internal/InternalOverdraftPaymentSessionCreateService.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_auth_api,node_transfer_api,node_card_api,node_loan_api,node_session_user toneBlue
class node_auth_service,node_session_create,node_session_check,node_session_store,node_refresh_api,node_refresh_service,node_redis_cache,node_token_services,node_refresh_create toneAmber
class node_payment_sessions,node_payment_session_create,node_payment_session_store,node_account_transfer,node_fx_transfer,node_card_transaction toneMint
class node_loan_request,node_loan_payment,node_loan_session_create,node_overdraft_session_create toneRose
class node_transaction_control,node_transaction_authorize,node_admin_transaction,node_user toneIndigo
```

## Components

### REST API

- [Authentication API](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/api/restcontroller/auth/AuthenticationController.java): `src/main/java/com/project/banksystem/api/restcontroller/auth/AuthenticationController.java`
- [Transfer APIs](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/api/restcontroller/banktransaction/accounttransaction/publicuse/PublicAccountTransactionController.java): `src/main/java/com/project/banksystem/api/restcontroller/banktransaction/accounttransaction/publicuse/PublicAccountTransactionController.java`
- [Card Transaction APIs](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/api/restcontroller/banktransaction/cardtransaction/publicuse/PublicCardTransactionController.java): `src/main/java/com/project/banksystem/api/restcontroller/banktransaction/cardtransaction/publicuse/PublicCardTransactionController.java`
- [Loan APIs](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/api/restcontroller/loan/request/PublicLoanRequestController.java): `src/main/java/com/project/banksystem/api/restcontroller/loan/request/PublicLoanRequestController.java`

### Identity Sessions

- [Login Services](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/auth/impl/LoginServiceImpl.java): `src/main/java/com/project/banksystem/application/backend/auth/impl/LoginServiceImpl.java`
- [Session Creation](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/accesssession/internal/InternalAccessSessionCreateService.java): `src/main/java/com/project/banksystem/application/backend/accesssession/internal/InternalAccessSessionCreateService.java`
- [Session Validation](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/accesssession/internal/InternalAccessSessionService.java): `src/main/java/com/project/banksystem/application/backend/accesssession/internal/InternalAccessSessionService.java`
- [Session Manager](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/accesssession/AccessSessionManager.java): `src/main/java/com/project/banksystem/application/backend/accesssession/AccessSessionManager.java`
- [Token Refresh API](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/api/restcontroller/refreshtoken/RefreshTokenController.java): `src/main/java/com/project/banksystem/api/restcontroller/refreshtoken/RefreshTokenController.java`
- [Session Refresh](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/refreshtoken/service/AccessSessionRefreshService.java): `src/main/java/com/project/banksystem/application/backend/refreshtoken/service/AccessSessionRefreshService.java`
- **Redis Session Cache**
- **JWT Token Services**
- **Refresh Token Creation**

### Payments Ledger

- [Payment Session APIs](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/api/restcontroller/banktransaction/moneytransactionsession/PublicMoneyTransactionSessionRequestController.java): `src/main/java/com/project/banksystem/api/restcontroller/banktransaction/moneytransactionsession/PublicMoneyTransactionSessionRequestController.java`
- [Payment Session Creation](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/moneytransactionsession/payment/internal/InternalPaymentSessionCreateService.java): `src/main/java/com/project/banksystem/application/backend/moneytransactionsession/payment/internal/InternalPaymentSessionCreateService.java`
- [Payment Session Manager](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/moneytransactionsession/payment/PaymentSessionManager.java): `src/main/java/com/project/banksystem/application/backend/moneytransactionsession/payment/PaymentSessionManager.java`
- [Transfer Service](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/banktransaction/impl/TransferServiceImpl.java): `src/main/java/com/project/banksystem/application/backend/banktransaction/impl/TransferServiceImpl.java`
- [Foreign Exchange](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/banktransaction/impl/ForeignExchangeTransferServiceImpl.java): `src/main/java/com/project/banksystem/application/backend/banktransaction/impl/ForeignExchangeTransferServiceImpl.java`
- [Card Transaction Service](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/banktransaction/cardtransaction/impl/CardTransactionServiceImpl.java): `src/main/java/com/project/banksystem/application/backend/banktransaction/cardtransaction/impl/CardTransactionServiceImpl.java`

### Lending

- [Loan Request Service](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/api/restcontroller/loan/request/PublicLoanRequestController.java): `src/main/java/com/project/banksystem/api/restcontroller/loan/request/PublicLoanRequestController.java`
- [Loan Payment API](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/api/restcontroller/loan/payment/PublicLoanPaymentController.java): `src/main/java/com/project/banksystem/api/restcontroller/loan/payment/PublicLoanPaymentController.java`
- [Loan Session Creation](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/moneytransactionsession/loan/internal/InternalLoanPaymentSessionCreateService.java): `src/main/java/com/project/banksystem/application/backend/moneytransactionsession/loan/internal/InternalLoanPaymentSessionCreateService.java`
- [Overdraft Session Creation](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/moneytransactionsession/overdraft/internal/InternalOverdraftPaymentSessionCreateService.java): `src/main/java/com/project/banksystem/application/backend/moneytransactionsession/overdraft/internal/InternalOverdraftPaymentSessionCreateService.java`

### Bank Operations

- [Transaction Management](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/api/restcontroller/banktransaction/transaction/TransactionManagingController.java): `src/main/java/com/project/banksystem/api/restcontroller/banktransaction/transaction/TransactionManagingController.java`
- [Transaction Authorization](https://github.com/izenyogrief/multicurrency-bank-transaction-processing-engine/blob/main/src/main/java/com/project/banksystem/application/backend/banktransaction/transaction/service/TransactionAuthorizeService.java): `src/main/java/com/project/banksystem/application/backend/banktransaction/transaction/service/TransactionAuthorizeService.java`
- **Admin Transactions**

### Other components

- **Customer or Admin**
- **Session User**

## Connections

- Session Creation → Session Manager: saves session
- Session Creation → Refresh Token Creation: creates refresh token
- Session Creation → Redis Session Cache: caches after commit
- Session Creation → JWT Token Services: creates JWTs
- Session Validation → Redis Session Cache: checks cache
- Session Validation → Session Manager: finds session
- Session Validation → Redis Session Cache: refreshes cache
- Token Refresh API → Session Refresh: refreshes session
- Payment Session Creation → Payment Session Manager: saves session
- Loan Session Creation → Loan Request Service
- Overdraft Session Creation → Payment Session APIs
