# sumeet4165/banking architecture

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

- Interactive diagram: https://gitdiagram.com/sumeet4165/banking
- Repository: https://github.com/sumeet4165/banking

## Overview

This repository is a microservices banking application. The visible workflow is account creation and account lookup, followed by initiating a transfer: the transaction service requests a sender debit, records a processing transaction, and publishes an initiation event. Account and transaction persistence are distinct internal layers. The source index also lists gateway, fraud, payment, and notification services, but their business behavior and connections are not shown in the excerpts; the README provides no additional workflow evidence.

Main entry points: [`transaction-service/src/main/java/com/banking/transactionservice/service/TransactionService.java`](https://github.com/sumeet4165/banking/blob/main/transaction-service/src/main/java/com/banking/transactionservice/service/TransactionService.java) (Transfer operations), [`account-service/src/main/java/com/banking/accountservice/service/AccountService.java`](https://github.com/sumeet4165/banking/blob/main/account-service/src/main/java/com/banking/accountservice/service/AccountService.java) (Account operations), [`account-service/src/main/java/com/banking/accountservice/controller/AccountController.java`](https://github.com/sumeet4165/banking/blob/main/account-service/src/main/java/com/banking/accountservice/controller/AccountController.java) (Account API), [`transaction-service/src/main/java/com/banking/transactionservice/controller/TransactionController.java`](https://github.com/sumeet4165/banking/blob/main/transaction-service/src/main/java/com/banking/transactionservice/controller/TransactionController.java) (Transaction API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_accounts["Account service"]
  node_account_api["Account API"]
  node_account_logic["Account operations"]
  node_account_store[("Account repository")]
  node_account_events["Account event consumer"]
  node_account_record["Account record<br/>[Account.java]"]
end

subgraph group_transactions["Transaction service"]
  node_transaction_api["Transaction API"]
  node_transaction_logic["Transfer operations"]
  node_account_client["Account service client"]
  node_transaction_store[("Transaction repository")]
  node_transaction_record["Transaction record<br/>[Transaction.java]"]
  node_event_record["Initiation event"]
end

node_user(("Banking client"))
node_kafka["Kafka"]

node_user -->|"requests accounts"| node_account_api
node_user -->|"requests transfers"| node_transaction_api
node_account_api -->|"calls"| node_account_logic
node_account_logic -->|"reads and writes"| node_account_store
node_account_events -->|"calls"| node_account_logic
node_account_logic -->|"maps account"| node_account_record
node_transaction_api -->|"calls"| node_transaction_logic
node_transaction_logic -->|"requests debit"| node_account_client
node_account_client -.->|"calls account service"| node_account_api
node_transaction_logic -->|"saves and reads"| node_transaction_store
node_transaction_logic -->|"creates and maps"| node_transaction_record
node_transaction_logic -->|"creates"| node_event_record
node_transaction_logic -->|"publishes event"| node_kafka

click node_account_api "https://github.com/sumeet4165/banking/blob/main/account-service/src/main/java/com/banking/accountservice/controller/AccountController.java"
click node_account_logic "https://github.com/sumeet4165/banking/blob/main/account-service/src/main/java/com/banking/accountservice/service/AccountService.java"
click node_account_store "https://github.com/sumeet4165/banking/blob/main/account-service/src/main/java/com/banking/accountservice/repository/AccountRepository.java"
click node_account_events "https://github.com/sumeet4165/banking/blob/main/account-service/src/main/java/com/banking/accountservice/service/AccountEventConsumer.java"
click node_account_record "https://github.com/sumeet4165/banking/blob/main/account-service/src/main/java/com/banking/accountservice/entity/Account.java"
click node_transaction_api "https://github.com/sumeet4165/banking/blob/main/transaction-service/src/main/java/com/banking/transactionservice/controller/TransactionController.java"
click node_transaction_logic "https://github.com/sumeet4165/banking/blob/main/transaction-service/src/main/java/com/banking/transactionservice/service/TransactionService.java"
click node_account_client "https://github.com/sumeet4165/banking/blob/main/transaction-service/src/main/java/com/banking/transactionservice/client/AccountServiceClient.java"
click node_transaction_store "https://github.com/sumeet4165/banking/blob/main/transaction-service/src/main/java/com/banking/transactionservice/repository/TransactionRepository.java"
click node_transaction_record "https://github.com/sumeet4165/banking/blob/main/transaction-service/src/main/java/com/banking/transactionservice/entity/Transaction.java"
click node_event_record "https://github.com/sumeet4165/banking/blob/main/transaction-service/src/main/java/com/banking/transactionservice/event/TransactionInitiatedEvent.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_account_api,node_account_logic,node_account_store,node_account_events,node_account_record,node_user toneBlue
class node_transaction_api,node_transaction_logic,node_account_client,node_transaction_store,node_transaction_record,node_event_record toneAmber
class node_kafka toneIndigo
```

## Components

### Account service

- [Account API](https://github.com/sumeet4165/banking/blob/main/account-service/src/main/java/com/banking/accountservice/controller/AccountController.java): `account-service/src/main/java/com/banking/accountservice/controller/AccountController.java`
- [Account operations](https://github.com/sumeet4165/banking/blob/main/account-service/src/main/java/com/banking/accountservice/service/AccountService.java): `account-service/src/main/java/com/banking/accountservice/service/AccountService.java`
- [Account repository](https://github.com/sumeet4165/banking/blob/main/account-service/src/main/java/com/banking/accountservice/repository/AccountRepository.java): `account-service/src/main/java/com/banking/accountservice/repository/AccountRepository.java`
- [Account event consumer](https://github.com/sumeet4165/banking/blob/main/account-service/src/main/java/com/banking/accountservice/service/AccountEventConsumer.java): `account-service/src/main/java/com/banking/accountservice/service/AccountEventConsumer.java`
- [Account record](https://github.com/sumeet4165/banking/blob/main/account-service/src/main/java/com/banking/accountservice/entity/Account.java): `account-service/src/main/java/com/banking/accountservice/entity/Account.java`

### Transaction service

- [Transaction API](https://github.com/sumeet4165/banking/blob/main/transaction-service/src/main/java/com/banking/transactionservice/controller/TransactionController.java): `transaction-service/src/main/java/com/banking/transactionservice/controller/TransactionController.java`
- [Transfer operations](https://github.com/sumeet4165/banking/blob/main/transaction-service/src/main/java/com/banking/transactionservice/service/TransactionService.java): `transaction-service/src/main/java/com/banking/transactionservice/service/TransactionService.java`
- [Account service client](https://github.com/sumeet4165/banking/blob/main/transaction-service/src/main/java/com/banking/transactionservice/client/AccountServiceClient.java): `transaction-service/src/main/java/com/banking/transactionservice/client/AccountServiceClient.java`
- [Transaction repository](https://github.com/sumeet4165/banking/blob/main/transaction-service/src/main/java/com/banking/transactionservice/repository/TransactionRepository.java): `transaction-service/src/main/java/com/banking/transactionservice/repository/TransactionRepository.java`
- [Transaction record](https://github.com/sumeet4165/banking/blob/main/transaction-service/src/main/java/com/banking/transactionservice/entity/Transaction.java): `transaction-service/src/main/java/com/banking/transactionservice/entity/Transaction.java`
- [Initiation event](https://github.com/sumeet4165/banking/blob/main/transaction-service/src/main/java/com/banking/transactionservice/event/TransactionInitiatedEvent.java): `transaction-service/src/main/java/com/banking/transactionservice/event/TransactionInitiatedEvent.java`

### Other components

- **Banking client**
- **Kafka**

## Connections

- Banking client → Account API: requests accounts (evidence: `account-service/src/main/java/com/banking/accountservice/controller/AccountController.java`)
- Banking client → Transaction API: requests transfers (evidence: `transaction-service/src/main/java/com/banking/transactionservice/controller/TransactionController.java`)
- Account API → Account operations: calls (evidence: `account-service/src/main/java/com/banking/accountservice/controller/AccountController.java`)
- Account operations → Account repository: reads and writes (evidence: `account-service/src/main/java/com/banking/accountservice/service/AccountService.java`)
- Account event consumer → Account operations: calls (evidence: `account-service/src/main/java/com/banking/accountservice/service/AccountEventConsumer.java`)
- Account operations → Account record: maps account (evidence: `account-service/src/main/java/com/banking/accountservice/service/AccountService.java`)
- Transaction API → Transfer operations: calls (evidence: `transaction-service/src/main/java/com/banking/transactionservice/controller/TransactionController.java`)
- Transfer operations → Account service client: requests debit (evidence: `transaction-service/src/main/java/com/banking/transactionservice/service/TransactionService.java`)
- Account service client → Account API: calls account service
- Transfer operations → Transaction repository: saves and reads (evidence: `transaction-service/src/main/java/com/banking/transactionservice/service/TransactionService.java`)
- Transfer operations → Transaction record: creates and maps (evidence: `transaction-service/src/main/java/com/banking/transactionservice/service/TransactionService.java`)
- Transfer operations → Initiation event: creates (evidence: `transaction-service/src/main/java/com/banking/transactionservice/service/TransactionService.java`)
- Transfer operations → Kafka: publishes event (evidence: `transaction-service/src/main/java/com/banking/transactionservice/service/TransactionService.java`)
