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.phpbackend (661 lines):inngest_config()inDB::getConfig('plugin.inngest')withenabled,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): keysplugin.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()→ defaultswf_task_updated(eventnexus/task.updated, sequential, 3 retries, steps receive→enrich→notify) andwf_manual_run(eventnexus/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) withname/data/ts/id(dedupe) +x-inngest-envheader (branch_env); recorded in history.inngest_workflow_run: resolves the workflow byid(or arbitrary event), injectsdata.nexus(app_id, triggered_at, workflow_id/name, mode, steps, retries) and delegates toinngest_send_event.inngest_trigger_task: fetches a NEXUS task (SELECT ... FROM tasks WHERE id=?) and triggerswf_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 eventnexus/inngest.pingwithid 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 inid|nametextarea), config form with masked keys and a "How to get the API Key" box. - fastr
/inngestcommand (inngest_fastr,pass_task_id=true):list, workflow id/event (triggers a run) orstatus <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) viaauto_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
*_setflags; 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.
live feed
open issues on GitHubcarregando andamento...
não foi possivel carregar as issues agora. abra no github pelo link acima.
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
- PHP 8
- MySQL 8
- Alpine.js
- Tailwind CSS
- Plugin NEXUS
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.