Eduardo Rodríguez Bahamonde
La aplicación esta configurada para correr en el puerto 8989 Revisar application.properties para más detalles de la configuración general.
**SWAGGER-UI**
http://localhost:8989/swagger-ui/index.html
Se dejan metodos tipo POST para crear y actualizar solo por un tema de facilidad de uso. Normalmente usaríoa PUT para los endpoints de solo actualización.
ENDPOINTS Autenticación: [POST] http://localhost:8989/authenticate BODY
{
"username": "eduardo",
"password": "789"
}
**USUARIOS PRECARGADOS**
- USERNAME: juan PASS: 123
- USERNAME: andres PASS: 456
- USERNAME: eduardo PASS: 789
- USERNAME: javier PASS: 098
- USERNAME: alejandro PASS: 765
- USERNAME: judith PASS: 432
Puede usar uno de los usuarios precargados para utilizar la aplicación
o crear uno nuevo en el endpoint [POST] http://localhost:8989/usuarios
(Los endpoints de CRUDS están protegidos por lo que requerirá autenticarse antes con alguno de los usuarios precargados)
pasando un json como el siguiente:
{
"username": "alejandra",
"pass": "lale",
"email": "[email protected]"
}
Para crear tareas utilizar el endpoint [POST] http://localhost:8989/tareas pasando un json como el siguiente:
BODY
{
"nombre": "Tarea de Ejemplo",
"descripcion": "Esta es una tarea de ejemplo",
"usuario": {
"id": 2
},
"estadoTarea": {
"id": 1
}
}
Para actualizar las tareas utilizar el mismo endpoint entregando el objeto de Tarea completo, con su ID y los datos a cambiar.
La empresa NUEVO SPA desea desarrollar una plataforma de gestión de tareas para mejorar la productividad de sus equipos. El sistema debe permitir a los usuarios crear, actualizar, eliminar y listar tareas. Además, se requiere autenticación mediante JWT y documentación de la API utilizando OpenAPI y Swagger.
Crear una API RESTful utilizando Spring Boot 2.7.x que gestione usuarios y tareas, aplicando buenas prácticas, principios SOLID y utilizando las tecnologías especificadas.
- Utiliza Java 17 para la implementación.
- Utiliza las características de Java 17, como lambdas y streams, cuando sea apropiado.
- Utilizar Maven como gestor de dependencias
- Construye la aplicación utilizando Spring Boot 2.7.x (última versión disponible).
- Utiliza una base de datos H2.
- Crea tres tablas: usuarios, tareas y estados_tarea.
- La tabla usuarios debe contener datos pre cargados.
- La tabla estados_tarea debe contener estados pre cargados.
- Implementa una capa de persistencia utilizando JPA para almacenar y recuperar las tareas.
- Implementa la autenticación utilizando JWT para validar usuarios.
- Documenta la API utilizando OpenAPI y Swagger.
- Implementa un endpoint para la autenticación de usuarios utilizando JWT.
- Implementa operaciones CRUD (Crear, Leer, Actualizar, Eliminar) para las tareas.
- Asegúrate de que las operaciones CRUD de tareas solo sean accesibles para usuarios autenticados.
- Utiliza OpenAPI y Swagger para documentar claramente la API.
- Escribe código ordenado, aplicando buenas prácticas y principios SOLID.
- Se espera dada la descripción del problema se creen las entidades y metodos en consecuencia a lo solicitado.
- Realiza un Pull request a este repositorio indicando tu nombre, correo y cargo al que postulas.
- Todos los PR serán rechazados, no es un indicador de la prueba.
- Incluye instrucciones claras sobre cómo ejecutar y probar la aplicación.
Se evaluará la solución en función de los siguientes criterios:
- Correcta implementación de las funcionalidades solicitadas.
- Aplicación de buenas prácticas de desarrollo, patrones de diseño y principios SOLID.
- Uso adecuado de Java 17, Spring Boot 2.7.x, H2, JWT, OpenAPI y Swagger.
- Claridad y completitud de la documentación.