# zyruspogi2006/oop-finsls architecture

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

- Interactive diagram: https://gitdiagram.com/zyruspogi2006/oop-finsls
- Repository: https://github.com/zyruspogi2006/oop-finsls

## Overview

This is a desktop budgeting application built with Java Swing. The workflow starts at the login window; successful authentication opens the main window, where users set a budget, add or delete expenses, search records, and view totals and remaining budget. The main window delegates budget and expense operations to an in-memory manager, which uses Budget and Expense records derived from FinancialRecord. The README provides no capability details, so the map reflects the sampled source; the main window excerpt is partial.

Main entry points: [`budgetingsystem/MainFrame.java`](https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/MainFrame.java) (Main window), [`budgetingsystem/BudgetManager.java`](https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/BudgetManager.java) (Budget manager), [`budgetingsystem/LoginFrame.java`](https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/LoginFrame.java) (Login window), [`budgetingsystem/Budget.java`](https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/Budget.java) (Budget record)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop interface"]
  node_launcher["Application launcher<br/>[Main.java]"]
  node_login["Login window<br/>[LoginFrame.java]"]
  node_mainwindow["Main window<br/>[MainFrame.java]"]
  node_sharedframe["Shared window styling<br/>[BaseFrame.java]"]
  node_budgetcontrols["Budget controls<br/>[MainFrame.java]"]
  node_expensecontrols["Expense controls<br/>[MainFrame.java]"]
  node_search["Expense search<br/>[MainFrame.java]"]
  node_dashboard["Totals and records<br/>[MainFrame.java]"]
end

subgraph group_logic["Budget logic"]
  node_manager["Budget manager<br/>[BudgetManager.java]"]
end

subgraph group_records["Financial records"]
  node_budget["Budget record<br/>[Budget.java]"]
  node_expense["Expense record<br/>[Expense.java]"]
  node_financialrecord["Base financial record"]
end

node_user(("User"))

node_launcher -->|"opens"| node_login
node_user -->|"enters credentials"| node_login
node_login -->|"opens on success"| node_mainwindow
node_login -->|"inherits"| node_sharedframe
node_mainwindow -->|"inherits"| node_sharedframe
node_mainwindow -->|"handles budget input"| node_budgetcontrols
node_mainwindow -->|"handles expenses"| node_expensecontrols
node_mainwindow -->|"handles search"| node_search
node_mainwindow -->|"updates display"| node_dashboard
node_budgetcontrols -->|"sets budget"| node_manager
node_expensecontrols -->|"adds or deletes"| node_manager
node_search -->|"searches records"| node_manager
node_dashboard -->|"reads totals and records"| node_manager
node_manager -->|"creates and updates"| node_budget
node_manager -->|"stores and searches"| node_expense
node_budget -->|"inherits"| node_financialrecord
node_expense -->|"inherits"| node_financialrecord

click node_launcher "https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/Main.java"
click node_login "https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/LoginFrame.java"
click node_mainwindow "https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/MainFrame.java"
click node_sharedframe "https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/BaseFrame.java"
click node_budgetcontrols "https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/MainFrame.java"
click node_expensecontrols "https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/MainFrame.java"
click node_search "https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/MainFrame.java"
click node_dashboard "https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/MainFrame.java"
click node_manager "https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/BudgetManager.java"
click node_budget "https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/Budget.java"
click node_expense "https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/Expense.java"
click node_financialrecord "https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/FinancialRecord.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_launcher,node_login,node_mainwindow,node_sharedframe,node_budgetcontrols,node_expensecontrols,node_search,node_dashboard,node_user toneBlue
class node_manager toneAmber
class node_budget,node_expense,node_financialrecord toneMint
```

## Components

### Desktop interface

- [Application launcher](https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/Main.java): `budgetingsystem/Main.java`
- [Login window](https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/LoginFrame.java): `budgetingsystem/LoginFrame.java`
- [Main window](https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/MainFrame.java): `budgetingsystem/MainFrame.java`
- [Shared window styling](https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/BaseFrame.java): `budgetingsystem/BaseFrame.java`
- [Budget controls](https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/MainFrame.java): `budgetingsystem/MainFrame.java`
- [Expense controls](https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/MainFrame.java): `budgetingsystem/MainFrame.java`
- [Expense search](https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/MainFrame.java): `budgetingsystem/MainFrame.java`
- [Totals and records](https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/MainFrame.java): `budgetingsystem/MainFrame.java`

### Budget logic

- [Budget manager](https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/BudgetManager.java): `budgetingsystem/BudgetManager.java`

### Financial records

- [Budget record](https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/Budget.java): `budgetingsystem/Budget.java`
- [Expense record](https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/Expense.java): `budgetingsystem/Expense.java`
- [Base financial record](https://github.com/zyruspogi2006/oop-finsls/blob/main/budgetingsystem/FinancialRecord.java): `budgetingsystem/FinancialRecord.java`

### Other components

- **User**

## Connections

- Application launcher → Login window: opens (evidence: `budgetingsystem/Main.java`)
- User → Login window: enters credentials (evidence: `budgetingsystem/LoginFrame.java`)
- Login window → Main window: opens on success (evidence: `budgetingsystem/LoginFrame.java`)
- Login window → Shared window styling: inherits (evidence: `budgetingsystem/LoginFrame.java`)
- Main window → Shared window styling: inherits (evidence: `budgetingsystem/MainFrame.java`)
- Main window → Budget controls: handles budget input (evidence: `budgetingsystem/MainFrame.java`)
- Main window → Expense controls: handles expenses (evidence: `budgetingsystem/MainFrame.java`)
- Main window → Expense search: handles search (evidence: `budgetingsystem/MainFrame.java`)
- Main window → Totals and records: updates display (evidence: `budgetingsystem/MainFrame.java`)
- Budget controls → Budget manager: sets budget (evidence: `budgetingsystem/MainFrame.java`)
- Expense controls → Budget manager: adds or deletes (evidence: `budgetingsystem/MainFrame.java`)
- Expense search → Budget manager: searches records (evidence: `budgetingsystem/MainFrame.java`)
- Totals and records → Budget manager: reads totals and records (evidence: `budgetingsystem/MainFrame.java`)
- Budget manager → Budget record: creates and updates (evidence: `budgetingsystem/BudgetManager.java`)
- Budget manager → Expense record: stores and searches (evidence: `budgetingsystem/BudgetManager.java`)
- Budget record → Base financial record: inherits (evidence: `budgetingsystem/Budget.java`)
- Expense record → Base financial record: inherits (evidence: `budgetingsystem/Expense.java`)
