# O que é o Fayz

O Fayz é uma fábrica de SaaS. Em vez de escrever um produto multi-tenant do zero — autenticação, banco, isolamento por cliente, telas de CRUD, cobrança — você **compõe** plugins de capacidade sobre um motor compartilhado. Um salão, um restaurante e uma clínica são o mesmo motor com plugins diferentes ligados. O que muda entre um produto e outro é uma **composição** — config + plugins + tema — não uma base de código nova.

A ideia central: um app Fayz não bifurca a SDK. Ele fica sobre uma fronteira de propriedade estrita, então uma melhoria na SDK atravessa todos os apps como **uma** migração, não milhares de PRs. Você personaliza de um rótulo até uma página inteiramente sob medida sem nunca ejetar.

## As quatro peças

Guarde estas quatro e o resto encaixa:

- **SDK** — os pacotes `@fayz-ai/*`. O motor headless (`@fayz-ai/core`) define o contrato de plugin, o modelo de dados e o runtime; a camada SaaS (`@fayz-ai/saas`) traz multi-tenancy, permissões e o motor de CRUD; a UI (`@fayz-ai/ui`) traz o shell e os componentes. Você instala só o que usa.
- **Plugins** — pacotes `@fayz-ai/plugin-*` que declaram capacidades: agenda, CRM, financeiro, menu, cursos, estoque. Cada plugin traz suas rotas, sua navegação, seus widgets e suas migrações de banco. Você liga os que precisa.
- **Supabase** — o backend real por trás do app: Postgres com RLS multi-tenant, provisionado a partir dos pacotes que você instalou. Todo app nasce em modo mock (zero configuração) e você troca para Supabase quando estiver pronto.
- **Deploy** — o app é um projeto web comum. Hoje você publica como site estático em qualquer host; amanhã, direto pela plataforma Fayz gerenciada.

## O modelo mental

Um app Fayz se descreve como **dados**. Você declara a config, liga plugins, e isso vira um manifesto — a fonte única a partir da qual o runtime monta telas, rotas e acesso a dados:

```
  config do app
       │  (nome, tema, locale, backend, quais plugins)
       ▼
  plugins ligados ─────────────┐
   agenda · crm · financeiro …  │  cada um declara
                                │  rotas + navegação + widgets + migrações
       ▼                        ▼
  manifesto  ────────────────────────────────►  runtime
   (o app inteiro como dados)                     │
                                                  ├─► telas  (shell + páginas dos plugins)
                                                  ├─► rotas  (navegação gerada)
                                                  └─► dados  (providers → mock ou Supabase)
```

A mesma direção vale seja você escrevendo a config em JSON (`app.manifest.json`) ou em código (`defineSaas`): as duas viram o mesmo manifesto. Personalizar um app é, quase sempre, editar esses dados — não escrever telas novas.

## Fayz e Faya Labs

**Fayz** é a tecnologia — a SDK, os plugins, a CLI. **Faya Labs** é a comunidade em volta dela: quem constrói produtos reais, compartilha plugins e ajuda quem está começando. Você *usa* o Fayz; você *participa* da Faya Labs.

## Para quem é

Para o desenvolvedor que quer construir um produto de verdade — um SaaS que vai para produção com clientes pagantes — e não um protótipo descartável. Se você já sabe montar um app web e quer parar de reescrever o mesmo esqueleto multi-tenant a cada projeto, este é o seu lugar.

{% callout type="info" %}
O Fayz está pré-1.0. Os pacotes são reais e usados no dia a dia, mas as APIs ainda podem mudar entre versões menores. Fixe versões exatas em produção e leia o changelog antes de atualizar. O contrato completo está em [Conceitos → canais de versão](/pt-BR/docs/conceitos).
{% /callout %}

## Por onde seguir

{% cards %}
{% card title="Quickstart" href="/pt-BR/docs/quickstart" icon="⚡" %}
Um app rodando no seu navegador em cinco minutos, sem configurar nada.
{% /card %}
{% card title="Conceitos" href="/pt-BR/docs/conceitos" icon="📚" %}
Manifesto, biblioteca core, tenants, providers, canais e incubator.
{% /card %}
{% /cards %}
