04 · Adicionar um plugin
Adicionar uma capacidade ao app é uma linha de JSON. Você liga um plugin do catálogo no manifesto e a navegação e as telas crescem sozinhas — você não escreve rotas, o core deriva do plugin.
Ligue o plugin no manifesto
Os pacotes de plugin já vêm nas dependências do app gerado — @fayz-ai/plugin-crm, plugin-tasks, plugin-agenda, plugin-financial, plugin-inventory e outros já estão no package.json. Ligar um é adicionar seu id à lista plugins da surface.
Abra o app.manifest.json e adicione crm (e, de brinde, tasks) ao lado do dashboard:
{
"surfaces": {
"admin": {
"scaffold": "admin",
"plugins": [
{ "id": "dashboard" },
{ "id": "crm" },
{ "id": "tasks" }
]
}
}
}
Salve. Você não precisa mexer no src/plugins.generated.ts por enquanto — a pré-visualização local valida a fiação pelo manifesto; as telas completas vêm do runtime que consome essa mesma lista.
Confirme com o doctor
npx @fayz-ai/cli doctor
⚠ manifest references plugin(s) [dashboard, crm, tasks] — each id must resolve to an installed @fayz-ai/plugin-* factory wired in src/plugins.generated.ts or src/config/app.tsx 0 error(s), 1 warning(s)
Repare que a lista do aviso cresceu: dashboard, crm, tasks. O doctor está lendo o manifesto e lembrando que cada id precisa corresponder a um pacote @fayz-ai/plugin-* instalado — que já veio nas dependências do app gerado.
✓ Você deve ver: os três ids — dashboard, crm, tasks — no aviso do doctor, com 0 error(s). Se você digitar um id que não existe no catálogo, é aqui que o erro aparece.
O que acontece na navegação
Cada plugin declara sua própria navegação e rotas no manifesto do plugin. Quando você o liga na surface, o runtime da plataforma injeta o item de menu e as telas correspondentes — o CRM adiciona a seção de contatos, o Tasks adiciona o quadro de tarefas. É por isso que você nunca edita um roteador: a navegação é derivada da lista de plugins.
Onde a mudança aparece: as telas e o menu dos plugins são renderizados pelo runtime completo da plataforma Fayz, que consome esta mesma lista. A pré-visualização local de hoje é uma tela-âncora, então o passo se valida pelo doctor (a capacidade está corretamente ligada). Para navegar pelo catálogo completo de plugins disponíveis, veja a seção Plugins.
Antes de seguir, deixe só dashboard na lista se quiser um app enxuto para o próximo passo — ou mantenha os três; qualquer um funciona com o Supabase.
← Anterior: 03 · Tema e marca · Próximo: 05 · Dados reais com Supabase →