fayzfayz sdk

Configuração

O app.manifest.json descreve o app inteiro num único arquivo JSON. Ele é a fonte da verdade: surfaces, tema, locale, backend e plugins. Esta página é o mapa de cada bloco de topo — o que ele faz e o que o fayz doctor valida.

A forma do manifesto

Um app admin recém-criado se parece com isto (manifestVersion sempre 2 nesta geração):

{
  "manifestVersion": 2,
  "id": "minha-loja",
  "name": "Minha Loja",
  "backend": { "provider": "mock" },
  "locale": { "default": "pt-BR", "supported": ["pt-BR", "en"], "currency": "BRL" },
  "theme": { "brand": "violet" },
  "surfaces": {
    "admin": {
      "scaffold": "admin",
      "plugins": [{ "id": "dashboard" }],
      "pages": []
    }
  }
}

Os quatro campos obrigatórios são manifestVersion, id, name e surfaces. O resto é opcional e tem default sensato.

Os blocos de topo

CampoPapel
idIdentificador em kebab-case (^[a-z0-9][a-z0-9-]*$).
nameO nome exibido do app.
backendDe onde vêm os dados. Objeto { provider, ... } — detalhado abaixo.
localeIdioma, idiomas suportados e moeda.
themeA marca: brand, radius, mode (veja Temas).
permissionsDeclaração de features e ações (deny-by-default no multi-tenant).
surfacesAs faces do app. Pelo menos uma é obrigatória.

O bloco backend

O provider decide de onde os dados vêm. Os valores aceitos:

providerPara quê
mockDados de exemplo em memória, zero configuração. É o default do scaffold. Ao consumir os pacotes em código, os providers mock nascem vazios — veja Mock e dados de exemplo para semeá-los.
supabaseUm projeto Supabase real. Acompanha projectRef.
fayz-apiA API gerenciada do Fayz.
fayz-shopO backend de e-commerce do Fayz.
customUm adapter próprio, referenciado por adapterId.

Trocar de mock para supabase é o passo do meio do tutorial — veja Supabase:

{ "backend": { "provider": "supabase", "projectRef": "seu-project-ref" } }

Surfaces e plugins

Dentro de surfaces, cada surface declara o scaffold (obrigatório), uma lista de plugins e uma de pages. Ligar uma capacidade é adicionar { "id": "..." } à lista plugins — os pacotes já vêm nas dependências do app gerado, então não há nada para instalar nem para editar em src/plugins.generated.ts. Cada pluginRef aceita config (opções do plugin) e enabled (para desligar sem remover).

Como as rotas e o menu são derivados dessa lista, o detalhe está em Rotas e navegação.

Duas formas de configurar

O scaffold entrega a forma manifesto-primeiro: você edita JSON e a plataforma renderiza. Existe também a forma código-primeiro, em que a configuração vive em src/ (via defineSaas / defineStorefront). O fayz doctor reconhece as duas: um app sem app.manifest.json mas com package.json é tratado como app código-primeiro — o doctor roda as checagens de boundary e passa. Comece pela forma manifesto; ela cobre a maioria dos casos e é a que a plataforma edita ao vivo.

Valide sempre

Depois de qualquer edição, rode o doctor. Ele confere a estrutura do manifesto, os plugins referenciados e os limites de arquitetura:

npx @fayz-ai/cli doctor

Um id fora do padrão ou uma surface sem scaffold fazem o doctor sair com erro — de propósito, para você pegar o problema antes de subir. Hoje o doctor valida a estrutura do manifesto e as fronteiras de arquitetura; a validação dos valores de enums (como backend.provider ou theme.brand) está chegando — um fix de SDK está em PR.


Próximo: aplique a sua marca em Temas.