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()emDB::getConfig('plugin.inngest')comenabled,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): chavesplugin.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()→ defaultswf_task_updated(eventonexus/task.updated, sequential, 3 retries, steps receive→enrich→notify) ewf_manual_run(eventonexus/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) comname/data/ts/id(dedupe) + headerx-inngest-env(branch_env); grava em history.inngest_workflow_run: resolve o workflow peloid(ou evento arbitrário), injetadata.nexus(app_id, triggered_at, workflow_id/name, mode, steps, retries) e delega parainngest_send_event.inngest_trigger_task: pega a tarefa NEXUS (SELECT ... FROM tasks WHERE id=?) e disparawf_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 eventonexus/inngest.pingcomid 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 textareaid|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) oustatus <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) viaauto_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.
live feed
abrir issues no githubcarregando andamento...
não foi possivel carregar as issues agora. abra no github pelo link acima.
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
- PHP 8
- MySQL 8
- Alpine.js
- Tailwind CSS
- Plugin NEXUS
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.