Aplicación de gestión de tareas construida con Spring Boot.
Note
Nota especial: Task manager sencillo en MVC
Tip
Consejo: no compilar en Java 17 o anteriores
Important
Importante: Respetar la versión Springboot del stack
Warning
Cuidado: Incompatibilidad son tomcat server
Caution
Mensaje de precaución
Task Manager es una API REST para la gestión de tareas que permite crear, leer, actualizar y eliminar tareas. El frontend está servido estáticamente por el propio backend Spring Boot.
- Java: 21 o superior
- Maven: 3.8 o superior (o usar el wrapper incluido
./mvnw) - Docker: 20.10 o superior (solo para ejecución con Docker)
- Docker Compose: 2.0 o superior (solo para ejecución con Docker)
# 1. Compilar y ejecutar tests
./mvnw clean test
# 2. Arrancar la aplicación
./mvnw spring-boot:runEn Windows sin bash:
mvnw.cmd spring-boot:run
La aplicación queda disponible en: http://localhost:8081 El frontend está en: http://localhost:8081/index.html
# Construir la imagen y arrancar el contenedor en segundo plano
docker compose up -d --build
# Ver logs en tiempo real
docker compose logs -f
# Detener y eliminar el contenedor
docker compose downLa aplicación queda disponible en: http://localhost:8081
# Construir la imagen
docker build -t task-manager:latest .
# Ejecutar el contenedor
docker run -d \
--name task-manager \
-p 8081:8081 \
task-manager:latestcurl http://localhost:8081/actuator/healthRespuesta esperada:
{ "status": "UP" }| Método | Endpoint | Descripción |
|---|---|---|
| GET | /api/tasks |
Listar todas las tareas |
| GET | /api/tasks/{id} |
Obtener tarea por ID |
| POST | /api/tasks |
Crear nueva tarea |
| PUT | /api/tasks/{id} |
Actualizar tarea completa |
| PATCH | /api/tasks/{id} |
Actualizar campo(s) parcialmente |
| DELETE | /api/tasks/{id} |
Eliminar tarea |
| GET | /actuator/health |
Estado de salud |
Crear una tarea
curl -X POST http://localhost:8081/api/tasks \
-H "Content-Type: application/json" \
-d '{"title": "Mi primera tarea", "completed": false}'Listar todas las tareas
curl http://localhost:8081/api/tasksObtener una tarea por ID
curl http://localhost:8081/api/tasks/1Actualizar una tarea
curl -X PUT http://localhost:8081/api/tasks/1 \
-H "Content-Type: application/json" \
-d '{"title": "Tarea actualizada", "completed": true}'Marcar como completada (actualización parcial)
curl -X PATCH http://localhost:8081/api/tasks/1 \
-H "Content-Type: application/json" \
-d '{"completed": true}'Eliminar una tarea
curl -X DELETE http://localhost:8081/api/tasks/1# Todos los tests (28 en total)
./mvnw clean test
# Solo tests de servicio
./mvnw test -Dtest=TaskServiceTest
# Solo tests de repositorio
./mvnw test -Dtest=TaskRepositoryTest
# Solo tests de controlador (integración)
./mvnw test -Dtest=TaskControllerTesttask-manager/
├── src/
│ ├── main/
│ │ ├── java/com/taskmanager/
│ │ │ ├── config/ # Configuración Jackson
│ │ │ ├── controller/ # Controladores REST
│ │ │ ├── exception/ # Manejo global de errores
│ │ │ ├── model/ # Entidades JPA
│ │ │ ├── repository/ # Repositorios Spring Data
│ │ │ └── service/ # Lógica de negocio
│ │ └── resources/
│ │ ├── static/ # Frontend (HTML + CSS + JS)
│ │ └── application.properties
│ └── test/
│ └── java/com/taskmanager/
│ ├── controller/ # Tests de integración (MockMvc)
│ ├── repository/ # Tests de slice JPA
│ └── service/ # Tests unitarios (Mockito)
├── Dockerfile
├── docker-compose.yml
├── pom.xml
└── README.md
| Variable | Descripción | Valor por defecto |
|---|---|---|
SPRING_PROFILES_ACTIVE |
Perfil de Spring activo | — |
JAVA_OPTS |
Opciones de JVM | -Xms256m -Xmx512m -XX:+UseG1GC |
| Propiedad | Valor |
|---|---|
server.port |
8081 |
spring.datasource.url |
jdbc:h2:mem:taskdb (H2 en memoria) |
spring.jpa.hibernate.ddl-auto |
create-drop |
Los datos se pierden al reiniciar la aplicación (base de datos en memoria).
El proyecto incluye dos workflows de GitHub Actions:
ci.yml: Compilación, tests y build de imagen Docker.code-quality.yml: Checkstyle, SpotBugs, CodeQL y OWASP Dependency Check.
Desarrollado por el equipo de ED-Claude.
Este proyecto está bajo la licencia MIT.