Kit & Módulos
Sistema de segmentos, módulos e configuração do perfil do site — do setup inicial à ativação individual de funcionalidades.
Visão Geral
O sistema de Kit & Módulos controla quais funcionalidades cada site (tenant) possui. Ele opera em dois eixos:
Módulos
Módulos são unidades de funcionalidade da plataforma. Cada módulo controla um conjunto de funcionalidades: telas do painel, rotas, menus, views do front e CSS.
Catálogo Completo
| Categoria | Módulo | Descrição | Tipo |
|---|---|---|---|
| Essenciais Sempre ativos |
Páginas | Páginas estáticas e Page Builder | Core |
| Configurações | Configurações do site | Core | |
| Mídia | Gerenciador de arquivos e imagens | Core | |
| Templates | Gestão de templates do site | Core | |
| Conteúdo | Blog | Posts, categorias, tags | Opcional |
| Portfólio | Galeria de projetos/trabalhos | Opcional | |
| Depoimentos | Depoimentos de clientes | Opcional | |
| FAQ | Perguntas frequentes por categoria | Opcional | |
| Equipe | Membros da equipe | Opcional | |
| Downloads | Área de downloads protegida | Opcional | |
| Comércio | Produtos | Catálogo de produtos com categorias | Opcional |
| Imóveis | Listagem de imóveis com filtros avançados | Opcional | |
| Veículos | Listagem de veículos com filtros avançados | Opcional | |
| Interação | Contato | Formulário de contato e mensagens | Opcional |
| Orçamento | Solicitações de orçamento (mini-cart) | Opcional | |
| Newsletter | Captação de e-mails | Opcional | |
| Comentários | Comentários em posts e conteúdos | Opcional | |
| Visual | Sliders | Banners rotativos (carrossel) | Opcional |
| Anúncios | Banners e espaços publicitários | Opcional |
Tipos de Módulo
| Tipo | Comportamento |
|---|---|
| Core | Sempre ativo. Não pode ser desativado por nenhum tenant. São funcionalidades essenciais (Páginas, Mídia, Configurações, Templates). |
| Obrigatório | Ativado automaticamente pelo Starter Kit. O tenant não pode desativar enquanto estiver usando aquele kit. Exemplo: "Imóveis" no kit Imobiliária. |
| Opcional | Pode ser ativado ou desativado livremente pelo tenant. Aparece como sugestão no kit mas não é imposto. |
O Que Acontece ao Ativar/Desativar
Quando um módulo é ativado ou desativado para um tenant, os seguintes elementos são afetados automaticamente:
| Elemento | Ativo | Inativo |
|---|---|---|
| Menu do Painel | Item visível na sidebar | Item oculto da sidebar |
| Rotas do Painel | Acessíveis normalmente | Retornam 403 (acesso negado) |
| Front-end | Páginas e listagens disponíveis | Retornam 404 |
| CSS do Front | Arquivo CSS do módulo carregado | Não carregado (economia de peso) |
| Componentes no Template | Componente renderiza normalmente | Componente não aparece no catálogo do editor |
has_module('slug') disponível em todo o sistema. Ela é cacheada em memória durante a requisição para máxima performance.
Starter Kits (Segmentos)
Starter Kits (ou Segmentos) são pacotes pré-configurados que definem o perfil completo de um site. Cada kit reúne:
- Módulos obrigatórios — ativados automaticamente, o tenant não pode desativar
- Módulos opcionais — sugeridos, o tenant escolhe quais ativar
- Template padrão — aplicado automaticamente na seleção
- Páginas modelo — conteúdo pré-pronto importado para o novo site
Kits Padrão da Plataforma
| Kit | Ícone | Módulos Obrigatórios | Módulos Opcionais |
|---|---|---|---|
| Institucional | Sliders, Contato | Equipe, Portfólio, Depoimentos, FAQ, Newsletter, Downloads | |
| Imobiliária | Sliders, Contato, Imóveis | Depoimentos, FAQ, Equipe, Newsletter | |
| Catálogo | Sliders, Contato, Produtos | Depoimentos, FAQ, Equipe, Newsletter, Downloads | |
| Portal | Sliders, Contato, Blog | Newsletter, Depoimentos, FAQ, Equipe | |
| Concessionária | Sliders, Contato, Veículos | Depoimentos, FAQ, Equipe, Newsletter |
Seleção pelo Tenant
A tela de Kit & Módulos (/panel/segment) é onde o administrador do tenant configura o perfil do site.
Interface
A tela é dividida em duas colunas:
- Cards de Kits — Grid com todos os kits disponíveis (ícone, nome, descrição, badges dos módulos principais)
- Módulos Opcionais — Aparece ao selecionar um kit. Checkboxes para ativar/desativar módulos extras
- Páginas Modelo — Switch para importar páginas pré-configuradas do kit
- Ícone e nome do kit selecionado
- Descrição
- Lista de módulos (obrigatórios com borda verde)
- Templates disponíveis
- Páginas modelo incluídas
- Botão "Confirmar Seleção"
Fluxo de Seleção
- O tenant clica em um card de kit → a interface carrega os detalhes via AJAX
- Os módulos obrigatórios aparecem com checkbox marcado e desabilitado (não podem ser desmarcados)
- Os módulos opcionais aparecem com checkbox livre
- Se o tenant está reconfigurando o kit atual → módulos que já estavam ativos vêm pré-marcados
- Se está trocando para um novo kit → todos os opcionais vêm desmarcados
- O tenant pode ativar o switch de importação de páginas modelo (se houver páginas disponíveis)
- Ao confirmar, o sistema executa tudo de uma vez:
- Atualiza o segmento do tenant
- Sincroniza módulos (core + obrigatórios + opcionais selecionados)
- Importa páginas modelo (se solicitado)
Indicadores Visuais
- Borda verde — Kit atualmente ativo do tenant
- Borda azul — Kit selecionado para visualização/configuração
- Badge "Obrig." — Módulo obrigatório (verde, checkbox desabilitado)
- Badge do módulo — Cada módulo tem ícone + nome em formato compacto
Conflitos de Páginas
Ao importar páginas modelo, pode haver conflitos se o tenant já possui páginas com os mesmos slugs (ex: já tem /sobre ou /home).
Como o Sistema Trata
- Antes de confirmar, a interface mostra cada página modelo com seu status:
| Indicador | Significado |
|---|---|
| Nome da página | Slug disponível — será criada normalmente |
| Slug já existe no tenant — não será importada (preserva a página existente) |
- Se todas as páginas já existem, o switch de importação é desabilitado automaticamente
- Um aviso amarelo mostra a contagem de páginas que serão ignoradas
- A importação nunca sobrescreve páginas existentes — a regra é: a página do tenant tem prioridade
/sobre (mesmo que o título seja diferente), a página modelo "Sobre Nós" não será importada.
Páginas Modelo
Páginas modelo (Starter Pages) são páginas pré-configuradas que podem ser importadas automaticamente quando o tenant seleciona um kit.
Tipos de Conteúdo
- WYSIWYG — Conteúdo HTML simples (editor visual)
- Page Builder — Conteúdo em blocos configuráveis (hero, features, CTA, galeria, etc.). Identificadas com badge PB
Campos
| Campo | Descrição |
|---|---|
| Nome Interno | Identificação no painel (ex: "Página Sobre Padrão") |
| Título da Página | Título exibido no site (slug gerado automaticamente) |
| Slug | URL da página (ex: /sobre, /contato) |
| Resumo | Texto para listagens e cards |
| Ícone | FontAwesome, com preview em tempo real |
| Ordem | Define prioridade na importação e listagem |
| SEO | Meta título, descrição e keywords |
Vinculação a Kits
Cada página pode estar vinculada a um ou mais kits (relação muitos-para-muitos). A vinculação pode ser feita:
- No formulário da página modelo — selecionando quais kits a incluem
- No formulário do Starter Kit — selecionando quais páginas incluir
Páginas do Sistema
A plataforma já vem com 3 páginas pré-configuradas (criadas automaticamente na instalação):
| Página | Slug | Tipo | Conteúdo |
|---|---|---|---|
| Página Inicial | /home |
Page Builder | Slider, cards de serviços, seção sobre e features |
| Sobre Nós | /sobre |
WYSIWYG | História, valores e missão da empresa |
| Contato | /contato |
Page Builder | Texto introdutório e formulário de contato |
O Que é Importado
Ao importar uma página modelo para o tenant:
- Cria um registro
Pageno tenant com título, conteúdo, layout e SEO - Gera o
url_rewrite(URL amigável) automaticamente - Se usa Page Builder, copia todos os blocos com suas configurações:
- Blocos inline (ex: slider) são convertidos em registros reais do tenant
- Imagens são copiadas para o storage do tenant
- Configurações como
featured_on_homeesort_ordersão preservadas
Gestão Master
O administrador da plataforma gerencia kits e módulos em /panel/master/segments.
Listagem
DataTable com colunas:
- ID, Ícone com cor, Nome, Descrição
- Template padrão (com link) + contagem de templates vinculados
- Contagem de módulos
- Contagem de tenants usando o kit
- Status (Ativo/Inativo)
- Ações: Editar, Duplicar, Excluir
No topo: botão para acessar "Páginas Modelo" e botão "Novo Starter Kit".
Formulário do Kit
O formulário de criação/edição é dividido em 4 seções:
1. Informações Básicas
- Nome — Identificação do kit (slug gerado automaticamente)
- Ícone — FontAwesome com preview em tempo real
- Cor — Hex color para o ícone (com color picker)
- Descrição — Texto exibido na seleção pelo tenant
- Status — Ativo/Inativo (inativos não aparecem na seleção)
- Ordem — Posição na listagem de seleção
2. Template Padrão
- Select com todos os templates globais ativos
- Ao selecionar, abre o painel de validação cruzada:
- Detecta componentes presentes no HTML do template
- Mostra avisos se módulos ou páginas necessários não estão selecionados
- Templates já vinculados ao kit aparecem como badges com link direto para o editor
3. Módulos
Todos os módulos não-core, organizados por categoria:
- Checkbox — Inclui/exclui o módulo do kit
- Switch "Obrig." — Marca como obrigatório (habilitado só quando checkbox marcado)
- Container com borda azul quando selecionado
- A validação cruzada atualiza em tempo real conforme módulos são marcados/desmarcados
4. Páginas Modelo
Todas as páginas modelo disponíveis:
- Checkbox — Inclui/exclui a página do kit
- Switch "Obrig." — Marca como obrigatória
- Badge PB para páginas com Page Builder
- Container com borda verde quando selecionado
Duplicar Kit
Cria cópia completa com novo slug (sufixo -copia-XXXX), incluindo todas as relações (módulos e páginas).
Excluir Kit
Só é possível excluir se nenhum tenant está usando o kit. Se houver tenants vinculados, a exclusão é bloqueada e um alerta mostra a contagem de sites afetados.
Validação Cruzada
O formulário de Starter Kit possui um sistema de validação cruzada em tempo real que garante consistência entre template, módulos e páginas.
Como Funciona
- Ao selecionar ou trocar o template padrão, o sistema detecta os componentes presentes no HTML do template
- Cada componente detectado é listado com ícone e nome
- O sistema cruza com os módulos e páginas selecionados no formulário
- Se houver inconsistências, exibe avisos amarelos
Tipos de Avisos
| Cenário | Aviso |
|---|---|
| Template tem menu de Blog mas módulo Blog não está marcado | "módulo não ativado" |
| Template tem link "Sobre" mas página modelo não está incluída | "página não incluída" |
No final do painel, um resumo lista as pendências:
- "Módulos no template sem ativar:" — lista dos módulos faltantes
- "Páginas no template sem incluir:" — lista das páginas faltantes
Atualização em Tempo Real
A validação recalcula automaticamente quando:
- O template padrão é trocado
- Um módulo é marcado ou desmarcado
- Uma página modelo é marcada ou desmarcada
Ativação Individual de Módulos
Além da seleção por kit, o tenant pode ativar ou desativar módulos individualmente a qualquer momento.
Onde Ativar
Na mesma tela de Kit & Módulos (/panel/segment), o tenant pode:
- Reabrir a configuração do kit atual (clicando no card com borda verde)
- Marcar/desmarcar módulos opcionais
- Confirmar para salvar as alterações
Restrições
- Módulos core — Nunca podem ser desativados (checkbox não aparece)
- Módulos obrigatórios — Não podem ser desativados enquanto o kit atual exigir (mensagem de erro se tentar)
- Módulos opcionais — Livres para ativar/desativar
Impacto no Front-end
A ativação de módulos afeta diretamente o que aparece no site público do tenant.
Menu e Navegação
Menus dinâmicos no template (componentes <x-front.category-menu>) são renderizados apenas se o módulo correspondente está ativo. Com módulo inativo, o menu simplesmente não aparece no HTML.
CSS Condicional
O layout do front carrega CSS de módulos condicionalmente:
@if(has_module('blog'))
<link href="/css/front/blog.css" rel="stylesheet">
@endif
@if(has_module('products'))
<link href="/css/front/products.css" rel="stylesheet">
@endif
Módulos inativos não carregam seus CSS, reduzindo o peso da página.
Rotas e Páginas
Rotas de módulos inativos retornam 404 automaticamente. Se alguém tentar acessar /blog com módulo Blog desativado, verá a página de erro 404.
Configurações de Módulos
Na sidebar de Configurações (/panel/settings), os grupos de configurações de módulos aparecem apenas para módulos ativos. Com Blog inativo, a seção "Blog" nas configurações não aparece.
Fluxo Completo
Resumo do ciclo de vida completo de um tenant usando Kit & Módulos:
Abre /panel/segment e vê todos os kits disponíveis em cards com ícone, nome e badges dos módulos principais.
Clica no card desejado. A interface carrega detalhes via AJAX: módulos obrigatórios, opcionais, templates e páginas modelo.
Marca os módulos opcionais desejados. Ativa a importação de páginas modelo (vê quais existem e quais serão ignoradas).
O sistema automaticamente: define o segmento, sincroniza módulos (core + obrigatórios + opcionais), importa páginas modelo (respeitando slugs existentes).
O painel exibe apenas as funcionalidades dos módulos ativos. O front-end renderiza componentes correspondentes. Menus, rotas e CSS são atualizados automaticamente.
O tenant pode trocar de kit ou ajustar módulos individuais. As alterações são imediatas — menus aparecem/desaparecem, rotas são liberadas/bloqueadas.