|
| 1 | +# CodeChat API Docs |
| 2 | + |
| 3 | +Portal oficial de documentação e referência técnica da CodeChat. Guias editoriais e referência OpenAPI compartilham o mesmo `DocumentationShell`, mantendo uma única topbar, sidebar, base tipográfica, painel contextual, tema e comportamento responsivo. O conteúdo editorial continua em MDX e é sincronizado da pasta `docs` do repositório da API. |
| 4 | + |
| 5 | +## O que está incluído |
| 6 | + |
| 7 | +- Referência dinâmica de 95 operações HTTP, agrupadas pelas tags do OpenAPI. |
| 8 | +- URLs compartilháveis baseadas em `operationId`. |
| 9 | +- Layout técnico de três colunas centralizado em até 1680 px, tema escuro/claro, sidebar recolhível e navegação mobile. |
| 10 | +- Autenticação, parâmetros, request body, schemas, respostas por status e exemplos JSON. |
| 11 | +- Exemplos gerados em cURL, JavaScript, Node.js/Axios, Go, Python e PHP. |
| 12 | +- Acesso direto à coleção oficial `Go v1.0.0` no Postman. |
| 13 | +- Playground no navegador com cancelamento, timeout, resultado formatado e credenciais mascaradas. |
| 14 | +- Busca global por endpoint, rota, método, parâmetro, schema e evento (`Ctrl/Cmd + K`). |
| 15 | +- Catálogo de 41 webhooks reais: 27 por instância e 14 globais de Message Batch. |
| 16 | +- Guias editoriais existentes, changelog, migração e explicação explícita da ausência de WebSocket/SSE. |
| 17 | + |
| 18 | +O relatório completo de paridade entre runtime e contrato fica em [`docs/api-reference-audit.md`](docs/api-reference-audit.md). |
| 19 | + |
| 20 | +## Capturas de tela |
| 21 | + |
| 22 | +As capturas finais de desktop e mobile podem ser adicionadas em `public/screenshots/` após a publicação no ambiente definitivo. |
| 23 | + |
| 24 | +## Tecnologias e decisões |
| 25 | + |
| 26 | +O projeto já existia como portal Next.js; por isso ele foi evoluído em vez de criar um segundo frontend ou remover a documentação atual. A base usa Next.js 16, React 19, TypeScript strict, Tailwind CSS 4, Fumadocs/MDX, Prism, Lucide, Zod, `openapi-types`, YAML, Vitest, Testing Library e Playwright. |
| 27 | + |
| 28 | +O OpenAPI é a fonte única da referência HTTP. Componentes React não contêm listas manuais de endpoints. Regras editoriais como ordem de tags, aliases e flags experimentais ficam centralizadas em `src/config/documentation.ts`. O documento é lido e normalizado uma única vez por processo e as páginas são divididas por rota. |
| 29 | + |
| 30 | +## Estrutura principal |
| 31 | + |
| 32 | +```text |
| 33 | +src/ |
| 34 | + app/api-reference/ rotas da referência e estilos responsivos |
| 35 | + components/api/ endpoint, schemas, respostas e playground |
| 36 | + components/layout/ DocumentationShell, topbar, sidebar e painel contextual |
| 37 | + components/common/ código, cópia e estados reutilizáveis |
| 38 | + features/openapi/ loader, normalização, exemplos e code samples |
| 39 | + features/playground/ montagem segura de requisições |
| 40 | + features/search/ ranking do índice global |
| 41 | + config/ branding e ordem documental |
| 42 | +content/docs/ conteúdo MDX sincronizado e guias locais |
| 43 | +public/openapi.yml cópia sincronizada servida pelo portal |
| 44 | +public/webhook-events.json catálogo gerado de eventos |
| 45 | +scripts/ sync, auditoria, validação e índices |
| 46 | +tests/ testes unitários, componentes e E2E |
| 47 | +``` |
| 48 | + |
| 49 | +## Pré-requisitos |
| 50 | + |
| 51 | +- Node.js 22 ou superior; |
| 52 | +- pnpm 11.12; |
| 53 | +- repositório `whatsapp-go-api` no diretório irmão, ou `CODECHAT_SOURCE_DOCS` apontando para sua pasta `docs`. |
| 54 | + |
| 55 | +## Desenvolvimento |
| 56 | + |
| 57 | +```bash |
| 58 | +pnpm install |
| 59 | +cp .env.example .env |
| 60 | +pnpm dev |
| 61 | +``` |
| 62 | + |
| 63 | +O portal abre em `http://localhost:3000`. Antes do desenvolvimento, a documentação fonte, o catálogo de webhooks e o índice de busca são atualizados automaticamente. |
| 64 | + |
| 65 | +Comandos úteis: |
| 66 | + |
| 67 | +```bash |
| 68 | +pnpm sync:docs |
| 69 | +pnpm audit:api |
| 70 | +pnpm validate:openapi |
| 71 | +pnpm generate:search-index |
| 72 | +pnpm lint |
| 73 | +pnpm typecheck |
| 74 | +pnpm test |
| 75 | +pnpm test:e2e |
| 76 | +pnpm build |
| 77 | +pnpm start |
| 78 | +``` |
| 79 | + |
| 80 | +`pnpm check` executa lint, typecheck, testes unitários e build. |
| 81 | + |
| 82 | +## Variáveis de ambiente |
| 83 | + |
| 84 | +| Variável | Finalidade | Padrão | |
| 85 | +| ------------------------------ | --------------------------------------- | ------------------------- | |
| 86 | +| `NEXT_PUBLIC_SITE_URL` | URL pública do portal | `http://localhost:3000` | |
| 87 | +| `NEXT_PUBLIC_CODECHAT_API_URL` | Base URL usada em exemplos e playground | `http://localhost:8084` | |
| 88 | +| `NEXT_PUBLIC_DOCS_TITLE` | Título do portal | `CodeChat API` | |
| 89 | +| `NEXT_PUBLIC_DOCS_VERSION` | Versão exibida | `1.0.0` | |
| 90 | +| `NEXT_PUBLIC_GITHUB_URL` | Link do repositório | repositório da API | |
| 91 | +| `NEXT_PUBLIC_OPENAPI_URL` | Caminho ou URL absoluta do OpenAPI | `/openapi.yml` | |
| 92 | +| `NEXT_PUBLIC_POSTMAN_URL` | Coleção oficial da CodeChat no Postman | coleção `Go v1.0.0` | |
| 93 | +| `CODECHAT_SOURCE_DOCS` | Pasta de documentação da API | `../whatsapp-go-api/docs` | |
| 94 | + |
| 95 | +O `docker-compose.yml` também aceita os aliases solicitados `VITE_API_BASE_URL`, `VITE_DOCS_TITLE`, `VITE_DOCS_VERSION`, `VITE_GITHUB_URL`, `VITE_OPENAPI_URL` e `VITE_API_POSTMAN`, mapeando-os para as variáveis públicas do Next.js. Essas variáveis são aplicadas em build time; é necessário reconstruir a imagem ao alterá-las. |
| 96 | + |
| 97 | +## OpenAPI e manutenção |
| 98 | + |
| 99 | +A fonte canônica é `../whatsapp-go-api/docs/openapi.yml`. Não edite apenas a cópia em `public/`. |
| 100 | + |
| 101 | +Para documentar um endpoint: |
| 102 | + |
| 103 | +1. confirme a rota, middleware, DTO, validações e respostas no código Go; |
| 104 | +2. atualize o path existente na especificação canônica, incluindo `operationId`, tag, security e exemplos; |
| 105 | +3. execute `pnpm sync:docs && pnpm audit:api && pnpm validate:openapi`; |
| 106 | +4. use `src/config/documentation.ts` somente para ordem, aliases ou metadados editoriais — nunca para duplicar a operação. |
| 107 | + |
| 108 | +Para adicionar uma categoria, declare a tag no OpenAPI e inclua seu nome em `tagOrder`. Exemplos explícitos em `content`/`schema` têm prioridade; na ausência deles, o gerador respeita tipo, enum, formato, default e referências recursivas. |
| 109 | + |
| 110 | +## Playground e segurança |
| 111 | + |
| 112 | +As requisições são executadas diretamente pelo navegador contra a Base URL, sem serviço intermediário. A API precisa liberar a origem do portal no CORS. Tokens não são enviados a terceiros nem registrados no console. A sessão usa `sessionStorage` por padrão; `localStorage` só é ativado por escolha explícita. |
| 113 | + |
| 114 | +Não existe proxy remoto inseguro. Um proxy local pode ser configurado por quem desenvolve, mas não faz parte da configuração de produção. |
| 115 | + |
| 116 | +## Docker e produção |
| 117 | + |
| 118 | +O Dockerfile usa múltiplos estágios e produz o servidor standalone do Next.js. O Compose adiciona Nginx com gzip, cache longo apenas para assets versionados, ausência de cache agressivo no OpenAPI, SPA/reverse-proxy fallback e healthchecks. |
| 119 | + |
| 120 | +O build da imagem reutiliza o OpenAPI sincronizado e o relatório de auditoria já versionados, pois o repositório irmão da API fica fora do contexto Docker. A auditoria contra o código Go continua obrigatória no desenvolvimento e no CI antes de produzir a imagem. |
| 121 | + |
| 122 | +```bash |
| 123 | +docker compose up --build -d |
| 124 | +curl http://localhost:3000/healthz |
| 125 | +``` |
| 126 | + |
| 127 | +Para outra porta, use `DOCS_PORT=8080 docker compose up --build -d`. Sem Compose: |
| 128 | + |
| 129 | +```bash |
| 130 | +docker build -t codechat-api-docs . |
| 131 | +docker run --rm -p 3000:3000 codechat-api-docs |
| 132 | +``` |
| 133 | + |
| 134 | +## Testes e CI |
| 135 | + |
| 136 | +- Vitest valida normalização, `$ref`, schemas recursivos, exemplos, busca, cURL, request builder e tabs de resposta. |
| 137 | +- Playwright valida navegação da sidebar, busca por teclado, playground e ausência de overflow no mobile. |
| 138 | +- A auditoria falha quando uma rota registrada não está no OpenAPI ou quando o OpenAPI contém rota inexistente. |
| 139 | +- O CI sincroniza o repositório fonte e executa lint, typecheck, testes, validação OpenAPI e build. |
| 140 | + |
| 141 | +## Publicação |
| 142 | + |
| 143 | +Publique a imagem gerada pelo Dockerfile ou o servidor standalone atrás do Nginx fornecido. Preserve `public/openapi.yml` e `public/webhook-events.json` no artefato. Depois do deploy, confirme `/healthz`, uma URL de endpoint como `/api-reference/listInstances`, busca, playground/CORS e os viewports desktop e mobile. |
0 commit comments