Skip to content

BR7FORLIFE/PosgreSQL-with-Linux-Debian

Repository files navigation

📌 Proyecto Backend: TaskFlow - Gestor de Tareas Colaborativo

🎯 Objetivo General

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.


🧩 Módulos del Sistema

1. 👤 Módulo de Usuarios

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)

2. 📁 Módulo de Proyectos

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)

3. ✅ Módulo de Tareas

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)

🔐 Seguridad y Autenticación

JWT (JSON Web Tokens)

  • Al autenticarse, el usuario recibe un token JWT.
  • Los endpoints protegidos requieren token válido en Authorization: Bearer <token>.

Roles

  • USER: Puede gestionar sus propios proyectos y tareas.
  • ADMIN: Puede ver todos los usuarios y todos los proyectos.

🧠 Validaciones

Validaciones con @Valid

  • Campos obligatorios (@NotNull, @NotBlank)
  • Longitud mínima y máxima (@Size)
  • Correos válidos (@Email)

🧱 Arquitectura Sugerida

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.


🚀 ENDPOINTS PRINCIPALES

🔐 1. ENDPOINT - AUTH

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)

👤 2. ENDPOINT - CLIENT

# 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

📂 3. ENDPOINT - PROJECT/TASK

# 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

📦 Estructura del Repositorio

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.


🛠️ Ejecución y Pruebas

Para ejecutar cualquier subproyecto:

  1. Accede al directorio del subproyecto.
  2. Ejecuta: ./mvnw spring-boot:run

Para ejecutar pruebas:

  1. Accede al directorio del subproyecto.
  2. Ejecuta: ./mvnw test

📚 Tecnologías Utilizadas

  • Java 17+
  • Spring Boot
  • Spring Security
  • JWT
  • OAuth2
  • PostgreSQL
  • Maven

📄 Notas Adicionales

  • El sistema está preparado para ampliaciones y nuevas funcionalidades.
  • Se recomienda revisar los archivos Endpoints.md y requeriments.md en taskWorkFlow/workflow/ para más detalles técnicos y funcionales.

About

Este repositorio reúne una colección de proyectos y ejemplos prácticos construidos con Spring Boot, conectados a PostgreSQL y acompañados de comandos esenciales para entornos Linux Debian, incluyendo Bash y Zsh.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages