# lowski7/projects architecture

> Architecture diagram of the GitHub repository lowski7/projects, 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/lowski7/projects
- Repository: https://github.com/lowski7/projects

## Overview

This repository contains two console products: a banking system and a single-file Wordle game. The banking workflow accepts a selected action and account details, creates a transaction ticket (or check), delegates validation and account lookup to Bank, applies the operation to the appropriate account type, and prints a receipt. The README documents the random-access account storage and transaction flow; the excerpts show representative callers and account behavior, but not every Bank operation or account-file format.

Main entry points: [`BankAccounts8/src/main/java/Bank.java`](https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/Bank.java) (Bank operations), [`BankAccounts8/src/main/java/BankAccounts8.java`](https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/BankAccounts8.java) (Menu and handlers), [`wordleApp/src/main/java/WordleApp.java`](https://github.com/lowski7/projects/blob/main/wordleApp/src/main/java/WordleApp.java) (Wordle game loop), [`BankAccounts8/src/main/java/Savings.java`](https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/Savings.java) (Savings account)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_bank_cli["Bank Console"]
  node_bank_app["Menu and handlers<br/>[BankAccounts8.java]"]
  node_receipt_output["Printed receipt<br/>[BankAccounts8.java]"]
end

subgraph group_bank_domain["Banking Domain"]
  node_ticket["Transaction ticket<br/>[TranTicket.java]"]
  node_check["Check details<br/>[Check.java]"]
  node_bank["Bank operations<br/>[Bank.java]"]
  node_account["Account base<br/>[Account.java]"]
  node_checking["Checking account<br/>[Checking.java]"]
  node_savings["Savings account<br/>[Savings.java]"]
  node_cd["CD account<br/>[CDAccount.java]"]
  node_receipt["Transaction receipt<br/>[TranReceipt.java]"]
  node_depositor["Depositor identity<br/>[Depositor.java]"]
  node_name["Account holder name<br/>[Name.java]"]
end

subgraph group_bank_storage["Bank Storage"]
  node_account_files[("Account records")]
  node_bank_file[("BankAccounts.dat<br/>[BankAccounts.dat]")]
end

subgraph group_wordle_game["Wordle Game"]
  node_wordle["Wordle game loop<br/>[WordleApp.java]"]
  node_word_selector["Random word selection<br/>[WordleApp.java]"]
  node_guess_check["Guess validation<br/>[WordleApp.java]"]
  node_feedback["Guess feedback<br/>[WordleApp.java]"]
end

node_bank_user(("Bank user"))
node_wordle_user(("Player"))
node_word_list["Word-list file"]

node_bank_user -->|"selects action"| node_bank_app
node_bank_app -->|"creates ticket"| node_ticket
node_bank_app -->|"creates check"| node_check
node_bank_app -->|"dispatches operation"| node_bank
node_bank -->|"validates details"| node_ticket
node_bank -->|"looks up account"| node_account_files
node_bank -->|"reads or writes"| node_bank_file
node_bank -->|"invokes checking"| node_checking
node_bank -->|"invokes savings"| node_savings
node_bank -->|"invokes CD"| node_cd
node_checking -->|"inherits behavior"| node_account
node_savings -->|"inherits behavior"| node_account
node_cd -->|"inherits behavior"| node_savings
node_bank -->|"creates receipt"| node_receipt
node_checking -->|"creates receipt"| node_receipt
node_savings -->|"creates receipt"| node_receipt
node_cd -->|"creates receipt"| node_receipt
node_account -->|"holds identity"| node_depositor
node_depositor -->|"holds name"| node_name
node_bank_app -->|"prints receipt"| node_receipt_output
node_wordle_user -->|"enters guesses"| node_wordle
node_wordle -->|"selects target"| node_word_selector
node_word_selector -->|"reads words"| node_word_list
node_wordle -->|"checks guess"| node_guess_check
node_wordle -->|"compares guess"| node_feedback
node_wordle -->|"shows feedback"| node_wordle_user

click node_bank_app "https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/BankAccounts8.java"
click node_ticket "https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/TranTicket.java"
click node_check "https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/Check.java"
click node_bank "https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/Bank.java"
click node_account "https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/Account.java"
click node_checking "https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/Checking.java"
click node_savings "https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/Savings.java"
click node_cd "https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/CDAccount.java"
click node_receipt "https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/TranReceipt.java"
click node_depositor "https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/Depositor.java"
click node_name "https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/Name.java"
click node_account_files "https://github.com/lowski7/projects/tree/main/BankAccounts8"
click node_bank_file "https://github.com/lowski7/projects/blob/main/BankAccounts8/BankAccounts.dat"
click node_receipt_output "https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/BankAccounts8.java"
click node_wordle "https://github.com/lowski7/projects/blob/main/wordleApp/src/main/java/WordleApp.java"
click node_word_selector "https://github.com/lowski7/projects/blob/main/wordleApp/src/main/java/WordleApp.java"
click node_guess_check "https://github.com/lowski7/projects/blob/main/wordleApp/src/main/java/WordleApp.java"
click node_feedback "https://github.com/lowski7/projects/blob/main/wordleApp/src/main/java/WordleApp.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_bank_app,node_receipt_output,node_bank_user toneBlue
class node_ticket,node_check,node_bank,node_account,node_checking,node_savings,node_cd,node_receipt,node_depositor,node_name toneAmber
class node_account_files,node_bank_file toneMint
class node_wordle,node_word_selector,node_guess_check,node_feedback toneRose
class node_wordle_user,node_word_list toneIndigo
```

## Components

### Bank Console

- [Menu and handlers](https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/BankAccounts8.java): `BankAccounts8/src/main/java/BankAccounts8.java`
- [Printed receipt](https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/BankAccounts8.java): `BankAccounts8/src/main/java/BankAccounts8.java`

### Banking Domain

- [Transaction ticket](https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/TranTicket.java): `BankAccounts8/src/main/java/TranTicket.java`
- [Check details](https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/Check.java): `BankAccounts8/src/main/java/Check.java`
- [Bank operations](https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/Bank.java): `BankAccounts8/src/main/java/Bank.java`
- [Account base](https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/Account.java): `BankAccounts8/src/main/java/Account.java`
- [Checking account](https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/Checking.java): `BankAccounts8/src/main/java/Checking.java`
- [Savings account](https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/Savings.java): `BankAccounts8/src/main/java/Savings.java`
- [CD account](https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/CDAccount.java): `BankAccounts8/src/main/java/CDAccount.java`
- [Transaction receipt](https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/TranReceipt.java): `BankAccounts8/src/main/java/TranReceipt.java`
- [Depositor identity](https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/Depositor.java): `BankAccounts8/src/main/java/Depositor.java`
- [Account holder name](https://github.com/lowski7/projects/blob/main/BankAccounts8/src/main/java/Name.java): `BankAccounts8/src/main/java/Name.java`

### Bank Storage

- [Account records](https://github.com/lowski7/projects/tree/main/BankAccounts8): `BankAccounts8`
- [BankAccounts.dat](https://github.com/lowski7/projects/blob/main/BankAccounts8/BankAccounts.dat): `BankAccounts8/BankAccounts.dat`

### Wordle Game

- [Wordle game loop](https://github.com/lowski7/projects/blob/main/wordleApp/src/main/java/WordleApp.java): `wordleApp/src/main/java/WordleApp.java`
- [Random word selection](https://github.com/lowski7/projects/blob/main/wordleApp/src/main/java/WordleApp.java): `wordleApp/src/main/java/WordleApp.java`
- [Guess validation](https://github.com/lowski7/projects/blob/main/wordleApp/src/main/java/WordleApp.java): `wordleApp/src/main/java/WordleApp.java`
- [Guess feedback](https://github.com/lowski7/projects/blob/main/wordleApp/src/main/java/WordleApp.java): `wordleApp/src/main/java/WordleApp.java`

### Other components

- **Bank user**
- **Player**
- **Word-list file**

## Connections

- Bank user → Menu and handlers: selects action
- Menu and handlers → Transaction ticket: creates ticket
- Menu and handlers → Check details: creates check
- Menu and handlers → Bank operations: dispatches operation
- Bank operations → Transaction ticket: validates details
- Bank operations → Account records: looks up account
- Bank operations → BankAccounts.dat: reads or writes
- Bank operations → Checking account: invokes checking
- Bank operations → Savings account: invokes savings
- Bank operations → CD account: invokes CD
- Checking account → Account base: inherits behavior
- Savings account → Account base: inherits behavior
- CD account → Savings account: inherits behavior
- Bank operations → Transaction receipt: creates receipt
- Checking account → Transaction receipt: creates receipt
- Savings account → Transaction receipt: creates receipt
- CD account → Transaction receipt: creates receipt
- Account base → Depositor identity: holds identity
- Depositor identity → Account holder name: holds name
- Menu and handlers → Printed receipt: prints receipt
- Player → Wordle game loop: enters guesses
- Wordle game loop → Random word selection: selects target
- Random word selection → Word-list file: reads words
- Wordle game loop → Guess validation: checks guess
- Wordle game loop → Guess feedback: compares guess
- Wordle game loop → Player: shows feedback
