# PatrimoniumDoc — Deploy Cloudflare Workers + D1
## Guia completo passo a passo

---

## PRÉ-REQUISITOS

1. Conta Cloudflare (gratuita): https://cloudflare.com
2. Node.js instalado: https://nodejs.org (v18+)
3. Wrangler CLI instalado:
   ```bash
   npm install -g wrangler
   wrangler login
   ```

---

## PARTE 1 — BACK-END (Worker + D1)

### 1.1 Criar o banco D1
```bash
wrangler d1 create patrimonium-db
```
Copie o `database_id` retornado e cole no `wrangler.toml`:
```toml
database_id = "SEU_ID_AQUI"
```

### 1.2 Aplicar o schema (criar tabelas)
```bash
wrangler d1 execute patrimonium-db --file=schema.sql
```

### 1.3 Criar o usuário administrador
```bash
node setup-admin.js
```
O script imprime um comando `wrangler d1 execute...` — execute-o.

### 1.4 Configurar o JWT_SECRET (NUNCA coloque no código)
```bash
wrangler secret put JWT_SECRET
# Digite uma senha aleatória longa, ex: openssl rand -base64 64
```

### 1.5 Publicar o Worker
```bash
wrangler deploy
```
Anote a URL retornada: `https://patrimonium-api.SEU_USUARIO.workers.dev`

---

## PARTE 2 — FRONT-END (Pages)

### 2.1 Configurar a URL da API no index.html
Abra `index.html` e edite a linha:
```javascript
const API_BASE = 'https://patrimonium-api.SEU_USUARIO.workers.dev';
```
Coloque a URL exata do seu Worker (da etapa 1.5).

### 2.2 Publicar via Cloudflare Pages
```bash
# Opção A — via CLI
wrangler pages deploy . --project-name patrimonium-doc

# Opção B — via dashboard
# Acesse dash.cloudflare.com → Pages → Create → Upload assets
# Faça upload apenas do index.html
```

---

## PARTE 3 — DOMÍNIO PERSONALIZADO (opcional mas recomendado)

No Cloudflare Dashboard:
- **Worker**: Workers & Pages → patrimonium-api → Settings → Domains → Add Custom Domain
  - Exemplo: `api.seudominio.com.br`
- **Front-end**: Pages → patrimonium-doc → Custom domains
  - Exemplo: `patrimonio.seudominio.com.br`

Atualize `API_BASE` no `index.html` com o domínio da API e faça novo deploy.

---

## PARTE 4 — PÓS-DEPLOY: SEGURANÇA

### Imediatamente após o primeiro login:
1. Acesse o sistema e vá em **Configurações → Alterar Senha**
2. Troque a senha padrão `Admin@2026!` por uma senha forte (12+ chars, maiúsculas, números, símbolos)
3. Confirme que o sistema está em HTTPS (cadeado verde no navegador)

### Boas práticas:
- Nunca compartilhe o JWT_SECRET
- Use senhas únicas e fortes para cada usuário
- Monitore o Log de Auditoria regularmente
- Usuários "Visualizador" não podem excluir dados nem ver o audit log
- A sessão expira após 30 minutos de inatividade

---

## ARQUITETURA DE SEGURANÇA

```
Navegador (usuário)
  │  HTTPS obrigatório (Cloudflare TLS)
  ▼
Cloudflare Edge
  │  DDoS protection, WAF, Rate limiting de rede
  ▼
Worker (worker.js)
  │  • Rate limiting de login (5 tentativas / 15 min por IP)
  │  • Autenticação JWT HMAC-SHA256 (expira em 8h)
  │  • Senhas: PBKDF2-SHA256 com 150.000 iterações + salt único
  │  • CORS restrito ao domínio front-end
  │  • Headers: CSP, HSTS, X-Frame-Options, etc.
  │  • Audit log de todas as operações
  ▼
D1 Database (SQLite na edge)
  │  • Dados NUNCA saem do servidor para o navegador
  │  • Soft delete (registros nunca são apagados fisicamente)
  │  • Índices em vencimento e status para queries rápidas
```

---

## CUSTOS ESTIMADOS

| Recurso        | Plano Free | Limite |
|----------------|-----------|--------|
| Workers        | Gratuito  | 100k req/dia |
| D1             | Gratuito  | 5 GB storage, 5M req/dia |
| Pages          | Gratuito  | Ilimitado |

Para uso pessoal/familiar, o plano gratuito é mais que suficiente.

---

## BACKUP DOS DADOS

```bash
# Exportar todo o banco para um arquivo SQL
wrangler d1 export patrimonium-db --output backup_$(date +%Y%m%d).sql

# Recomendado: executar mensalmente e armazenar em local seguro
```

---

## ATUALIZAR O SISTEMA

```bash
# Após editar worker.js:
wrangler deploy

# Após editar index.html:
wrangler pages deploy . --project-name patrimonium-doc
```
