API de gestión de cursos. Proyecto implementado usando Java 8 con Spring Boot y Gradle.
Este proyecto sirve como una muestra de mis habilidades como desarrollador Java. Se trata de una API para la gestión de una escuela, donde se pueden administrar cursos y estudiantes, así como las inscripciones de estos estudiantes en los cursos.
- Java 8
- Docker
- Docker Compose
- Postgres
Para ejecutar la aplicación usando Docker, simplemente debes ejecutar el siguiente comando en la raíz del proyecto:
docker-compose up
Por favor, verifica que tienes instalado Docker y Docker Compose correctamente antes de intentar este paso. Si experimentas algún problema, asegúrate de tener instalado Postgres en tu Docker.
Si prefieres ejecutar la aplicación en local, sigue los siguientes pasos:
- Asegúrate de que la base de datos está corriendo. Si usas Docker para esto, ejecuta el siguiente comando:
docker run --name my-postgres -e POSTGRES_PASSWORD=pass -e POSTGRES_DB=course_management -p 5432:5432 -d postgres
PD: Si docker te da algún problema con ese puerto puedes probar a cambiarlo
docker run --name my-postgres -e POSTGRES_PASSWORD=pass -e POSTGRES_DB=course_management -p 5433:5432 -d postgres
Si lo cambias ten en cuenta que en el application properties la conexión tiene que cambiarse por el puerto 5433 (en este caso)
spring.datasource.url=jdbc:postgresql://localhost:5433/course_management
- A continuación, en la raíz del proyecto, compila el código fuente con:
gradle build
- Una vez compilado, abre el proyecto en tu IDE de confianza y ejecuta la clase
CourseManagementApplication
.
La creación de la base de datos e inserción de todos sus datos mockup se manejan automáticamente mediante Liquibase. La base de datos relacional utilizada es PostgreSQL y se utiliza JPA para interactuar con esta.
Ya que el diseño de la Api se ha hecho utilizando API First con Swagger la documentación se encuentra en el archivo resources/openapi/course-management-api.yml
. Recomiendo importar
este archivo en Postman para facilitar las pruebas de los endpoints.
El micro dispone de seguridad por JWT, ya que he utilizado Spring Security, por eso he creado dos usuarios por defecto:
-
Usuario:
user
Contraseña:user
-
Usuario:
admin
Contraseña:admin
Las validaciones las he implementado a nivel de entidad y mediante una clase de validaciones específica usando @InitBinder
. Esto garantiza
que se te avise si un campo no es correcto al hacer cualquier petición.
Las credenciales de la base de datos se encuentran en el fichero application.properties
.
En los DTOs, a pesar de usar Lombok, tuve que añadir manualmente los getters debido a un conflicto con los mappers.
Este proyecto ha sido creado y desarrollado por Eduardo Navajas Cortés.