# aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject architecture

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

- Interactive diagram: https://gitdiagram.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject
- Repository: https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject

## Overview

Aman Bank is a console-based account-management application. Users choose menu actions to register customers, open accounts, transact, and inspect account history, estimates, or statistics. Main is the interaction orchestrator; BankService manages in-memory customer/account collections and account lookup, creation, and transfers, while account models enforce transaction rules and create transaction records. The README documents these capabilities; the sampled source shows their main call paths. The account-type enum is represented from the tree and README, but its source was not sampled.

Main entry points: [`mnt/data/aman_bank_project/src/com/reva/bank/app/Main.java`](https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/app/Main.java) (Menu and workflows), [`mnt/data/aman_bank_project/src/com/reva/bank/model/Account.java`](https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/model/Account.java) (Account rules), [`mnt/data/aman_bank_project/src/com/reva/bank/service/BankService.java`](https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/service/BankService.java) (BankService), [`mnt/data/aman_bank_project/src/com/reva/bank/model/SavingsAccount.java`](https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/model/SavingsAccount.java) (Savings account)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_console["Console interaction"]
  node_main["Menu and workflows<br/>[Main.java]"]
  node_input["Input parsing<br/>[InputUtil.java]"]
end

subgraph group_banking["Banking service"]
  node_service["BankService<br/>[BankService.java]"]
  node_payable["Payable interface<br/>[Payable.java]"]
end

subgraph group_accounts["Account domain"]
  node_customer["Customer<br/>[Customer.java]"]
  node_account["Account rules<br/>[Account.java]"]
  node_savings["Savings account"]
  node_current["Current account"]
  node_accounttype["Account type<br/>[AccountType.java]"]
end

subgraph group_transactions["Transaction records"]
  node_transaction["Transaction entry<br/>[Transaction.java]"]
  node_transactionid["Transaction IDs<br/>[TransactionId.java]"]
  node_transactiontype["Transaction type"]
end

node_user(("Bank user"))

node_user -->|"selects actions"| node_main
node_main -->|"reads input"| node_input
node_main -->|"registers customers"| node_service
node_main -->|"creates accounts"| node_service
node_main -->|"looks up accounts"| node_service
node_main -->|"transfers funds"| node_service
node_main -->|"reads account list"| node_service
node_main -->|"deposits or withdraws"| node_account
node_main -->|"reads history and estimate"| node_account
node_main -->|"calculates example"| node_payable
node_service -->|"creates savings"| node_savings
node_service -->|"creates current"| node_current
node_service -->|"withdraws and deposits"| node_account
node_account -->|"requests ID"| node_transactionid
node_account -->|"records transaction"| node_transaction
node_account -->|"references owner"| node_customer
node_savings -->|"extends rules"| node_account
node_current -->|"extends rules"| node_account
node_savings -->|"returns type"| node_accounttype
node_current -->|"returns type"| node_accounttype
node_account -->|"records operation type"| node_transactiontype
node_service -->|"implements"| node_payable

click node_main "https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/app/Main.java"
click node_input "https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/util/InputUtil.java"
click node_service "https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/service/BankService.java"
click node_payable "https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/service/Payable.java"
click node_customer "https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/model/Customer.java"
click node_account "https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/model/Account.java"
click node_savings "https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/model/SavingsAccount.java"
click node_current "https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/model/CurrentAccount.java"
click node_accounttype "https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/model/AccountType.java"
click node_transaction "https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/model/Transaction.java"
click node_transactionid "https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/model/TransactionId.java"
click node_transactiontype "https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/model/TransactionType.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_main,node_input,node_user toneBlue
class node_service,node_payable toneAmber
class node_customer,node_account,node_savings,node_current,node_accounttype toneMint
class node_transaction,node_transactionid,node_transactiontype toneRose
```

## Components

### Console interaction

- [Menu and workflows](https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/app/Main.java): `mnt/data/aman_bank_project/src/com/reva/bank/app/Main.java`
- [Input parsing](https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/util/InputUtil.java): `mnt/data/aman_bank_project/src/com/reva/bank/util/InputUtil.java`

### Banking service

- [BankService](https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/service/BankService.java): `mnt/data/aman_bank_project/src/com/reva/bank/service/BankService.java`
- [Payable interface](https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/service/Payable.java): `mnt/data/aman_bank_project/src/com/reva/bank/service/Payable.java`

### Account domain

- [Customer](https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/model/Customer.java): `mnt/data/aman_bank_project/src/com/reva/bank/model/Customer.java`
- [Account rules](https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/model/Account.java): `mnt/data/aman_bank_project/src/com/reva/bank/model/Account.java`
- [Savings account](https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/model/SavingsAccount.java): `mnt/data/aman_bank_project/src/com/reva/bank/model/SavingsAccount.java`
- [Current account](https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/model/CurrentAccount.java): `mnt/data/aman_bank_project/src/com/reva/bank/model/CurrentAccount.java`
- [Account type](https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/model/AccountType.java): `mnt/data/aman_bank_project/src/com/reva/bank/model/AccountType.java`

### Transaction records

- [Transaction entry](https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/model/Transaction.java): `mnt/data/aman_bank_project/src/com/reva/bank/model/Transaction.java`
- [Transaction IDs](https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/model/TransactionId.java): `mnt/data/aman_bank_project/src/com/reva/bank/model/TransactionId.java`
- [Transaction type](https://github.com/aman-chaturvedi-bio/r24sa003-aman-chaturvedi-javaproject/blob/main/mnt/data/aman_bank_project/src/com/reva/bank/model/TransactionType.java): `mnt/data/aman_bank_project/src/com/reva/bank/model/TransactionType.java`

### Other components

- **Bank user**

## Connections

- Bank user → Menu and workflows: selects actions
- Menu and workflows → Input parsing: reads input
- Menu and workflows → BankService: registers customers
- Menu and workflows → BankService: creates accounts
- Menu and workflows → BankService: looks up accounts
- Menu and workflows → BankService: transfers funds
- Menu and workflows → BankService: reads account list
- Menu and workflows → Account rules: deposits or withdraws
- Menu and workflows → Account rules: reads history and estimate
- Menu and workflows → Payable interface: calculates example
- BankService → Savings account: creates savings
- BankService → Current account: creates current
- BankService → Account rules: withdraws and deposits
- Account rules → Transaction IDs: requests ID
- Account rules → Transaction entry: records transaction
- Account rules → Customer: references owner
- Savings account → Account rules: extends rules
- Current account → Account rules: extends rules
- Savings account → Account type: returns type
- Current account → Account type: returns type
- Account rules → Transaction type: records operation type
- BankService → Payable interface: implements
