# groq-resumer-api

Cloudflare Worker (Hono) que responde perguntas sobre um portfólio via Groq, com base num CV em `src/cv.md`.

Projeto de estudo: mostra como montar um chat de IA simples, hospedado de graça, para "conversar" com seu currículo.

## Endpoint

`POST /chat`

```json
{
  "messages": [
    { "role": "user", "content": "Qual é a stack principal?" },
    { "role": "assistant", "content": "..." },
    { "role": "user", "content": "sim" }
  ]
}
```

Compatível também com `{ "message": "..." }` (turno único).

Resposta:

```json
{ "answer": "..." }
```

Limites: até 12 mensagens; user ≤ 800 chars; assistant ≤ 2000 chars.

## Pré-requisitos

1. Conta [Cloudflare](https://dash.cloudflare.com)
2. Chave [Groq](https://console.groq.com/keys)
3. [Bun](https://bun.sh) instalado

## Setup local

```bash
cd portfolio-chat-api
bun install
cp .dev.vars.example .dev.vars
# edite .dev.vars e cole GROQ_API_KEY
bun run dev
```

Worker local: `http://127.0.0.1:8787`

Teste rápido:

```bash
curl -X POST http://127.0.0.1:8787/chat \
  -H "Content-Type: application/json" \
  -H "Origin: http://localhost:5173" \
  -d "{\"messages\":[{\"role\":\"user\",\"content\":\"Qual sua formação?\"}]}"
```

## Lint e testes

```bash
bun run lint        # Biome
bun run lint:fix   # Biome --write
bun run typecheck   # tsc --noEmit
bun run test        # bun:test
```

## Deploy

### 1. Login na Cloudflare

```bash
bunx wrangler login
```

Abre o browser, autoriza o Wrangler na sua conta.

### 2. Configurar o secret (nunca no código)

```bash
bunx wrangler secret put GROQ_API_KEY
```

Cole a chave quando pedir. Fica só no ambiente Cloudflare.

### 3. Deploy manual

```bash
bunx wrangler deploy
```

Ao terminar, o CLI imprime uma URL tipo:

`https://portfolio-chat-api.<seu-subdomain>.workers.dev`

### 4. Ligar no seu site

No componente que faz as perguntas (ex: `AskAbout.tsx`):

```ts
const CHAT_API_URL = 'https://portfolio-chat-api.<seu-subdomain>.workers.dev/chat'
```

Rebuild e publique seu site.

### 5. Atualizar o CV

Edite `src/cv.md` e rode de novo:

```bash
bunx wrangler deploy
```

## CI/CD (GitHub Actions)

Push em `main` dispara [`.github/workflows/deploy.yml`](.github/workflows/deploy.yml):

1. `bun install`
2. `bun run lint && bun run typecheck`
3. `bun run test`
4. Deploy via `cloudflare/wrangler-action`

Secret necessário no repositório GitHub:

- `CLOUDFLARE_API_TOKEN` — token com permissão de deploy de Workers

`GROQ_API_KEY` continua só como secret no Wrangler (não vai no GitHub).

## CORS

Configure as origens permitidas via `ALLOWED_ORIGINS` no `wrangler.jsonc`, por exemplo:

- `https://seu-usuario.github.io`
- `http://localhost:5173` (dev Vite)

## Segurança

- `GROQ_API_KEY` só como secret / `.dev.vars` (gitignored)
- CV em arquivo local (não é segredo; já é público no portfólio)
