# ✅ PDIMaker - Setup Completo

## 🎉 Status da Aplicação

**TODOS OS SERVIÇOS ESTÃO RODANDO!**

```
✅ PostgreSQL (pdimaker-db) - Porta 5432
✅ Redis (pdimaker-redis) - Porta 6379
✅ Backend API (pdimaker-api) - Porta 4000
✅ Frontend Web (pdimaker-web) - Porta 3300
✅ Nginx (pdimaker-nginx) - Portas 80 e 443
```

---

## 📁 Arquivos Criados

### 1. **Middleware de Autenticação**
- `frontend/middleware.ts` - Proteção de rotas e autenticação

### 2. **Configuração de Autenticação**
- `frontend/lib/auth/config.ts` - NextAuth com Google OAuth
- `frontend/lib/prisma.ts` - Cliente Prisma
- `frontend/app/api/auth/[...nextauth]/route.ts` - Rotas de autenticação

### 3. **Páginas**
- `frontend/app/login/page.tsx` - Página de login com Google
- `frontend/app/unauthorized/page.tsx` - Página de acesso negado
- `frontend/components/SessionProvider.tsx` - Provider de sessão

### 4. **Dependências Instaladas**
```json
{
  "next-auth": "^4.24.5",
  "@auth/prisma-adapter": "^1.4.0",
  "@prisma/client": "^5.8.0"
}
```

---

## 🔧 Configuração Necessária

### 1. Variáveis de Ambiente (.env)

Você precisa configurar o arquivo `.env` na raiz do projeto com:

```bash
# Banco de Dados
DB_PASSWORD=sua_senha_aqui
DATABASE_URL=postgresql://postgres:sua_senha@postgres:5432/pdimaker_prod

# Redis
REDIS_PASSWORD=sua_senha_redis

# JWT e Autenticação
JWT_SECRET=seu_jwt_secret_seguro
NEXTAUTH_SECRET=seu_nextauth_secret_seguro
NEXTAUTH_URL=https://pdimaker.com.br

# Google OAuth (IMPORTANTE!)
GOOGLE_CLIENT_ID=seu_google_client_id_aqui
GOOGLE_CLIENT_SECRET=seu_google_client_secret_aqui

# URLs
FRONTEND_URL=https://pdimaker.com.br
NEXT_PUBLIC_API_URL=https://api.pdimaker.com.br
```

### 2. Configurar Google OAuth

Para configurar o Google OAuth:

1. Acesse: https://console.cloud.google.com/
2. Crie um novo projeto ou selecione um existente
3. Vá em "APIs e Serviços" > "Credenciais"
4. Clique em "Criar Credenciais" > "ID do cliente OAuth"
5. Configure:
   - Tipo: Aplicativo da Web
   - URIs de redirecionamento autorizados:
     - `https://pdimaker.com.br/api/auth/callback/google`
     - `http://localhost:3300/api/auth/callback/google` (desenvolvimento)
6. Copie o Client ID e Client Secret para o `.env`

---

## 🚀 Como Usar

### Acessar a Aplicação
- **Frontend**: http://seu-dominio.com ou http://localhost:80
- **API**: http://api.seu-dominio.com ou http://localhost:4000
- **Frontend Direto**: http://localhost:3300

### Rotas Protegidas
O middleware protege automaticamente:
- ✅ Rotas públicas: `/`, `/login`, `/about`, `/api/auth`
- 🔒 Todas as outras rotas requerem autenticação
- 🔐 Rotas `/workspace/[slug]` verificam permissão do usuário

### Testar Autenticação
1. Acesse: http://localhost:80/login
2. Clique em "Entrar com Google"
3. Faça login com sua conta Google
4. Será redirecionado para a home page autenticado

---

## 📊 Banco de Dados

### Migrations do Prisma

Para aplicar as migrations do banco:

```bash
# Frontend
cd /var/www/pdimaker/frontend
docker exec pdimaker-web npx prisma db push

# Backend
cd /var/www/pdimaker/backend
docker exec pdimaker-api npx prisma db push
```

### Acessar o Banco

```bash
docker exec -it pdimaker-db psql -U postgres -d pdimaker_prod
```

---

## 🔍 Verificar Logs

```bash
cd /var/www/pdimaker

# Todos os serviços
docker-compose logs -f

# Serviço específico
docker-compose logs -f frontend
docker-compose logs -f backend
docker-compose logs -f nginx
```

---

## 🛠️ Comandos Úteis

```bash
# Ver status dos containers
docker-compose ps

# Reiniciar um serviço
docker-compose restart frontend
docker-compose restart backend
docker-compose restart nginx

# Parar todos os serviços
docker-compose down

# Iniciar todos os serviços
docker-compose up -d

# Rebuild e restart completo
docker-compose down
docker-compose build
docker-compose up -d
```

---

## 📝 Próximos Passos

1. **Configurar Google OAuth** (obrigatório para login funcionar)
2. **Aplicar migrations** do Prisma no banco
3. **Configurar SSL** para HTTPS (certificados em `/var/www/pdimaker/ssl/`)
4. **Criar usuário admin** inicial no banco
5. **Implementar páginas do dashboard** em `frontend/app/(dashboard)/`

---

## 🎯 Estrutura do Middleware

O middleware implementado protege:

```typescript
// Rotas públicas (não requerem autenticação)
["/", "/login", "/about", "/api/auth"]

// Rotas protegidas (requerem autenticação)
Todas as outras rotas

// Rotas com verificação de permissão
/workspace/[slug] - Verifica se usuário tem acesso ao workspace
```

---

## ⚠️ Problemas Conhecidos

1. **Vulnerabilidades no npm**: Execute `npm audit fix` no container
2. **OpenSSL warning**: Não afeta o funcionamento, mas considere atualizar a imagem base
3. **Google OAuth não configurado**: O login não funcionará até configurar

---

## 💡 Dicas

- Use o Prisma Studio para visualizar dados: `npx prisma studio`
- Configure variáveis de ambiente de desenvolvimento no `.env.local`
- Logs em tempo real: `docker-compose logs -f --tail=100`
- O middleware roda no Edge Runtime do Next.js (mais rápido)

---

## 📞 Suporte

Se tiver problemas:
1. Verifique os logs dos containers
2. Confirme que todas as variáveis de ambiente estão configuradas
3. Teste a conexão com o banco de dados
4. Verifique se o Google OAuth está configurado corretamente

---

**Data de Setup**: 19 de Novembro de 2025
**Versão**: 1.0.0

