Alert Handlers
Um alert handler transforma eventos de domínio em alertas. Cada handler implementa App\Contracts\AlertHandlerContract e é registrado por um módulo através do método alertHandlers() do contrato de módulo. Quando o core recebe um evento, ele percorre os handlers dos módulos habilitados para o site e, para cada um cujo triggerEvents() corresponde, cria (ou resolve) um alerta.
Contrato de Módulo
Todo módulo do ION Guard implementa a interface App\Contracts\ModuleContract. Ela é o contrato único entre o core e o módulo: o core só conhece o módulo através destes métodos. A classe abstrata App\Contracts\BaseModule implementa o contrato inteiro com padrões vazios, deixando obrigatórios apenas os quatro métodos de identidade — todos os demais são opcionais e você sobrescreve só o que o módulo usa.
Criando um Módulo
Guia passo a passo para criar um novo módulo para a plataforma ION Guard.
Drivers de Hardware
Drivers traduzem o hardware BLE físico (antenas/gateways e beacons de diferentes fabricantes) para o modelo interno da plataforma — normalizando leituras de RSSI, mapeamento de bateria e formato de payload. No ION Guard, os drivers não vivem no core: pertencem ao módulo de rastreamento Synapsys (indoor-location), que é distribuído como pacote e não faz parte do repositório do core.
Frontend Modular
Módulos do ION Guard trazem seu próprio frontend (React + Inertia). Cada módulo é buildado de forma independente e distribuído como um bundle ESM; o core carrega esse bundle em runtime e integra suas páginas, traduções e componentes de slot — sem recompilar o core.
Report Handlers
Um report handler define um relatório disponível na plataforma: seus filtros, formatos de exportação, permissão mínima e a lógica de execução. Cada handler implementa App\Contracts\ReportContract e é registrado por um módulo através do método reportHandlers() do contrato de módulo. Relatórios do próprio core também implementam esse contrato.
Sistema de Módulos
O ION Guard utiliza uma arquitetura modular onde funcionalidades são encapsuladas em módulos independentes. Cada módulo é auto-contido — possui suas próprias models, migrations, rotas, controllers, páginas frontend, alert handlers, report handlers e workers.