# samysierradv/aluralatam-litealura architecture

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

## Overview

LiterAlura is a console-based book catalog. At startup, the application launches an interactive menu: users can search Gutendex by title, save a returned book and author, then list stored books or authors, filter authors by year alive, and filter books by language. The menu also displays search and query results. The README mentions broader filters and statistics, but the inspected runtime code supports the menu options shown here. The API and persistence flows are supported by sampled source; the database engine is not established by the available evidence.

Main entry points: [`LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/principal/Principal.java`](https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/principal/Principal.java) (Menu and workflows), [`LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/service/ConsumoAPI.java`](https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/service/ConsumoAPI.java) (HTTP client), [`LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/repositry/AutorRepository.java`](https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/repositry/AutorRepository.java) (Author repository), [`LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/service/ConvierteDatos.java`](https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/service/ConvierteDatos.java) (JSON converter)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["Console interaction"]
  node_application["Application startup"]
  node_principal["Menu and workflows<br/>[Principal.java]"]
end

subgraph group_acquisition["Book acquisition"]
  node_gutendex["Gutendex API"]
  node_http["HTTP client<br/>[ConsumoAPI.java]"]
  node_converter["JSON converter"]
  node_bookdata["Book response DTOs"]
end

subgraph group_catalog["Catalog and persistence"]
  node_book["Book entity<br/>[Libro.java]"]
  node_author["Author entity<br/>[Autor.java]"]
  node_language["Language enum<br/>[Idioma.java]"]
  node_bookrepo["Book repository"]
  node_authorrepo["Author repository"]
  node_database[("Catalog database")]
end

node_user(("Console user"))

node_user -->|"enters choices"| node_principal
node_application -->|"launches menu"| node_principal
node_principal -->|"displays results"| node_user
node_principal -->|"requests title"| node_http
node_http -->|"sends HTTP request"| node_gutendex
node_gutendex -->|"returns JSON"| node_http
node_http -->|"returns response"| node_principal
node_principal -->|"parses response"| node_converter
node_converter -->|"produces DTO"| node_bookdata
node_principal -->|"creates entity"| node_book
node_principal -->|"creates entity"| node_author
node_principal -->|"checks and saves author"| node_authorrepo
node_principal -->|"saves and queries books"| node_bookrepo
node_principal -->|"queries authors"| node_authorrepo
node_bookrepo -->|"reads and writes"| node_database
node_authorrepo -->|"reads and writes"| node_database
node_book -->|"uses language"| node_language

click node_application "https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/LiterAluraApplication.java"
click node_principal "https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/principal/Principal.java"
click node_http "https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/service/ConsumoAPI.java"
click node_converter "https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/service/ConvierteDatos.java"
click node_bookdata "https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/model/DatosBookObject.java"
click node_book "https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/model/Libro.java"
click node_author "https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/model/Autor.java"
click node_language "https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/model/Idioma.java"
click node_bookrepo "https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/repositry/LibroRepository.java"
click node_authorrepo "https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/repositry/AutorRepository.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_application,node_principal,node_user toneBlue
class node_gutendex,node_http,node_converter,node_bookdata toneAmber
class node_book,node_author,node_language,node_bookrepo,node_authorrepo,node_database toneMint
```

## Components

### Console interaction

- [Application startup](https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/LiterAluraApplication.java): `LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/LiterAluraApplication.java`
- [Menu and workflows](https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/principal/Principal.java): `LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/principal/Principal.java`

### Book acquisition

- **Gutendex API**
- [HTTP client](https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/service/ConsumoAPI.java): `LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/service/ConsumoAPI.java`
- [JSON converter](https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/service/ConvierteDatos.java): `LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/service/ConvierteDatos.java`
- [Book response DTOs](https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/model/DatosBookObject.java): `LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/model/DatosBookObject.java`

### Catalog and persistence

- [Book entity](https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/model/Libro.java): `LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/model/Libro.java`
- [Author entity](https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/model/Autor.java): `LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/model/Autor.java`
- [Language enum](https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/model/Idioma.java): `LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/model/Idioma.java`
- [Book repository](https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/repositry/LibroRepository.java): `LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/repositry/LibroRepository.java`
- [Author repository](https://github.com/samysierradv/aluralatam-litealura/blob/main/LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/repositry/AutorRepository.java): `LiterAlura-main/src/main/java/com/aluracursos/LiterAlura/repositry/AutorRepository.java`
- **Catalog database**

### Other components

- **Console user**

## Connections

- Console user → Menu and workflows: enters choices
- Application startup → Menu and workflows: launches menu
- Menu and workflows → Console user: displays results
- Menu and workflows → HTTP client: requests title
- HTTP client → Gutendex API: sends HTTP request
- Gutendex API → HTTP client: returns JSON
- HTTP client → Menu and workflows: returns response
- Menu and workflows → JSON converter: parses response
- JSON converter → Book response DTOs: produces DTO
- Menu and workflows → Book entity: creates entity
- Menu and workflows → Author entity: creates entity
- Menu and workflows → Author repository: checks and saves author
- Menu and workflows → Book repository: saves and queries books
- Menu and workflows → Author repository: queries authors
- Book repository → Catalog database: reads and writes
- Author repository → Catalog database: reads and writes
- Book entity → Language enum: uses language
