Imagem de capa do projeto: Novu EM ANDAMENTO

Resumo técnico

Integração com o Novu (hub multi-canal de notificações) para disparar workflows por email, SMS, push, in-app, Discord, Telegram, Slack e Teams — com gerenciamento de workflows, subscribers e integrações remotas, histórico local em novu_events, bridge com notify.php e comando /novu no chat.

Escopo executado

  • plugin.json: v1.0.0, slug novu (sem legacy_slugs), name "Novu", categoria "Notifications", is_core: false, author_url e website públicos (perciocastelo.com.br).
  • Schema lazy (novu_install(), CREATE TABLE IF NOT EXISTS com static $done e 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; índices idx_novu_created/idx_novu_workflow/idx_novu_status; 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.
  • Bridge com Admin — novu_get_config() preenche o plugin a partir de notifications.novu_* quando vazio; novu_save_config() espelha em system_settings.notifications.novu_* (integração com notify.php).
  • Segredo protegido — novu_public_config() devolve a API Key mascarada (XXXX…XXXX ou ••••) e novu_save_config() ignora placeholders mascarados (com suporte a clear_api_key).
  • HTTP (novu_request) — REST via cURL com Authorization: ApiKey, timeout 30s / connect 8s, SSL conforme constante SSL_VERIFY e extração de erros (message/error/errorMessage/errors).
  • Trigger (novu_trigger) — POST /events/trigger (name, to.subscriberId, payload, transactionId opcional); subscriber fallback notifications.admin_email ou nexus-admin; force ignora enabled; loga em novu_events.
  • Gestão remota — workflows (limit 1–100 com fallback notification-templates), subscribers (listar/criar, paginação), integrações (canais/provedores ativos) e teste de conexão (cascata /workflows → /notification-templates → /integrations).
  • Dashboard (novu_dashboard) — stats locais (total/ok/error via GROUP BY status) + status online + workflows remotos (20) + integrações ativas.
  • Histórico local (novu_local_history) — últimos eventos com status, channel_hint, source e erro.
  • Fastr — /novu (sem argumento → resumo em markdown; com workflow subscriber key=val&k2=v2 → trigger com payload via parse_str); sugestões do default + workflows remotos (até 8).
  • Intel Hub — enricher novu (campo _text, prioridade 58): detecta novu://workflow-id em descrições/comentários → signal novu_workflow (info) com hint /novu <workflow> <subscriber>.
  • 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, tema slate + blue-600, grupo "Comunicação") — sub-abas Trigger / Workflows / Subscribers / Config: card "Disparar notificação" (workflow, subscriber, payload) com botão "Disparar" e estado "Enviando…", status online/offline, workflows remotos com "Recarregar", criação de subscriber, config com API Key mascarada e teste de conexão.
  • Sem cron e sem migrations.
  • Bridge notify.php — notify_novu_trigger() delega para novu_trigger() (alertas security-critical) quando o plugin está carregado.

Stack e ferramentas

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

Tags operacionais

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

Resultado operacional

  • Hub multi-canal: um trigger dispara email, SMS, push, in-app, Discord, Telegram, Slack e Teams (canais configurados no dashboard Novu).
  • Segredo nunca exposto: a API Key aparece mascarada na UI/API pública; placeholders mascarados não sobrescrevem a secret ao salvar.
  • Rastreabilidade local: todo trigger é registrado em novu_events (payload, resposta, erro, source e transaction_id).
  • Config centralizada: aba do plugin e Admin → Notificações ficam em sincronia (bridge bidirecional).
  • Alertas do NEXUS integrados: notify.php delega alertas security-critical para o Novu quando o plugin está ativo.
  • Chat operacional: /novu dispara workflows direto do Fastr com sugestões de workflows remotos.
  • Inteligência integrada: novu://workflow-id citado em tarefas/comentários vira signal no Intel Hub.
  • Comando /novu <workflow> <subscriber> [payload] no chat.

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

Hub unificado de notificações multicanal integrado à plataforma Novu. Gerencia e despacha alertas críticos, e-mails transacionais, mensagens no Discord/Slack e notificações in-app a partir de eventos centralizados do NEXUS.

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.