# kelvin825250028-cmyk/uts-obp architecture

> Architecture diagram of the GitHub repository kelvin825250028-cmyk/uts-obp, 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/kelvin825250028-cmyk/uts-obp
- Repository: https://github.com/kelvin825250028-cmyk/uts-obp

## Overview

This is a small Java command-line bank-transfer application. Its main workflow collects sender, recipient, and transfer details; processes a transfer with the sender account’s applicable fee; and, on success, saves and displays a receipt. The source also defines customer registration and sign-in methods, but they are not wired into the transfer workflow. The graph reflects the sampled source; the README is empty, so no further capabilities or integrations are documented.

Main entry points: [`src/com/transaction/App.java`](https://github.com/kelvin825250028-cmyk/uts-obp/blob/main/src/com/transaction/App.java) (CLI workflow), [`src/com/transaction/Transaksi.java`](https://github.com/kelvin825250028-cmyk/uts-obp/blob/main/src/com/transaction/Transaksi.java) (Transfer transaction), [`src/com/transaction/RekeningBank.java`](https://github.com/kelvin825250028-cmyk/uts-obp/blob/main/src/com/transaction/RekeningBank.java) (Bank account), [`src/com/transaction/Rekening.java`](https://github.com/kelvin825250028-cmyk/uts-obp/blob/main/src/com/transaction/Rekening.java) (Account base)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["Transfer CLI"]
  node_app["CLI workflow<br/>[App.java]"]
  node_receipt["Receipt file"]
end

subgraph group_domain["Transfer Domain"]
  node_trx["Transfer transaction<br/>[Transaksi.java]"]
  node_account["Account base<br/>[Rekening.java]"]
  node_bank["Bank account<br/>[RekeningBank.java]"]
  node_va["Virtual account"]
end

subgraph group_identity["Customer Identity"]
  node_customer["Customer<br/>[Customer.java]"]
  node_person["Person<br/>[Person.java]"]
  node_login["Login interface<br/>[Login.java]"]
end

node_user(("User"))

node_user -->|"enters details"| node_app
node_app -->|"creates sender"| node_bank
node_app -->|"creates recipient"| node_bank
node_app -->|"creates recipient"| node_va
node_app -->|"creates transaction"| node_trx
node_app -->|"processes transfer"| node_trx
node_trx -->|"checks fee and updates balances"| node_account
node_app -->|"saves receipt"| node_trx
node_trx -->|"writes receipt"| node_receipt
node_app -->|"reads receipt"| node_trx
node_trx -->|"reads receipt"| node_receipt
node_customer -->|"extends"| node_person
node_customer -->|"implements"| node_login
node_bank -->|"extends"| node_account
node_va -->|"extends"| node_account

click node_app "https://github.com/kelvin825250028-cmyk/uts-obp/blob/main/src/com/transaction/App.java"
click node_trx "https://github.com/kelvin825250028-cmyk/uts-obp/blob/main/src/com/transaction/Transaksi.java"
click node_account "https://github.com/kelvin825250028-cmyk/uts-obp/blob/main/src/com/transaction/Rekening.java"
click node_bank "https://github.com/kelvin825250028-cmyk/uts-obp/blob/main/src/com/transaction/RekeningBank.java"
click node_va "https://github.com/kelvin825250028-cmyk/uts-obp/blob/main/src/com/transaction/VirtualAccount.java"
click node_customer "https://github.com/kelvin825250028-cmyk/uts-obp/blob/main/src/com/transaction/Customer.java"
click node_person "https://github.com/kelvin825250028-cmyk/uts-obp/blob/main/src/com/transaction/Person.java"
click node_login "https://github.com/kelvin825250028-cmyk/uts-obp/blob/main/src/com/transaction/Login.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_app,node_receipt,node_user toneBlue
class node_trx,node_account,node_bank,node_va toneAmber
class node_customer,node_person,node_login toneMint
```

## Components

### Transfer CLI

- [CLI workflow](https://github.com/kelvin825250028-cmyk/uts-obp/blob/main/src/com/transaction/App.java): `src/com/transaction/App.java`
- **Receipt file**

### Transfer Domain

- [Transfer transaction](https://github.com/kelvin825250028-cmyk/uts-obp/blob/main/src/com/transaction/Transaksi.java): `src/com/transaction/Transaksi.java`
- [Account base](https://github.com/kelvin825250028-cmyk/uts-obp/blob/main/src/com/transaction/Rekening.java): `src/com/transaction/Rekening.java`
- [Bank account](https://github.com/kelvin825250028-cmyk/uts-obp/blob/main/src/com/transaction/RekeningBank.java): `src/com/transaction/RekeningBank.java`
- [Virtual account](https://github.com/kelvin825250028-cmyk/uts-obp/blob/main/src/com/transaction/VirtualAccount.java): `src/com/transaction/VirtualAccount.java`

### Customer Identity

- [Customer](https://github.com/kelvin825250028-cmyk/uts-obp/blob/main/src/com/transaction/Customer.java): `src/com/transaction/Customer.java`
- [Person](https://github.com/kelvin825250028-cmyk/uts-obp/blob/main/src/com/transaction/Person.java): `src/com/transaction/Person.java`
- [Login interface](https://github.com/kelvin825250028-cmyk/uts-obp/blob/main/src/com/transaction/Login.java): `src/com/transaction/Login.java`

### Other components

- **User**

## Connections

- User → CLI workflow: enters details
- CLI workflow → Bank account: creates sender
- CLI workflow → Bank account: creates recipient
- CLI workflow → Virtual account: creates recipient
- CLI workflow → Transfer transaction: creates transaction
- CLI workflow → Transfer transaction: processes transfer
- Transfer transaction → Account base: checks fee and updates balances
- CLI workflow → Transfer transaction: saves receipt
- Transfer transaction → Receipt file: writes receipt
- CLI workflow → Transfer transaction: reads receipt
- Transfer transaction → Receipt file: reads receipt
- Customer → Person: extends
- Customer → Login interface: implements
- Bank account → Account base: extends
- Virtual account → Account base: extends
