LiterAlura es una aplicación de consola en Java + Spring Boot que te permite consultar, almacenar y explorar información de libros y autores usando la API pública de Gutendex, y persistir datos en PostgreSQL. Desarrollado como parte del programa Oracle ONE - Alura Latam.
- Buscar libros por título y guardarlos con su autor en la base de datos
- Listar todos los libros registrados
- Filtrar libros por idioma
- Listar autores guardados
- Listar autores vivos en determinado año (consulta optimizada en BD)
- Estadísticas de libros por idioma y descargas (Streams y consultas JPA)
- Top 10 libros más descargados
- Buscar autores por nombre
- Filtrar autores por año de nacimiento o fallecimiento
El usuario interactúa con un menú amigable en consola, pudiendo buscar libros, consultar autores, ver estadísticas y filtrar resultados.
- Java 17+
- Spring Boot 3+
- Spring Data JPA
- PostgreSQL
- Maven
- Jackson (JSON)
- Java Streams y Lambdas
src/main/java/com/literalura/
├── dto/
│ ├── AutorDTO.java
│ └── LibroDTO.java
├── model/
│ ├── Autor.java
│ ├── Libro.java
│ ├── DatosAutor.java
│ ├── DatosLibro.java
│ └── DatosCatalogoLibros.java
├── repository/
│ ├── AutorRepository.java
│ └── LibroRepository.java
├── service/
│ ├── AutorService.java
│ ├── LibroService.java
│ ├── ConsumoAPI.java
│ ├── ConvierteDatos.java
│ └── IConvierteDatos.java
├── principal/
│ └── Principal.java
└── LiterAluraApplication.java
- Clona el repositorio:
git clone https://github.com/aantoa/LiterAlura.git
cd LiterAlura
- Crea la base de datos PostgreSQL (ejemplo):
CREATE DATABASE alura_challenge;
- Configura tus credenciales de base de datos: Abre src/main/resources/application.properties:
spring.application.name=LiterAlura
spring.datasource.url=jdbc:postgresql://${DB_HOST_ALURA}/${DB_NAME_CHALLENGE_LITERALURA}
spring.datasource.username=${DB_USER_ALURA}
spring.datasource.password=${DB_PASSWORD_ALURA}
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=false
logging.level.org.hibernate.SQL=ERROR
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=ERROR
spring.jpa.properties.hibernate.format_sql=true
- Define las variables de entorno necesarias antes de arrancar la aplicación:
- En Linux/Mac
export DB_HOST_ALURA=localhost:5432
export DB_NAME_CHALLENGE_LITERALURA=alura_challenge
export DB_USER_ALURA=tu_usuario
export DB_PASSWORD_ALURA=tu_password
- En Windows CMD:
set DB_HOST_ALURA=localhost:5432
set DB_NAME_CHALLENGE_LITERALURA=alura_challenge
set DB_USER_ALURA=tu_usuario
set DB_PASSWORD_ALURA=tu_password
- Compila y ejecuta el proyecto:
mvn spring-boot:run
-
Buscar libro: Ingresa el título y el sistema consultará la API, guardará el libro y el autor (si no existen), y mostrará el resultado.
-
Estadísticas: Visualiza cuántos libros tienes por idioma o el top 10 de descargas.
-
Filtrar autores: Encuentra autores vivos en un año específico, por nombre, año de nacimiento o fallecimiento.
- Este proyecto fue desarrollado como parte del Challenge de Back-End en el programa Oracle Next Education - Alura Latam.
- El objetivo fue practicar integración de APIs, persistencia de datos, buenas prácticas en Java y Spring, y la entrega de una experiencia sólida al usuario.
- Autor: Amalia Anto Alzamora
- API utilizada: Gutendex
- Inspirado por Alura Latam
- Este proyecto está bajo la Licencia MIT (
MIT
)