Literalura es una robusta aplicación de consola desarrollada como parte del Challenge de Backend de Alura Latam y Oracle (ONE). Este proyecto funciona como un catálogo de libros personal, consumiendo la API pública Gutendex para obtener datos de libros y persistirlos en una base de datos PostgreSQL.
El objetivo principal es demostrar un sólido entendimiento de la arquitectura backend con Java y Spring Boot, incluyendo el consumo de APIs externas, la persistencia de datos con Spring Data JPA y el diseño de una aplicación interactiva y funcional.
La aplicación cuenta con un menú interactivo en la consola que ofrece las siguientes funcionalidades:
-
🔍 Buscar y Registrar Libros: Busca libros por título en la API de Gutendex. Si el libro no existe en la base de datos local, lo registra automáticamente junto con su autor.
-
📖 Listar Libros Registrados: Muestra una lista completa de todos los libros almacenados en la base de datos.
-
✒️ Listar Autores Registrados: Presenta una lista de todos los autores guardados, incluyendo sus fechas de nacimiento y fallecimiento.
-
🗓️ Filtrar Autores por Año: Permite al usuario ingresar un año específico y muestra una lista de autores que estaban vivos en esa fecha.
-
🌐 Listar Libros por Idioma: Filtra y muestra los libros según el idioma seleccionado por el usuario (Español, Inglés, Francés, Portugués).
El proyecto sigue una arquitectura por capas para garantizar una clara separación de responsabilidades, facilitando la mantenibilidad y escalabilidad del código.
/com/alurachallenge/literalura
├── dto/ # (Data Transfer Objects) Records que modelan la respuesta de la API.
├── main/ # Clase principal que contiene la lógica de la interfaz de consola.
├── model/ # Entidades JPA (@Entity) que representan las tablas de la base de datos.
├── repository/ # Interfaces de Spring Data JPA para el acceso y consulta de datos.
└── service/ # Lógica de negocio, consumo de API y orquestación de servicios.
Tecnología
Propósito
Java 17
Lenguaje principal de programación.
Spring Boot
Framework para la creación de la aplicación backend.
Spring Data JPA
Persistencia de datos e interacción con la base de datos (ORM con Hibernate).
PostgreSQL
Sistema Gestor de Base de Datos para el almacenamiento de datos.
Maven
Gestor de dependencias y construcción del proyecto.
API Gutendex
Fuente externa para la obtención de datos de libros.
Jackson
Deserialización de la respuesta JSON de la API a DTOs de Java.
Para ejecutar este proyecto en tu entorno local, sigue estos pasos:
Bash
git clone https://github.com/tu-usuario/g8literalurajr.git
cd g8literalurajr
Asegúrate de tener PostgreSQL instalado y en ejecución. Luego, crea una nueva base de datos.
SQL
CREATE DATABASE literalura;
Navega al archivo src/main/resources/application.properties
y modifica las siguientes líneas con tus credenciales de PostgreSQL:
Properties
spring.datasource.url=jdbc:postgresql://localhost:5432/literalura
spring.datasource.username=tu_usuario_de_postgres
spring.datasource.password=tu_contraseña_de_postgres
Puedes ejecutar el proyecto directamente desde tu IDE favorito (como IntelliJ IDEA o Eclipse) localizando la clase LiteraluraApplication.java
y ejecutando su método main()
.
Alternativamente, puedes usar Maven desde la terminal:
Bash
mvn spring-boot:run
Una vez iniciada, la aplicación te mostrará el menú interactivo en la consola.
Jhony A. Rodriguez Melendez
Este proyecto está bajo la Licencia MIT. Te invito a consultar el archivo LICENSE
para más detalles.