Este repositorio contiene la solución al desafío técnico, que consiste en una aplicación Full-Stack para la gestión de personas. La aplicación está completamente puesta en containers con Docker para facilitar su ejecución y evaluación.
- Frontend: React, Vite, TypeScript, MUI (Material-UI)
- Backend: Java 21, Spring Boot 3, Spring Security
- Base de Datos: MySQL 8
- Entorno: Docker & Docker Compose
- Gestión CRUD Completa: Permite crear, leer, actualizar y eliminar personas.
- Interfaz Reactiva: La interfaz, construida con React, utiliza una tabla para mostrar los datos y un único formulario modal para las operaciones de creación y edición.
- Cálculo de Edad: La edad de cada persona se calcula y muestra dinámicamente en la tabla.
- Confirmación de Seguridad: Se ha implementado un diálogo de confirmación para prevenir la eliminación accidental de registros.
- API Segura y Documentada: El backend cuenta con endpoints protegidos por un token de autorización y una documentación interactiva generada con Swagger.
Asegúrate de tener Docker y Docker Compose instalados en tu sistema.
-
Clona el repositorio
git clone git@github.com:imiranda/test_hfsolutions.git cd test_hfsolutions -
Levanta los contenedores Desde la carpeta raíz del proyecto, ejecuta el siguiente comando. Este construirá las imágenes del frontend y backend, y levantará todos los servicios.
docker-compose up --build
La aplicación estará lista cuando veas en la consola los logs de los servicios
backend-api-previredymysql-db-previred.
Una vez que los contenedores estén en ejecución, podrás acceder a los siguientes servicios:
- Aplicación Frontend: http://localhost:5173
- API Backend: http://localhost:8080/api/personas
- Documentación de la API (Swagger): http://localhost:8080/swagger-ui.html
El repositorio está organizado como un monorepo con dos proyectos principales:
- /backend: Contiene la API REST desarrollada con Spring Boot. Para más detalles, consulta el README del Backend.
- /frontend: Contiene la aplicación de una sola página (SPA) desarrollada con React. Para más detalles, consulta el README del Frontend.