# Deploy estático

O app gerado é um projeto Vite. Publicar é o fluxo estático de sempre: você gera a pasta `dist/` e a serve em qualquer host de arquivos estáticos — sem servidor, sem lock-in.

## Gere o build

```bash
npm run build
```

Saída típica:

```
vite v5.4.21 building for production...
✓ 34 modules transformed.
dist/index.html                   0.40 kB │ gzip:  0.27 kB
dist/assets/index-...css          0.00 kB │ gzip:  0.02 kB
dist/assets/index-...js         143.00 kB │ gzip: 46.00 kB
✓ built in 274ms
```

O resultado é uma pasta `dist/` com um `index.html` e os assets em `dist/assets/`. Para conferir localmente antes de subir:

```bash
npm run preview
```

## A regra que todo host precisa: rewrite para o `index.html`

O app é uma SPA (single-page app): todas as rotas são servidas pelo `index.html` e o roteamento acontece no navegador. Por isso **todo** host precisa de uma regra de rewrite mandando qualquer caminho para o `index.html` — senão um refresh em `/crm` dá 404.

**Vercel** — crie um `vercel.json` na raiz:

```json
{ "rewrites": [{ "source": "/(.*)", "destination": "/index.html" }] }
```

Build command: `npm run build` · Output directory: `dist`.

**Netlify** — crie um `public/_redirects`:

```
/*  /index.html  200
```

Build command: `npm run build` · Publish directory: `dist`.

**Cloudflare Pages** — mesmo `_redirects` do Netlify:

```
/*  /index.html  200
```

Build command: `npm run build` · Output directory: `dist`.

## As variáveis de ambiente

No painel do host, defina as variáveis **públicas** — as mesmas do seu `.env.local`:

```
VITE_SUPABASE_URL=https://SEU-REF.supabase.co
VITE_SUPABASE_ANON_KEY=sua-anon-key
```

{% callout type="warn" %}
O `SUPABASE_PAT` **não** vai para o host. Ele serve só para o `fayz db apply`, que você roda da sua máquina. No host ficam apenas os valores `VITE_` (públicos, embarcados no navegador). Nunca coloque o PAT numa variável de build de deploy.
{% /callout %}

Aponte o projeto para o repositório, configure build + output conforme o host acima, defina as variáveis e faça o deploy. O mesmo `dist/` roda idêntico em qualquer um dos três.

---

Próximo: o deploy gerenciado que está chegando em [Deploy Fayz](/pt-BR/docs/deploy/fayz).
