Desarrollar un sistema backend con Java y Spring Boot que permita gestionar proyectos y tareas colaborativas entre usuarios, aplicando buenas prácticas como arquitectura en capas, DTOs, manejo de errores, autenticación JWT, validaciones, y más.
Funcionalidades:
- Registro de usuario (
POST /auth/register) - Login de usuario (
POST /auth/login) - Obtener perfil actual (
GET /users/me) - Listar todos los usuarios (admin) (
GET /users)
Campos de Usuario:
- id (Long)
- nombre (String)
- correo (String)
- contraseña (String) → cifrada
- rol (enum:
USER,ADMIN) - fecha_creación (DateTime)
Funcionalidades:
- Crear proyecto (
POST /projects) - Obtener todos los proyectos del usuario actual (
GET /projects) - Ver detalles de un proyecto (
GET /projects/{id}) - Editar proyecto (
PUT /projects/{id}) - Eliminar proyecto (
DELETE /projects/{id})
Campos de Proyecto:
- id (Long)
- nombre (String)
- descripción (String)
- fecha_creación (DateTime)
- creado_por (id usuario)
Funcionalidades:
- Crear tarea en un proyecto (
POST /projects/{id}/tasks) - Ver tareas de un proyecto (
GET /projects/{id}/tasks) - Asignar tarea a un usuario (
PUT /tasks/{id}/assign) - Cambiar estado de una tarea (
PUT /tasks/{id}/status) - Editar tarea (
PUT /tasks/{id}) - Eliminar tarea (
DELETE /tasks/{id})
Campos de Tarea:
- id (Long)
- título (String)
- descripción (String)
- estado (enum:
PENDIENTE,EN_PROCESO,FINALIZADA) - proyecto_id (Long)
- asignado_a (id usuario)
- fecha_creación (DateTime)
- fecha_entrega (DateTime opcional)
- Al autenticarse, el usuario recibe un token JWT.
- Los endpoints protegidos requieren token válido en
Authorization: Bearer <token>.
USER: Puede gestionar sus propios proyectos y tareas.ADMIN: Puede ver todos los usuarios y todos los proyectos.
- Campos obligatorios (
@NotNull,@NotBlank) - Longitud mínima y máxima (
@Size) - Correos válidos (
@Email)
El sistema está basado en una arquitectura en capas, separando controladores, servicios, repositorios y modelos. Se emplean DTOs para la transferencia de datos y se implementa manejo de errores global.
| Método | Ruta | Descripción |
|---|---|---|
| POST | api/auth/register | Registrar un nuevo usuario (sin protección) |
| POST | api/auth/login | Iniciar sesión (sin protección) |
| # | Método | Ruta | Descripción |
|---|---|---|---|
| 1 | GET | api/client/all | Recuperar todos los clientes |
| 2 | GET | api/client/{id} | Obtener cliente por su ID |
| 3 | GET | api/client/rol/{client} | Obtener cliente por rol |
| 4 | GET | api/client/exists/{id} | Verificar si un cliente existe |
| 5 | POST | api/client/create/ | Crear un nuevo cliente |
| 6 | PUT | api/client/create/{id} | Modificar un cliente existente |
| 7 | DELETE | api/client/{id} | Eliminar un cliente por la ID |
| # | Método | Ruta | Descripción |
|---|---|---|---|
| 1 | POST | api/project/create/{client_id} | Crear un nuevo proyecto |
| 2 | GET | api/project/read/{client_id} | Leer todos los proyectos del cliente |
| 3 | GET | api/project/read/{client_id}/{id} | Leer un proyecto específico por ID |
| 4 | PUT | api/project/update/{client_id}/{id} | Actualizar proyecto existente |
| 5 | DELETE | api/project/delete/{client_id}/{id} | Eliminar proyecto por ID |
El repositorio contiene varios subproyectos Spring Boot, cada uno con su propio propósito:
- crudtask/: CRUD básico de tareas y proyectos.
- HttpBasic/: Ejemplo de autenticación HTTP básica.
- JWT/jwtproject/: Implementación de autenticación JWT.
- Middlewares/: Ejemplo de middlewares personalizados.
- notionconcept/: Conceptos y ejemplos de seguridad en Spring.
- OAuth2/OAuth2/: Ejemplo de autenticación OAuth2.
- spring-example/: Ejemplo base de Spring Boot.
- taskWorkFlow/workflow/: Proyecto principal de gestión de tareas colaborativas.
Cada subproyecto incluye su propio pom.xml, código fuente en src/main/java, recursos en src/main/resources y pruebas en src/test/java.
Para ejecutar cualquier subproyecto:
- Accede al directorio del subproyecto.
- Ejecuta:
./mvnw spring-boot:run
Para ejecutar pruebas:
- Accede al directorio del subproyecto.
- Ejecuta:
./mvnw test
- Java 17+
- Spring Boot
- Spring Security
- JWT
- OAuth2
- PostgreSQL
- Maven
- El sistema está preparado para ampliaciones y nuevas funcionalidades.
- Se recomienda revisar los archivos
Endpoints.mdyrequeriments.mdentaskWorkFlow/workflow/para más detalles técnicos y funcionales.