Backend REST robusto y escalable para una plataforma avanzada de gestión de proyectos estilo Kanban / Agile, construida con Java 21 y Spring Boot 3.5, aplicando arquitectura modular con Spring Modulith, principios de Clean Architecture y el patrón CQRS.
NexBoard está diseñado como el núcleo backend de un ecosistema moderno de colaboración, tableros, tareas, mensajería y notificaciones en tiempo real.
- 📌 Descripción General
- 🧠 Principios de Arquitectura
- 📌 Estado Actual del Proyecto
- ✨ Features Principales
- 🧩 Roadmap
- ⚙️ Stack Tecnológico
- 🏛️ Arquitectura General
- 📂 Arquitectura de Directorios (Spring Modulith)
- 🚀 Despliegue y Ejecución Local
NexBoard es el núcleo backend (API Rest) de una plataforma avanzada de gestión de proyectos, colaboración y tareas inspirada en metodologías Kanban y Agile.
El sistema fue diseñado desde cero para ser robusto, escalable, modular y mantenible, utilizando un enfoque moderno basado en Java 21, Spring Boot 3.5, y un ecosistema modular implementado con Spring Modulith (microservicios lógicos dentro de un único despliegue).
El proyecto está construido bajo pilares sólidos:
- Clean Architecture: reglas de negocio aisladas, desacoplamiento de infraestructura y alta testabilidad.
- CQRS (Command Query Responsibility Segregation): separación estricta entre escritura (Commands) y lectura (Queries).
- Modularización fuerte con Spring Modulith: dominios independientes y organizados por contexto.
- Diseño orientado a dominio (DDD-like): cada módulo encapsula su propia lógica.
Esto permite que NexBoard evolucione hacia un ecosistema enterprise sin perder control estructural.
📍 Versión: 0.0.1-SNAPSHOT
📍 Fase: Alpha / En Desarrollo activo
📍 Objetivo actual: construir bases sólidas intermodulares antes de integrar funcionalidades complejas.
- Autenticación robusta con JWT y Spring Security
- Arquitectura modular con Spring Modulith
- Implementación CQRS para todos los casos de uso principales
- Persistencia sólida con PostgreSQL + JPA + Hibernate
- Dominio desacoplado con enfoque Clean Architecture
- Chat modular integrado (WebSockets + Persistencia)
- Documentación automática vía Swagger / OpenAPI
- Auth Module (Spring Security + JWT)
- Boards Module (dominio + CQRS + controladores + persistencia)
- Workspaces Module (dominio + CQRS + controladores + persistencia)
- Sistema de permisos y roles por workspace
- Chat Module (CQRS + WebSockets + persistencia + endpoints)
- Cards / Lists (core Kanban: columnas, mover tarjetas, flujo de trabajo)
- Tasks (subtareas, checklists, asignaciones internas)
- Notifications Module (eventos en tiempo real + colas diferidas)
- Comments / Mentions (interacción avanzada dentro de tarjetas)
- Deadlines & Scheduling (fechas de vencimiento + recordatorios)
- Auditoría de eventos del sistema
Tecnologías principales utilizadas:
- Lenguaje: Java 21 (Records, Pattern Matching, Virtual Threads)
- Framework Principal: Spring Boot 3.5.7
- Arquitectura Interna: Spring Modulith + Clean Architecture + CQRS
- Seguridad: Spring Security + JWT (
jjwt) - Persistencia: PostgreSQL + Spring Data JPA + Hibernate
- Tipos avanzados DB: Hibernate Types (
vladmihalcea) - Mapeo DTO: MapStruct
- Utilidades: Lombok
- Jobs / Background Tasks: Quartz Scheduler
- Documentación API: Springdoc OpenAPI (Swagger UI WebMVC)
- Testing: Spring Boot Test + Spring Modulith Test + Spring Security Test
El flujo interno de la aplicación sigue una estructura limpia y desacoplada:
Client (Angular / React / Mobile)
|
v
REST Controllers (Web Layer)
|
v
Use Cases (CQRS Handlers)
| |
Commands Queries
| |
v v
Domain Model Read Model
|
v
Infrastructure (JPA + PostgreSQL)
Todo el código fuente se encapsula lógicamente en módulos independientes y funcionales respetando estrictamente la filosofía Modulith. Cada contexto (ej. auth, board, workspace, chat) mantiene su autonomía encapsulando su propio dominio e infraestructura:
src/main/java/com/pck4x/task_manager/
├── config/ # Configuraciones de seguridad, filtros, manejo de errores de cruce modular
└── modules/ # Contextos (Módulos de la aplicación base)
├── auth/ # Módulo Core de Autenticación, Logins, Gestión del Usuario
├── workspace/ # Módulo Core de Entornos/Empresas y Espacios de Trabajo
├── board/ # Módulo de Tableros (Proyectos específicos dentro del Workspace)
└── chat/ # Módulo de mensajería (Websockets / Persistencia de la comunicación)
├── controllers/ # Controladores REST (Exposición hacia el exterior)
├── domain/ # Entidades Core y Clases Portadoras de Reglas de Negocio Puras
├── infrastructure/ # Persistencia DB, Repositorios JPA y Mappers de Implementación
├── interfaces/ # Contratos, Puertos e Interfaces para inyección de dependencias
├── objects/dtos/ # Modelos de entrada (Peticiones) y salida (Respuestas)
└── use_cases/ # Inteligencia de la Aplicación y Manejadores CQRS aislados
- Pre-requisitos ambientales: Asegúrate de tener instalado Java 21, Maven, y un motor PostgreSQL activo escuchando conexiones locales.
- Clona el repositorio oficial de este sistema en tu máquina. Navega a través de la terminal hasta encontrar el archivo
pom.xmlen la raíz (task-manager). - Revisa, edita o sobrescribe temporalmente tus credenciales (URL, User, Pass) de conexión a PostgreSQL editando el archivo
application.ymluapplication.propertiescorrespondiente en la rutasrc/main/resources. - Ejecuta el empaque inicial ordenando al compilador que limpie el entorno, compile binarios estables, y baje dependencias (sin interrupciones por pruebas si es ambiente rápido):
./mvnw clean install -DskipTests
- Inicia el ecosistema y despliega el contenedor de Servlets incrustado tomcat de Spring Boot:
./mvnw spring-boot:run
- Si el levantamiento ha resultado un éxito, dirígete mediante tu navegador favorito al panel de Swagger, habitualmente publicitado en la dirección
http://localhost:8080/swagger-ui.htmlpara interactuar gráficamente con cada endpoint disponible.