Skip to content

MrCopixt0/LiterAlura

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📚 LiterAlura

Pequeño catálogo de libros construido en Java con Spring Boot como parte del challenge de Alura.
La aplicación consume la API de Gutendex para buscar libros y luego los guarda en una base de datos local para trabajar con ellos mediante consultas JPA.

La idea principal no es consultar la API todo el tiempo, sino construir tu propia biblioteca persistente y realizar consultas sobre ella.


🚀 Funcionalidades

✔ Buscar libro por título (consulta a la API)
✔ Guardar libro en base de datos local
✔ Listar todos los libros guardados
✔ Listar autores registrados
✔ Buscar autores vivos en un determinado año
✔ Listar libros por idioma
✔ Top 10 libros más descargados (según los datos guardados)
✔ Mensaje dramático al cerrar la app 😌


🧠 ¿Cómo funciona?

  1. El usuario ingresa el título del libro.
  2. La app consulta la API:
    https://gutendex.com/books/
  3. Se toma el primer resultado.
  4. Se verifica si el libro ya existe en la base de datos.
  5. Si no existe, se pregunta si desea guardarlo.
  6. A partir de ahí, todas las consultas se hacen sobre la base local.

Importante:
El proyecto está diseñado para trabajar con los libros guardados, no para consultar la API constantemente.


🏗️ Tecnologías utilizadas

  • Java 17+
  • Spring Boot
  • Spring Data JPA
  • Hibernate
  • Base de datos H2 / PostgreSQL (según configuración)
  • API Gutendex

🗂️ Estructura del proyecto

com.alura.literalura │ ├── model ├ ├── DatosLibro ├ ├── DatosAutor ├ ├── Datos │ ├── Libro.java │ └── Autor.java │ ├── Principal │ ├── Principal.java ├── repository │ ├── LibroRepository.java │ └── AutorRepository.java │ ├── service │ └── LiteraluraApplication.java


🔎 Conceptos aplicados

  • Consumo de API REST
  • Conversión de JSON a objetos Java
  • Persistencia con JPA
  • Relaciones @ManyToOne entre Libro y Autor
  • Derived Queries
  • Consultas personalizadas con @Query
  • Ordenamientos y filtros
  • Manejo de Optional
  • Principio REST stateless

📊 Ejemplo de flujo

1 - Buscar libro por título 2 - Listar libros registrados 3 - Listar autores 4 - Listar autores vivos en determinado año 5 - Listar libros por idioma 6 - Top 10 libros más descargados 0 - Salir


😈 Detalle innecesario pero divertido

El cierre de la aplicación incluye un pequeño toque dramático:

java case 0 -> { System.out.println("Cerrando la biblioteca..."); pausa(1000); System.out.println("Guardando los libros en los estantes..."); pausa(1200); System.out.println("Apagando las luces..."); pausa(1000); System.out.println("Hasta la próxima lectura 📖"); }

No es funcionalmente necesario pero se me hizo divertido añadirlo.

Notas personales

~El Top 10 funciona sobre los libros guardados. ~Si solo hay 1 libro… solo devuelve 1.

~La aplicación sigue el principio de persistencia local. ~La API es solo la fuente inicial de datos.

Se implementó validación para evitar duplicados en la base de datos.

📌 Estado del proyecto

✔ Funcional ✔ Cumple con los requisitos del challenge ✔ Código limpio y estructurado ✔ Con un poco de personalidad

✨ Posibles mejoras futuras

Interfaz gráfica

Dockerización

Migración completa a PostgreSQL

Paginación de resultados

Tests automatizados

Manejo de múltiples idiomas por libro

Conclusión

Literalura es un proyecto enfocado en practicar consumo de API, persistencia con JPA y consultas derivadas. Más que una app compleja, es un ejercicio sólido de backend con buenas bases.


Si quieres, puedo hacerte una versión un poco más minimalista o una un poco más estilizada tipo portfolio profesional.

About

It´s a challengue

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages