# samysierradv/aluralatam-conversor-de-monedas architecture

> Architecture diagram of the GitHub repository samysierradv/aluralatam-conversor-de-monedas, 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/samysierradv/aluralatam-conversor-de-monedas
- Repository: https://github.com/samysierradv/aluralatam-conversor-de-monedas

## Overview

Aplicación Java de consola para convertir divisas en seis direcciones entre USD y ARS, BRL o COP. El usuario ingresa una API key, elige una conversión y un monto; Main coordina la consulta, presenta y conserva el resultado en memoria. Al elegir guardar, el historial se serializa a un archivo. El README documenta las capacidades; las relaciones mostradas se basan en Main y las clases muestreadas.

Main entry points: [`challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/main/Main.java`](https://github.com/samysierradv/aluralatam-conversor-de-monedas/blob/main/challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/main/Main.java) (Menu and workflow), [`challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/clases/ConsultaApi.java`](https://github.com/samysierradv/aluralatam-conversor-de-monedas/blob/main/challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/clases/ConsultaApi.java) (Exchange API client), [`challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/clases/ResultadoDelCambio.java`](https://github.com/samysierradv/aluralatam-conversor-de-monedas/blob/main/challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/clases/ResultadoDelCambio.java) (Conversion result), [`challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/clases/GeneradorDeJson.java`](https://github.com/samysierradv/aluralatam-conversor-de-monedas/blob/main/challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/clases/GeneradorDeJson.java) (JSON writer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["Console workflow"]
  node_main["Menu and workflow<br/>[Main.java]"]
  node_console["Console I/O"]
end

subgraph group_conversion["Currency conversion"]
  node_consulta["Exchange API client<br/>[ConsultaApi.java]"]
  node_exchange["ExchangeRate API"]
  node_resultado["Conversion result"]
end

subgraph group_history["Conversion history"]
  node_history_list["In-memory history<br/>[Main.java]"]
  node_json["JSON writer"]
  node_file["JSON history file"]
end

node_user(("Console user"))

node_user -->|"chooses options"| node_main
node_main -->|"reads and prints"| node_console
node_console -->|"prompts"| node_user
node_main -->|"requests conversion"| node_consulta
node_consulta -->|"sends HTTP request"| node_exchange
node_exchange -->|"returns response"| node_consulta
node_consulta -->|"parses response"| node_resultado
node_main -->|"displays result"| node_resultado
node_main -->|"adds to history"| node_resultado
node_main -->|"saves history"| node_json
node_json -->|"writes JSON"| node_file

click node_main "https://github.com/samysierradv/aluralatam-conversor-de-monedas/blob/main/challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/main/Main.java"
click node_consulta "https://github.com/samysierradv/aluralatam-conversor-de-monedas/blob/main/challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/clases/ConsultaApi.java"
click node_resultado "https://github.com/samysierradv/aluralatam-conversor-de-monedas/blob/main/challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/clases/ResultadoDelCambio.java"
click node_history_list "https://github.com/samysierradv/aluralatam-conversor-de-monedas/blob/main/challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/main/Main.java"
click node_json "https://github.com/samysierradv/aluralatam-conversor-de-monedas/blob/main/challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/clases/GeneradorDeJson.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_console,node_user toneBlue
class node_consulta,node_exchange,node_resultado toneAmber
class node_history_list,node_json,node_file toneMint
```

## Components

### Console workflow

- [Menu and workflow](https://github.com/samysierradv/aluralatam-conversor-de-monedas/blob/main/challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/main/Main.java): `challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/main/Main.java`
- **Console I/O**

### Currency conversion

- [Exchange API client](https://github.com/samysierradv/aluralatam-conversor-de-monedas/blob/main/challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/clases/ConsultaApi.java): `challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/clases/ConsultaApi.java`
- **ExchangeRate API**
- [Conversion result](https://github.com/samysierradv/aluralatam-conversor-de-monedas/blob/main/challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/clases/ResultadoDelCambio.java): `challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/clases/ResultadoDelCambio.java`

### Conversion history

- [In-memory history](https://github.com/samysierradv/aluralatam-conversor-de-monedas/blob/main/challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/main/Main.java): `challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/main/Main.java`
- [JSON writer](https://github.com/samysierradv/aluralatam-conversor-de-monedas/blob/main/challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/clases/GeneradorDeJson.java): `challenge-conversor-monedas-main/challenge-conversor-monedas-main/com/aluracursos/challengeconversormonedas/clases/GeneradorDeJson.java`
- **JSON history file**

### Other components

- **Console user**

## Connections

- Console user → Menu and workflow: chooses options
- Menu and workflow → Console I/O: reads and prints
- Console I/O → Console user: prompts
- Menu and workflow → Exchange API client: requests conversion
- Exchange API client → ExchangeRate API: sends HTTP request
- ExchangeRate API → Exchange API client: returns response
- Exchange API client → Conversion result: parses response
- Menu and workflow → Conversion result: displays result
- Menu and workflow → Conversion result: adds to history
- Menu and workflow → JSON writer: saves history
- JSON writer → JSON history file: writes JSON
