Files
task-stream/docs/01-vision-general.md
2026-10-03 13:40:26 +02:00

4.4 KiB
Raw Permalink Blame History

1. Visión general

Qué resuelve

Necesidad Cómo se resuelve
🐛 Bugs Tickets de tipo BUG con prioridad, área y etiquetas
🎨 Cambios de UI Tipo UI_CHANGE con enlace al frame de Figma (validado contra figma.com)
⚙️ Features Tipo FEATURE siguiendo el workflow completo
🧪 QA Estados READY_FOR_QA → IN_QA → DONE / QA_FAILED; fallar QA exige un motivo
🚀 Releases Versiones a las que se asignan tickets; no se publican con tickets sin terminar (salvo forzando)
👥 Asignaciones Solo a miembros del proyecto; panel de carga por persona
💬 Comentarios Decisiones y explicaciones dentro del ticket; el autor edita, el admin modera
🔗 Relaciones BLOCKS, DEPENDS_ON, TESTS, DUPLICATES, RELATES_TO, también entre proyectos (FE ↔ BE ↔ QA)
📊 Seguimiento Panel con contadores, gráfico por estado, carga por persona, feed de actividad e historial por ticket
⚡ Tiempo real Tablero, comentarios, actividad, releases y membresías se actualizan solos (GraphQL subscriptions)

Los usuarios no se gestionan aquí: vienen del servidor de identidad Pireon (Swagger). TaskStream gestiona proyectos, membresías y roles por proyecto (OWNER, ADMIN, MEMBER, VIEWER).

Stack

Pieza Tecnología
Monorepo Nx 23
API NestJS 11, @nestjs/cqrs, GraphQL (Apollo Server 5, code-first) con subscriptions graphql-ws
Escritura PostgreSQL 17: event store + tablas de lookup (TypeORM)
Escritura → lectura Redis 7: Redis Stream (eventos) y pub/sub (tiempo real); también caché de sesiones
Lectura MongoDB 8: vistas desnormalizadas (Mongoose)
Identidad Pireon (OAuth2 / Laravel Passport)
Cliente Angular 22 (standalone, zoneless, Signal Forms), NgRx Signals (plugin de eventos), Apollo Angular, @pi/ui
Tests Jest (API), Vitest (web), e2e de la API contra Docker
Despliegue Docker: imagen Node de la API y nginx para la web

Estructura del monorepo

apps/
  api/          composición de la API (NestJS): config, GraphQL, conexiones, e2e
  web/          composición del cliente (Angular): rutas, providers, estilos, nginx
libs/
  api/{shared,identity,tracker}/{domain,application,infrastructure,presenters}
  web/{shared,identity,tracker}/{domain,application,infrastructure,presenters}   (+ web/shared/ui)
docs/           esta documentación
codegen.ts      tipos GraphQL del cliente generados desde apps/api/schema.gql
Dockerfile      dos destinos: api y web
docker-compose.yml

API y web comparten la misma estructura: contexto (shared, identity, tracker) × capa (domain, application, infrastructure, presenters). Los imports siguen el mismo patrón: @task-stream/api/tracker/domain, @task-stream/web/tracker/application…

Contextos

  • shared: piezas comunes. En la API, event store, Redis, VersionedAggregateRoot, errores de dominio. En la web, el cliente GraphQL y la integración de @pi/ui.
  • identity: quién es el usuario (Pireon), sesiones, inicio de sesión y autorización global.
  • tracker: el producto (proyectos, tickets, comentarios, releases, actividad).