Plan — TaskFlow

Volver a README · 08 Proyectos

Objetivo: construir una plataforma donde un usuario cree automatizaciones (trigger → condiciones → acciones) que se ejecuten por webhook, cron o evento interno, con historial y reintentos.

Estado: planificación. Proyecto de cierre en 4 semanas.

1. Alcance

  1. Registro e inicio de sesión con JWT.
  2. Workspaces con miembros y roles.
  3. CRUD de automatizaciones.
  4. API keys por workspace.
  5. Webhook receiver con validación HMAC.
  6. Scheduler cron para automatizaciones programadas.
  7. Cola de ejecución con reintentos y dead-letter queue.
  8. Historial de ejecuciones con logs.
  9. Dashboard con estado de automatizaciones.

2. Fuera de alcance

  • Marketplace de plantillas.
  • Facturación.
  • Editor visual drag-and-drop.
  • Integraciones OAuth con terceros (solo webhooks y HTTP).
  • Notificaciones push.

3. Arquitectura

Next.js (dashboard)
        │
        ▼
API NestJS ──────────────► PostgreSQL
   │  ▲
   │  └── Webhook receiver (HMAC)
   ▼
Redis + BullMQ
   │
   ▼
Worker (NestJS) ──► acciones: HTTP, email, Slack/Discord, DB
   │
   ▼
run_logs

4. Modelo de datos

TablaCampos principales
usersid, email, password_hash, created_at
workspacesid, name, owner_id, created_at
workspace_membersworkspace_id, user_id, role
api_keysid, workspace_id, name, key_hash, last_used_at
automationsid, workspace_id, name, trigger_type, trigger_config, conditions, actions, enabled
webhook_endpointsid, workspace_id, automation_id, path, secret
runsid, automation_id, status, started_at, finished_at, error
run_logsid, run_id, level, message, created_at

5. Componentes

ComponenteResponsabilidad
AuthRegistro, login, JWT y roles
WorkspacesAislamiento de datos por workspace
AutomationsCRUD y validación de reglas
Webhook receiverValidar HMAC y encolar la ejecución
SchedulerDisparar automatizaciones cron
Execution engineEvaluar condiciones y ejecutar acciones
QueueReintentos, backoff y dead-letter queue
RunsHistorial y logs por ejecución
DashboardCrear, activar y monitorear automatizaciones

6. Hitos

SemanaEntregableCriterio de cierre
1Auth + workspaces + CRUD de automatizaciones + DBSe crea un workspace y una automatización desde la API
2Webhook receiver + scheduler + cola BullMQUn webhook válido encola y ejecuta una acción HTTP
3Motor de ejecución + acciones + logs + reintentosUna ejecución fallida se reintenta y queda registrada
4Dashboard + Docker + CI/CD + deploy + docs + demoURL pública con flujo completo y CI verde

7. Criterios de aceptación

  • Registro e inicio de sesión.
  • Workspace con al menos un miembro.
  • Crear automatización con trigger webhook y acción HTTP.
  • Un webhook con firma inválida se rechaza.
  • Un webhook válido genera una ejecución.
  • La ejecución aparece en el historial con logs.
  • Una acción fallida se reintenta.
  • Tests >70% en backend.
  • CI verde.
  • README con capturas y URL de demo.

8. Decisiones técnicas

  • TypeScript + NestJS: un solo lenguaje, modular y con inyección de dependencias.
  • PostgreSQL: reglas y ejecuciones son datos relacionales; JSONB para configuración flexible.
  • Redis + BullMQ: reintentos, backoff y DLQ sin reinventar la cola.
  • Webhooks con HMAC: evita ejecuciones falsas.
  • Worker separado: aísla el trabajo pesado de la API.
  • Next.js: dashboard rápido y desplegable en Vercel o Cloudflare Pages.

9. Riesgos

RiesgoMitigación
Scope creep en integracionesLimitar acciones a HTTP, email y Slack/Discord
Webhooks duplicadosIdempotency key por ejecución
Fallos de tercerosReintentos con backoff y DLQ
Seguridad de API keysGuardar solo hash y mostrar la key una vez
Tiempo insuficientePriorizar webhook + HTTP y dejar cron como segundo paso

10. Próximo paso

  1. Inicializar monorepo y Git.
  2. Crear el esquema de base de datos y las migraciones.
  3. Implementar auth y workspaces.
  4. Crear el CRUD de automatizaciones.
  5. Primer commit con README y CI mínima.

Enlaces