Imagem de capa do projeto: Nexus Inngest EM ANDAMENTO

Resumo técnico

Plugin do NEXUS (categoria Automation & Workflows) que integra o Inngest: enquanto as functions (steps) vivem no seu app Inngest (SDK / Dev Server, app.inngest.com — free: 5.000 steps/mês), o NEXUS orquestra eventos, runs, retries e o gatilho a partir de tarefas — mantendo o catálogo local de workflows e um histórico de até 80 disparos. Alinha com o princípio de que o workflow/CI dispara e o plugin é a fonte da verdade, mas aqui o gatilho inverso: tarefas NEXUS → evento Inngest.

Escopo executado

  • Backend backend.php (661 linhas): inngest_config() em DB::getConfig('plugin.inngest') com enabled, app_id='nexus', event_key/signing_key/api_key, event_url=https://inn.gs/e, api_url=https://api.inngest.com, default_retries=3, auto_trigger_on_task=false, branch_env.
  • Config sem tabelas (admin_configs): chaves plugin.inngest, plugin.inngest.workflows, plugin.inngest.history (80 últimos disparos).
  • inngest_public_config() máscara todos os secrets (*_{set}/*_{masked}, 6+…+4) — valores completos nunca saem na UI.
  • Catálogo local inngest_workflows_all() → defaults wf_task_updated (evento nexus/task.updated, sequential, 3 retries, steps receive→enrich→notify) e wf_manual_run (evento nexus/manual.run, parallel, 2 retries, Branch A/B).
  • inngest_send_event: POST na Event API (https://inn.gs/e/{event_key} ou /e/ no Dev Server localhost) com name/data/ts/id (dedupe) + header x-inngest-env (branch_env); grava em history.
  • inngest_workflow_run: resolve o workflow pelo id (ou evento arbitrário), injeta data.nexus (app_id, triggered_at, workflow_id/name, mode, steps, retries) e delega para inngest_send_event.
  • inngest_trigger_task: pega a tarefa NEXUS (SELECT ... FROM tasks WHERE id=?) e dispara wf_task_updated (nexus/task.updated) com o payload da task + dedupe_id nexus-task-{id}-{timestamp}.
  • inngest_workflow_status: GET {api_url}/v1/events/{event_id}/runs?include_output= (Bearer = API key ou Signing key) com fallback /v2/ quando o v1 falha.
  • inngest_test_connection: smoke test enviando evento nexus/inngest.ping com id nexus-ping-{timestamp}.
  • API: 11 actions via PluginManager::registerApiAction — inngest_dashboard, inngest_settings_save, inngest_workflows_list, inngest_workflow_save, inngest_workflow_delete, inngest_workflow_run, inngest_workflow_status, inngest_send, inngest_trigger_task, inngest_test, inngest_fastr (session/Bearer + CSRF).
  • UI Alpine.js (tab.php, 397 linhas): 5 abas (Dashboard/Workflows/Executar/Monitor/Config), badge online/amarelo/vermelho, stats (Workflows/Disparos/OK/Falhas), formulário de workflow (modo, retries, steps em textarea id|nome), formulário de config com máscaras de keys e box "Como obter a API Key".
  • Comando fastr /inngest (inngest_fastr, pass_task_id=true): list, workflow id/evento (dispara run) ou status <event_id>; sem arg + tarefa aberta → inngest_trigger_task.

Stack e ferramentas

  • PHP 8 (sem framework)
  • MySQL 8 (config e histórico em admin_configs; sem tabelas dedicadas)
  • Alpine.js + Tailwind CSS
  • Sistema de plugins do NEXUS (PluginManager)
  • Integração HTTP native com a API pública do Inngest (CURL)

Tags operacionais

  • Inngest
  • Workflows
  • Serverless

Resultado operacional

  • Fechamento do ciclo tarefa→workflow: uma mudança em uma tarefa NEXUS pode disparar automaticamente um workflow Inngest (nexus/task.updated) via auto_trigger_on_task, enviando o payload da task como contexto.
  • Dois canais de disparo: workflow do catálogo local (evento mapeado) ou evento arbitrário (/inngest <evento>), com retries configuráveis por workflow (clamp 0–20).
  • Visibilidade de runs: o painel Monitor consulta /v1/events/{id}/runs (com fallback /v2/) usando Signing ou API Key, sem sair do NEXUS.
  • Segurança de secrets: nenhuma key aparece em texto plano na UI ou no histórico — apenas máscaras e flags *_set; Dev Server localhost dispensa Event Key.
  • Smoke test integrado (nexus/inngest.ping) valida a configuração do Event URL/key com um clique.

Andamento no GitHub (issues)

Painel em tempo real com as issues mais recentes do repositório.

abertas (amostra): -- fechadas (amostra): -- base: -- ultimas issues

carregando andamento...

Resultados reais

Plugin do NEXUS que integra Inngest para workflows duradouros serverless — eventos, runs, retries e disparo a partir de tarefas NEXUS, com catálogo local de workflows e histórico de disparos.

Arquitetura e organização

Execução e operação

O projeto segue fluxo reprodutível de execução com validação técnica em ambiente de produção/similar.

Screenshots

Falar sobre este projeto

Aplique este modelo no seu ambiente e acelere a entrega com consistência técnica.