# douglasilvano/tf_poo architecture

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

- Interactive diagram: https://gitdiagram.com/douglasilvano/tf_poo
- Repository: https://github.com/douglasilvano/tf_poo

## Overview

ACMETech is a Java Swing application for brokering technology sales. Its startup loads participant, technology, and sales input data into catalogs; users then manage suppliers, technologies, buyers, and sales, consult rankings and view reports, and save or reload catalog data as CSV or JSON. The graph includes documented capabilities whose wiring was not fully sampled, using the existing GUI directory where specific screen calls were not verified.

Main entry points: [`src/interfaceGrafica`](https://github.com/douglasilvano/tf_poo/tree/main/src/interfaceGrafica) (Swing screens), [`src/entidades/CatalogoTecnologias.java`](https://github.com/douglasilvano/tf_poo/blob/main/src/entidades/CatalogoTecnologias.java) (Technology catalog), [`src/aplicacao/ACMETech.java`](https://github.com/douglasilvano/tf_poo/blob/main/src/aplicacao/ACMETech.java) (Startup loader), [`src/entidades/CatalogoCompradores.java`](https://github.com/douglasilvano/tf_poo/blob/main/src/entidades/CatalogoCompradores.java) (Buyer catalog)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_startup["Startup and UI"]
  node_main["Application entry<br/>[Main.java]"]
  node_startup_service["Startup loader<br/>[ACMETech.java]"]
  node_gui["Swing screens"]
end

subgraph group_domain["Domain catalogs"]
  node_supplier_catalog["Supplier catalog"]
  node_technology_catalog["Technology catalog"]
  node_buyer_catalog["Buyer catalog"]
  node_sales_catalog["Sales catalog"]
  node_domain_records["Business entities"]
end

subgraph group_persistence["Data persistence"]
  node_csv_persistence["CSV persistence"]
  node_json_persistence["JSON persistence"]
end

subgraph group_insights["Reports and queries"]
  node_sales_queries["Sales rankings"]
  node_supplier_queries["Supplier ranking"]
  node_buyer_queries["Buyer ranking"]
  node_technology_queries["Technology ranking"]
  node_reports["Reports and query screens"]
end

node_user(("User"))
node_entry_csv["Startup CSV files"]

node_main -->|"initializes"| node_startup_service
node_main -->|"opens"| node_gui
node_startup_service -->|"reads"| node_entry_csv
node_startup_service -->|"loads"| node_supplier_catalog
node_startup_service -->|"loads"| node_technology_catalog
node_startup_service -->|"loads"| node_buyer_catalog
node_startup_service -->|"loads"| node_sales_catalog
node_user -->|"uses"| node_gui
node_gui -->|"manages"| node_supplier_catalog
node_gui -->|"manages"| node_technology_catalog
node_gui -->|"manages"| node_buyer_catalog
node_gui -->|"records and removes"| node_sales_catalog
node_gui -->|"saves or loads"| node_csv_persistence
node_gui -->|"saves or loads"| node_json_persistence
node_csv_persistence -->|"reads and writes"| node_supplier_catalog
node_csv_persistence -->|"reads and writes"| node_technology_catalog
node_csv_persistence -->|"reads and writes"| node_buyer_catalog
node_csv_persistence -->|"reads and writes"| node_sales_catalog
node_json_persistence -->|"reads and writes"| node_supplier_catalog
node_json_persistence -->|"reads and writes"| node_technology_catalog
node_json_persistence -->|"reads and writes"| node_buyer_catalog
node_json_persistence -->|"reads and writes"| node_sales_catalog
node_supplier_catalog -->|"manages"| node_domain_records
node_technology_catalog -->|"manages"| node_domain_records
node_buyer_catalog -->|"manages"| node_domain_records
node_sales_catalog -->|"manages"| node_domain_records
node_gui -->|"opens"| node_reports
node_reports -->|"queries"| node_technology_queries
node_reports -->|"queries"| node_supplier_queries
node_reports -->|"queries"| node_buyer_queries
node_reports -->|"queries"| node_sales_queries
node_technology_queries -->|"analyzes"| node_technology_catalog
node_supplier_queries -->|"counts technologies"| node_technology_catalog
node_buyer_queries -->|"ranks buyers"| node_buyer_catalog
node_sales_queries -->|"ranks sales"| node_sales_catalog

click node_main "https://github.com/douglasilvano/tf_poo/blob/main/src/Main.java"
click node_startup_service "https://github.com/douglasilvano/tf_poo/blob/main/src/aplicacao/ACMETech.java"
click node_gui "https://github.com/douglasilvano/tf_poo/tree/main/src/interfaceGrafica"
click node_supplier_catalog "https://github.com/douglasilvano/tf_poo/blob/main/src/entidades/CatalogoFornecedores.java"
click node_technology_catalog "https://github.com/douglasilvano/tf_poo/blob/main/src/entidades/CatalogoTecnologias.java"
click node_buyer_catalog "https://github.com/douglasilvano/tf_poo/blob/main/src/entidades/CatalogoCompradores.java"
click node_sales_catalog "https://github.com/douglasilvano/tf_poo/blob/main/src/entidades/CatalogoVendas.java"
click node_domain_records "https://github.com/douglasilvano/tf_poo/tree/main/src/entidades"
click node_csv_persistence "https://github.com/douglasilvano/tf_poo/blob/main/src/aplicacao/PersistenciaCSV.java"
click node_json_persistence "https://github.com/douglasilvano/tf_poo/blob/main/src/aplicacao/PersistenciaJSON.java"
click node_sales_queries "https://github.com/douglasilvano/tf_poo/blob/main/src/entidades/CatalogoVendas.java"
click node_supplier_queries "https://github.com/douglasilvano/tf_poo/blob/main/src/entidades/CatalogoFornecedores.java"
click node_buyer_queries "https://github.com/douglasilvano/tf_poo/blob/main/src/entidades/CatalogoCompradores.java"
click node_technology_queries "https://github.com/douglasilvano/tf_poo/blob/main/src/entidades/CatalogoTecnologias.java"
click node_reports "https://github.com/douglasilvano/tf_poo/tree/main/src/interfaceGrafica"
click node_entry_csv "https://github.com/douglasilvano/tf_poo/tree/main/recursos"

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_startup_service,node_gui,node_user toneBlue
class node_supplier_catalog,node_technology_catalog,node_buyer_catalog,node_sales_catalog,node_domain_records toneAmber
class node_csv_persistence,node_json_persistence toneMint
class node_sales_queries,node_supplier_queries,node_buyer_queries,node_technology_queries,node_reports toneRose
class node_entry_csv toneTeal
```

## Components

### Startup and UI

- [Application entry](https://github.com/douglasilvano/tf_poo/blob/main/src/Main.java): `src/Main.java`
- [Startup loader](https://github.com/douglasilvano/tf_poo/blob/main/src/aplicacao/ACMETech.java): `src/aplicacao/ACMETech.java`
- [Swing screens](https://github.com/douglasilvano/tf_poo/tree/main/src/interfaceGrafica): `src/interfaceGrafica`

### Domain catalogs

- [Supplier catalog](https://github.com/douglasilvano/tf_poo/blob/main/src/entidades/CatalogoFornecedores.java): `src/entidades/CatalogoFornecedores.java`
- [Technology catalog](https://github.com/douglasilvano/tf_poo/blob/main/src/entidades/CatalogoTecnologias.java): `src/entidades/CatalogoTecnologias.java`
- [Buyer catalog](https://github.com/douglasilvano/tf_poo/blob/main/src/entidades/CatalogoCompradores.java): `src/entidades/CatalogoCompradores.java`
- [Sales catalog](https://github.com/douglasilvano/tf_poo/blob/main/src/entidades/CatalogoVendas.java): `src/entidades/CatalogoVendas.java`
- [Business entities](https://github.com/douglasilvano/tf_poo/tree/main/src/entidades): `src/entidades`

### Data persistence

- [CSV persistence](https://github.com/douglasilvano/tf_poo/blob/main/src/aplicacao/PersistenciaCSV.java): `src/aplicacao/PersistenciaCSV.java`
- [JSON persistence](https://github.com/douglasilvano/tf_poo/blob/main/src/aplicacao/PersistenciaJSON.java): `src/aplicacao/PersistenciaJSON.java`

### Reports and queries

- [Sales rankings](https://github.com/douglasilvano/tf_poo/blob/main/src/entidades/CatalogoVendas.java): `src/entidades/CatalogoVendas.java`
- [Supplier ranking](https://github.com/douglasilvano/tf_poo/blob/main/src/entidades/CatalogoFornecedores.java): `src/entidades/CatalogoFornecedores.java`
- [Buyer ranking](https://github.com/douglasilvano/tf_poo/blob/main/src/entidades/CatalogoCompradores.java): `src/entidades/CatalogoCompradores.java`
- [Technology ranking](https://github.com/douglasilvano/tf_poo/blob/main/src/entidades/CatalogoTecnologias.java): `src/entidades/CatalogoTecnologias.java`
- [Reports and query screens](https://github.com/douglasilvano/tf_poo/tree/main/src/interfaceGrafica): `src/interfaceGrafica`

### Other components

- **User**
- [Startup CSV files](https://github.com/douglasilvano/tf_poo/tree/main/recursos): `recursos`

## Connections

- Application entry → Startup loader: initializes
- Application entry → Swing screens: opens
- Startup loader → Startup CSV files: reads
- Startup loader → Supplier catalog: loads
- Startup loader → Technology catalog: loads
- Startup loader → Buyer catalog: loads
- Startup loader → Sales catalog: loads
- User → Swing screens: uses
- Swing screens → Supplier catalog: manages
- Swing screens → Technology catalog: manages
- Swing screens → Buyer catalog: manages
- Swing screens → Sales catalog: records and removes
- Swing screens → CSV persistence: saves or loads
- Swing screens → JSON persistence: saves or loads
- CSV persistence → Supplier catalog: reads and writes
- CSV persistence → Technology catalog: reads and writes
- CSV persistence → Buyer catalog: reads and writes
- CSV persistence → Sales catalog: reads and writes
- JSON persistence → Supplier catalog: reads and writes
- JSON persistence → Technology catalog: reads and writes
- JSON persistence → Buyer catalog: reads and writes
- JSON persistence → Sales catalog: reads and writes
- Supplier catalog → Business entities: manages
- Technology catalog → Business entities: manages
- Buyer catalog → Business entities: manages
- Sales catalog → Business entities: manages
- Swing screens → Reports and query screens: opens
- Reports and query screens → Technology ranking: queries
- Reports and query screens → Supplier ranking: queries
- Reports and query screens → Buyer ranking: queries
- Reports and query screens → Sales rankings: queries
- Technology ranking → Technology catalog: analyzes
- Supplier ranking → Technology catalog: counts technologies
- Buyer ranking → Buyer catalog: ranks buyers
- Sales rankings → Sales catalog: ranks sales
