Files
task-stream/docs
Josep Piguillem a32c937765 fix(api): a read-side failure waits for its event instead of losing it
The Redis consumer used to leave a failed event pending and go on to the
next ones, retrying it only at the next start. With Mongo down for a
while, a later change of the same ticket was then projected first, and
the version check dropped the earlier one for good (a status change
could vanish from the read model), besides the read side lagging until
a restart.

Now a failed event is retried in place, waiting longer each time (up to
30 s), and the next one waits for it. Failures of the infrastructure
(Mongo, Redis, the network: isTransientError) wait as long as it takes,
so the read side catches up by itself; an event that keeps failing on
its own goes, after 5 attempts, to <stream>:dead with its error, so it
does not hold up the rest.

GET /api/health reports the way from write to read (events waiting in
the outbox, pending to be projected, set aside) and says `degraded`,
still with 200, when something is stuck.

Tried for real: with Mongo stopped, two status changes went in; the
first failed to project with ECONNREFUSED, and once Mongo was back the
ticket's history had both steps, in order, without restarting the API.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 22:24:19 +02:00
..
2026-10-09 21:42:54 +02:00

Documentación de TaskStream

TaskStream es una alternativa a Jira para equipos de desarrollo: proyectos, tickets (bugs, features, cambios de UI, tareas, QA), releases, comentarios y relaciones entre tickets, todo en tiempo real.

Documento Para qué
1. Visión general Qué hace el producto, stack y estructura del monorepo
2. Arquitectura Hexagonal, CQRS, event sourcing, flujo escritura → lectura y tiempo real
3. API Dominio (agregados, workflow, eventos) y la API GraphQL
4. Cliente web Angular, NgRx Signals con eventos, GraphQL y @pi/ui
5. Autenticación Pireon: tokens, login en el navegador, sesiones y webhooks
6. Desarrollo Puesta en marcha, comandos, tests y cómo añadir una funcionalidad
7. Despliegue Docker, variables de entorno y escalado
8. Decisiones Por qué está hecho así (y qué alternativas se descartaron)
9. Servidor MCP Usar TaskStream desde asistentes de IA (Claude…): herramientas y conexión
10. Lo que queda Pendiente para cerrar, fallos conocidos, siguientes funcionalidades y lo descartado

Cada librería de libs/ tiene además su propio README.md con su responsabilidad y su contenido.

Empezar rápido

docker compose up -d --build     # web en http://localhost:8080

Para entrar hacen falta dos clientes OAuth de Pireon en .env (authorization_code y password, ver Autenticación).