# Publicação em servidor próprio

Aplicação: React 19 + TanStack Start (SSR) + Vite 7 + Tailwind 4
Banco/Auth: PostgreSQL + Supabase (self-hosted ou cloud próprio)

## 1. Banco de dados próprio

### Opção A — Supabase self-hosted (recomendada, traz auth pronta)

```bash
git clone --depth 1 https://github.com/supabase/supabase
cd supabase/docker
cp .env.example .env      # ajuste POSTGRES_PASSWORD, JWT_SECRET, ANON_KEY, SERVICE_ROLE_KEY, SITE_URL
docker compose up -d
```

Studio: `http://SEU-SERVIDOR:8000` · API: `http://SEU-SERVIDOR:8000`

### Opção B — PostgreSQL puro

Requer implementar autenticação própria; o script usa `auth.users`.
Nesse caso troque as referências `auth.users` por uma tabela `public.usuarios`
e substitua `auth.uid()` pela sua função de sessão.

### Aplicar o esquema

```bash
psql "postgresql://postgres:SENHA@SEU-SERVIDOR:5432/postgres" -f deploy/schema.sql
```

O script cria: perfis e papéis (`admin`, `gerente`, `cozinheiro`), fornecedores,
insumos, fichas técnicas e itens, pedidos de compra e itens, movimentos de
estoque, produções, políticas RLS, grants, gatilhos de baixa/entrada automática
de estoque e dados de demonstração.

O **primeiro usuário cadastrado vira admin** automaticamente.

## 2. Configurar a aplicação

```bash
cp .env.example .env    # preencha URL e chaves do seu Supabase
npm install
npm run build
```

## 3. Executar

O build gera um servidor Node/edge em `.output/`.

```bash
node .output/server/index.mjs      # porta padrão 3000
```

Com PM2:

```bash
npm i -g pm2
pm2 start .output/server/index.mjs --name ficha-tecnica
pm2 save && pm2 startup
```

### Docker

```bash
docker build -t ficha-tecnica -f deploy/Dockerfile .
docker run -d -p 3000:3000 --env-file .env --name ficha-tecnica ficha-tecnica
```

### Nginx (proxy + HTTPS)

```nginx
server {
  server_name app.suaempresa.com.br;
  location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
}
```

Depois: `certbot --nginx -d app.suaempresa.com.br`

## 4. Pós-instalação

1. Acesse `/auth` e crie o primeiro usuário (vira admin).
2. Em **Equipe**, atribua papéis aos demais usuários.
3. Em Auth do Supabase, configure `SITE_URL` e as *redirect URLs* com o domínio final.
4. Para login Google: habilite o provider e informe Client ID/Secret.
5. Backup: `pg_dump "$DATABASE_URL" > backup-$(date +%F).sql` em cron diário.

## Requisitos mínimos do servidor

2 vCPU · 4 GB RAM · 40 GB SSD · Ubuntu 22.04+ · Node 20+ · Docker (se usar Supabase self-hosted)
