# 🔔 Configuração de Push Notifications

## Passo 1: Configurar VAPID Keys

### 1.1 Gerar VAPID Keys (se ainda não tiver)

Execute no diretório do backend:
```bash
cd packages/backend
bunx web-push generate-vapid-keys
```

Isso gerará duas chaves:
- **Public Key**: Segura para expor no frontend
- **Private Key**: Deve ser mantida em segredo, apenas no backend

### 1.2 Configurar no Convex (Backend)

As variáveis de ambiente no Convex são configuradas via dashboard ou CLI:

#### Opção A: Via Dashboard Convex
1. Acesse https://dashboard.convex.dev
2. Selecione seu projeto
3. Vá em **Settings** > **Environment Variables**
4. Adicione as seguintes variáveis:

```
VAPID_PUBLIC_KEY=BDerX0lK_hBCLpC7EbuxoJb2EJ7bcCLaHWxkNumVbvrx9w0MmJduHxJOP3WBwBP-SpQGcueMOyHCv7LFK3KnQks
VAPID_PRIVATE_KEY=KWkJLMxCuCPQQiRXIJEt06G4pTdW0FaUN_vMyY02sc4
FRONTEND_URL=http://localhost:5173
```

#### Opção B: Via CLI Convex
```bash
cd packages/backend
npx convex env set VAPID_PUBLIC_KEY "BDerX0lK_hBCLpC7EbuxoJb2EJ7bcCLaHWxkNumVbvrx9w0MmJduHxJOP3WBwBP-SpQGcueMOyHCv7LFK3KnQks"
npx convex env set VAPID_PRIVATE_KEY "KWkJLMxCuCPQQiRXIJEt06G4pTdW0FaUN_vMyY02sc4"
npx convex env set FRONTEND_URL "http://localhost:5173"
```

### 1.3 Configurar no Frontend

Crie um arquivo `.env` no diretório `apps/web/` com:

```env
VITE_VAPID_PUBLIC_KEY=BDerX0lK_hBCLpC7EbuxoJb2EJ7bcCLaHWxkNumVbvrx9w0MmJduHxJOP3WBwBP-SpQGcueMOyHCv7LFK3KnQks
```

**Importante**: Reinicie o servidor de desenvolvimento após criar/modificar o `.env`.

## Passo 2: Configurar FRONTEND_URL

A variável `FRONTEND_URL` é usada nos templates de email para gerar links de volta ao sistema.

### Para Desenvolvimento:
```
FRONTEND_URL=http://localhost:5173
```

### Para Produção:
```
FRONTEND_URL=https://seu-dominio.com
```

## Passo 3: Testar Push Notifications

### 3.1 Registrar Subscription no Frontend

O sistema automaticamente solicita permissão e registra a subscription quando:
1. O usuário faz login
2. Acessa o chat pela primeira vez
3. O Service Worker é instalado

### 3.2 Verificar se está funcionando

1. Abra o DevTools do navegador (F12)
2. Vá na aba **Application** > **Service Workers**
3. Verifique se o Service Worker está registrado
4. Vá em **Application** > **Notifications**
5. Verifique se a permissão está concedida

### 3.3 Testar envio de push

1. Abra o chat em duas abas/janelas diferentes
2. Faça login com usuários diferentes
3. Envie uma mensagem de um usuário para o outro
4. A mensagem deve aparecer como notificação push na outra aba

## Troubleshooting

### Push notifications não funcionam

1. **Verificar VAPID keys**: Certifique-se de que as keys estão configuradas corretamente
2. **Verificar Service Worker**: O arquivo `sw.js` deve estar em `/static/sw.js`
3. **Verificar permissões**: O navegador deve ter permissão para notificações
4. **Verificar console**: Procure por erros no console do navegador e do Convex

### Erro "VAPID keys não configuradas"

- Verifique se as variáveis de ambiente estão configuradas no Convex
- Reinicie o servidor Convex após configurar as variáveis
- Verifique se os nomes das variáveis estão corretos (case-sensitive)

### Service Worker não registra

- Verifique se o arquivo `sw.js` existe em `apps/web/static/sw.js`
- Verifique se o servidor está servindo arquivos estáticos corretamente
- Limpe o cache do navegador e tente novamente

## Segurança

⚠️ **IMPORTANTE**:
- A **Private Key** nunca deve ser exposta no frontend
- Use variáveis de ambiente diferentes para desenvolvimento e produção
- Regenere as keys se suspeitar de comprometimento
- Mantenha as keys em segredo (não commite no Git)

