Cover image for project: Nexus Inngest IN PROGRESS

Technical summary

NEXUS plugin (Automation & Workflows category) that integrates Inngest: while functions (steps) live in your Inngest app (SDK / Dev Server, app.inngest.com — free: 5.000 steps/month), the NEXUS plugin orchestrates events, runs, retries and triggers from NEXUS tasks — keeping a local workflow catalog and a send-history of up to 80 entries. It follows the principle that the workflow/CI is the source of truth, but here the trigger is reversed: NEXUS tasks → Inngest event.

Executed scope

  • backend.php backend (661 lines): inngest_config() in DB::getConfig('plugin.inngest') with 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 without tables (admin_configs): keys plugin.inngest, plugin.inngest.workflows, plugin.inngest.history (last 80 sends).
  • inngest_public_config() masks every secret (*_{set}/*_{masked}, 6+…+4) — full values never leave the UI.
  • Local catalog inngest_workflows_all() → defaults wf_task_updated (event nexus/task.updated, sequential, 3 retries, steps receive→enrich→notify) and wf_manual_run (event nexus/manual.run, parallel, 2 retries, Branch A/B).
  • inngest_send_event: POST to the Event API (https://inn.gs/e/{event_key} or /e/ on localhost Dev Server) with name/data/ts/id (dedupe) + x-inngest-env header (branch_env); recorded in history.
  • inngest_workflow_run: resolves the workflow by id (or arbitrary event), injects data.nexus (app_id, triggered_at, workflow_id/name, mode, steps, retries) and delegates to inngest_send_event.
  • inngest_trigger_task: fetches a NEXUS task (SELECT ... FROM tasks WHERE id=?) and triggers wf_task_updated (nexus/task.updated) with the task payload + dedupe_id nexus-task-{id}-{timestamp}.
  • inngest_workflow_status: GET {api_url}/v1/events/{event_id}/runs?include_output= (Bearer = API key or Signing key) with /v2/ fallback when v1 fails.
  • inngest_test_connection: smoke test sending event nexus/inngest.ping with 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).
  • Alpine.js UI (tab.php, 397 lines): 5 tabs (Dashboard/Workflows/Run/Monitor/Config), online/amber/red badge, stats (Workflows/Sends/OK/Failed), workflow form (mode, retries, steps in id|name textarea), config form with masked keys and a "How to get the API Key" box.
  • fastr /inngest command (inngest_fastr, pass_task_id=true): list, workflow id/event (triggers a run) or status <event_id>; with no arg + open task → inngest_trigger_task.

Stack and tooling

  • PHP 8 (no framework)
  • MySQL 8 (config and history in admin_configs; no dedicated tables)
  • Alpine.js + Tailwind CSS
  • NEXUS plugin system (PluginManager)
  • Native HTTP integration with the Inngest public API (CURL)

Operational tags

  • Inngest
  • Workflows
  • Serverless
  • DevOps

Operational outcome

  • Closes the task→workflow loop: a change in a NEXUS task can automatically trigger an Inngest workflow (nexus/task.updated) via auto_trigger_on_task, sending the task payload as context.
  • Two trigger channels: catalog workflow (mapped event) or arbitrary event (/inngest <event>), with per-workflow retries (0–20 clamp).
  • Run visibility: the Monitor tab queries /v1/events/{id}/runs (with /v2/ fallback) using Signing or API Key, without leaving NEXUS.
  • Secret safety: no key is ever shown in plain text in the UI or history — only masks and *_set flags; the localhost Dev Server dispenses with the Event Key.
  • Built-in smoke test (nexus/inngest.ping) validates the Event URL/key config with a single click.

GitHub progress (issues)

Real-time panel with latest repository issues.

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

carregando andamento...

Real results

NEXUS plugin that integrates Inngest for durable serverless workflows — events, runs, retries and task-triggered execution, with a local workflow catalog and send history.

Architecture and organization

Execution and operations

The project follows reproducible execution flow with technical validation in production-like environments.

Screenshots

Talk about this project

Apply this implementation pattern in your environment and accelerate delivery with technical consistency.