Cover image for project: Novu IN PROGRESS

Technical summary

Novu (multi-channel notification hub) integration to trigger workflows over email, SMS, push, in-app, Discord, Telegram, Slack and Teams — with remote workflow, subscriber and integration management, local history in novu_events, notify.php bridge and the /novu chat command.

Executed scope

  • plugin.json: v1.0.0, slug novu (no legacy_slugs), name "Novu", "Notifications" category, is_core: false, public author_url and website (perciocastelo.com.br).
  • Lazy schema (novu_install(), CREATE TABLE IF NOT EXISTS with static $done and try/catch) — novu_events (id PK, transaction_id, workflow, subscriber_id, status default queued, channel_hint, payload_json/response_json MEDIUMTEXT, error, source default ui, created_at; idx_novu_created/idx_novu_workflow/idx_novu_status indexes; InnoDB utf8mb4_general_ci).
  • Config (plugin.novu) — enabled, api_key, base_url (api.novu.co/v1), region (us|eu|custom), default_workflow (security-critical), default_subscriber, log_events.
  • Admin bridge — novu_get_config() fills the plugin from notifications.novu_* when empty; novu_save_config() mirrors into system_settings.notifications.novu_* (notify.php integration).
  • Secret protected — novu_public_config() returns the API Key masked (XXXX…XXXX or ••••) and novu_save_config() ignores masked placeholders (with clear_api_key support).
  • HTTP (novu_request) — cURL REST with Authorization: ApiKey, 30s timeout / 8s connect, SSL per the SSL_VERIFY constant and error extraction (message/error/errorMessage/errors).
  • Trigger (novu_trigger) — POST /events/trigger (name, to.subscriberId, payload, optional transactionId); subscriber fallback notifications.admin_email or nexus-admin; force bypasses enabled; logs into novu_events.
  • Remote management — workflows (limit 1–100 with notification-templates fallback), subscribers (list/create, pagination), integrations (active channels/providers) and connection test (cascade /workflows → /notification-templates → /integrations).
  • Dashboard (novu_dashboard) — local stats (total/ok/error via GROUP BY status) + online status + remote workflows (20) + active integrations.
  • Local history (novu_local_history) — latest events with status, channel_hint, source and error.
  • Fastr — /novu (no argument → markdown summary; with workflow subscriber key=val&k2=v2 → trigger with parse_str payload); default + remote workflow suggestions (up to 8).
  • Intel Hub — novu enricher (_text field, priority 58): detects novu://workflow-id in descriptions/comments → novu_workflow signal (info) with /novu <workflow> <subscriber> hint.
  • API: 13 actions — novu_dashboard, novu_settings_get, novu_settings_save, novu_test_connection, novu_trigger (source: ui, force: true), novu_workflows, novu_subscribers, novu_subscriber_create, novu_integrations, novu_history, novu_fastr, novu_fastr_suggest.
  • UI (tab.php, 18 KB, slate + blue-600 theme, "Comunicação" group) — Trigger / Workflows / Subscribers / Config sub-tabs: "Disparar notificação" card (workflow, subscriber, payload) with blue-600 "Disparar" button and "Enviando…" state, online/offline status, remote workflows with "Recarregar", subscriber creation, config with masked API Key and connection test.
  • No cron and no migrations.
  • notify.php bridge — notify_novu_trigger() delegates to novu_trigger() (security-critical alerts) when the plugin is loaded.

Stack and tools

  • PHP 8 (no framework, strict_types)
  • MySQL 8 (novu_events)
  • Alpine.js + Tailwind CSS (premium light, slate/blue)
  • cURL + Novu REST API (ApiKey auth)
  • NEXUS plugin system (PluginManager: tabs, docs, API actions, Fastr, Intel enrichers)

Operational tags

  • Notificações
  • Multi-canal
  • Novu
  • Workflows
  • Subscribers
  • Eventos
  • Email
  • SMS
  • Plugin NEXUS

Operational result

  • Multi-channel hub: one trigger delivers email, SMS, push, in-app, Discord, Telegram, Slack and Teams (channels configured in the Novu dashboard).
  • Secret never exposed: the API Key is masked in the UI/public API; masked placeholders never overwrite the secret on save.
  • Local traceability: every trigger is recorded in novu_events (payload, response, error, source and transaction_id).
  • Centralized config: plugin tab and Admin → Notifications stay in sync (bidirectional bridge).
  • NEXUS alerts integrated: notify.php delegates security-critical alerts to Novu when the plugin is active.
  • Operational chat: /novu triggers workflows straight from Fastr with remote workflow suggestions.
  • Integrated intelligence: novu://workflow-id mentioned in tasks/comments becomes an Intel Hub signal.
  • /novu <workflow> <subscriber> [payload] chat command.

GitHub progress (issues)

Real-time panel with latest repository issues.

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

carregando andamento...

Real results

Unified multi-channel notification hub integrated with the Novu platform. Manages and dispatches critical security alerts, transactional emails, Discord/Slack webhooks, and in-app notifications from centralized NEXUS events.

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.