Dhedalos - Frontend de Cadastros
Visão geral do repositório
Este repositório implementa uma aplicação Next.js para onboarding, cadastro e inscrição de participantes, com páginas em app/, APIs internas em pages/api/ e app/api/, Storybook para componentes e artefatos de operação com Docker, Helm e Kubernetes.
Evidências:
package.json#L5-L13app/[slug]/page.tsx#L16-L47pages/api/health.ts#L20-L107Dockerfile#L1-L58helm/templates/deployment.yaml#L35-L78
Documentação
A baseline de documentação criada nesta tarefa está em docs/, com visão geral, arquitetura, API, modelo de dados, operação, ADRs e inventário de features.
Links principais:
docs/overview.mddocs/architecture/c4-component.mddocs/architecture/mindmap.mddocs/api/openapi.yamldocs/api/examples.mddocs/data/model.mddocs/operations/runbook.mddocs/operations/observability.mddocs/adr/0001-architecture-overview.mddocs/features/README.md
Como rodar
Pré-requisitos observados no repositório
- O build em contêiner usa Node.js 20 em
Dockerfile#L2eDockerfile.prod#L2. - O projeto publica scripts de desenvolvimento, build, Storybook e testes unitários em
package.json#L5-L13. - Há dependências privadas no namespace
@dhedalos, distribuídas via GitHub Packages empackage.json#L16-L17epnpm-lock.yaml#L847-L857.
Setup local
- Crie
.enva partir de.env.example. - Instale as dependências com
npm install. - Execute um dos fluxos abaixo.
Comandos disponíveis:
npm run dev
npm run test:unit
npm run build
npm run start
npm run start:storybook
npm run build:storybook
Evidências:
Execução com Docker Compose
O repositório também expõe execução via Docker Compose, com a aplicação em 3010:3000 e leitura de variáveis a partir de .env.
source ./compose.sh
Evidências:
Variáveis de ambiente
Declaradas em .env.example
NEXT_APP_VERSIONNEXT_BACKEND_URLNEXT_ENABLE_API_MOCKSAPI_CLASSES_BACKEND_URLAPI_REGISTRATION_BACKEND_URLAPI_REGISTRATION_TOKENAPI_WP_BACKEND_URLAPI_WP_BACKEND_TOKENAPI_WHATS_BASE_URLAPI_WHATS_TOKENNEXTAUTH_URLNEXTAUTH_SECRETNEXT_DATADOG_ENVNEXT_DATADOG_APP_IDNEXT_DATADOG_CLIENT_IDNEXT_DATADOG_SERVICE_NAMENEXT_DATADOG_SESSION_SAMPLE_RATENEXT_DATADOG_SESSION_REPLAY_SAMPLE_RATENEXT_AMEI_URLNEXT_AMEI_REALMNEXT_AMEI_CLIENT_IDNEXT_AMEI_SCOPETOGGLE_AMEI_INTEGRATIONTOGGLE_INSCRIPTION_FALLBACKMETADATA_SITE_NAMEMETADATA_SITE_DESCRIPTIONMETADATA_SHOW_COMPANY_BRANDMETADATA_SUPPORT_URLMETADATA_PRIVACY_POLICY_URLMETADATA_FAVICON_URL
Evidência:
Consumidas no código e no deploy
- WordPress:
API_WP_BACKEND_URL,API_WP_BACKEND_TOKEN. - WhatsApp:
API_WHATS_BASE_URL,API_WHATS_TOKEN. - NextAuth:
NEXTAUTH_URL,NEXTAUTH_SECRET. - Datadog:
NEXT_DATADOG_APP_ID,NEXT_DATADOG_CLIENT_TOKEN,NEXT_DATADOG_SERVICE_NAME,NEXT_DATADOG_ENV,NEXT_DATADOG_SESSION_SAMPLE_RATE,NEXT_DATADOG_SESSION_REPLAY_SAMPLE_RATE. - AMEI/Keycloak:
TOGGLE_AMEI_INTEGRATION,NEXT_AMEI_URL,NEXT_AMEI_REALM,NEXT_AMEI_CLIENT_ID. - Metadata e tracking:
METADATA_*,META_PIXEL_ID,META_ACCESS_TOKEN.
Evidências:
src/common/constants/config.ts#L1-L7pages/api/auth/[...nextauth].ts#L25-L38app/api/envs/route.ts#L4-L19app/layout.tsx#L23-L60app/api/meta-conversion/route.ts#L4-L10helm/templates/secret.yaml#L12-L60
Contexto C4 L1
Atores
- Participante: consulta detalhes do curso, inicia inscrição, valida OTP e conclui cadastro.
- Time de operação: publica imagens Docker e faz deploy via Helm em clusters
oke-we-001eoke-we-002.
Evidências:
app/[slug]/page.tsx#L16-L47app/[slug]/inscricao/page.tsx#L12-L27app/[slug]/inscricao/codigo/page.tsx#L8-L17app/[slug]/inscricao/confirmacao/page.tsx#L8-L17.github/workflows/ci-cd-pipeline.yaml#L49-L57.github/workflows/ci-cd-pipeline.yaml#L84-L90
Integrações e dependências
- WordPress backend: customização do curso, cadastro de participantes, status de inscrição, link de grupo e modo manutenção.
- Backend de WhatsApp: envio e confirmação de OTP, além do disparo de template de fluxo.
- AMEI/Keycloak e pacote
@dhedalos/auth: autenticação opcional do fluxo de inscrição. - NextAuth: sessão local baseada em credenciais
cpf. - Datadog RUM: telemetria do browser inicializada a partir de
/api/envs. - Meta Conversions API e Meta Pixel: tracking client-side e server-side.
Evidências:
src/features/api/external/wp/index.ts#L1-L6src/features/api/external/whats/index.ts#L1-L2pages/api/config/keycloak.ts#L22-L61src/features/components/CourseRegistration/CourseRegistration.component.tsx#L23-L31pages/api/auth/[...nextauth].ts#L39-L130app/components/DatadogInit.tsx#L8-L29app/components/MetaPixel.tsx#L13-L47app/api/meta-conversion/route.ts#L22-L46
Links para outros repositórios
Não há URLs confirmadas de outros repositórios dentro do workspace analisado. O que existe com evidência local são dependências internas distribuídas via GitHub Packages:
@dhedalos/auth@dhedalos/ui-component
Pendência: mapear os repositórios-fonte dessas dependências antes de adicionar links concretos aqui.
Evidências:
Práticas complementares
Storybook
O repositório já possui configuração do Storybook, autodocs habilitado e stories espalhadas por src/.
Evidências:
.storybook/main.ts#L3-L29.storybook/preview.ts#L1-L19package.json#L10-L11src/features/components/CourseDetails/CourseDetails.stories.tsx#L1
Jest
O repositório possui testes unitários com Jest em ambiente jsdom, setup com @testing-library/jest-dom e comando dedicado npm run test:unit. A evidência local de cobertura automatizada é pontual: neste inventário foram encontrados dois arquivos de teste versionados.
Evidências:
package.json#L12-L12package.json#L56-L67jest.config.ts#L13-L30jest.setup.ts#L1-L1src/common/util/person/document/validateCpf/validateCpf.spec.tssrc/features/components/CourseDetails/CourseDetails.spec.tsx
Cypress e E2E
Não há, neste inventário, evidência versionada de Cypress, Playwright ou outro runner E2E como prática ativa do repositório. Isso significa que a documentação deve registrar explicitamente a ausência atual, em vez de presumir cobertura E2E.
Evidências:
JSDoc e Docstrings
Há uso pontual de comentários de documentação em endpoints e utilitários, mas não existe ainda uma convenção centralizada documentada no repositório.
Evidências:
pages/api/health.ts#L16-L19pages/api/readiness.ts#L3-L7src/common/util/fetchWithTimeout.ts#L1-L9src/common/util/person/document/validateCpf/validateCpf.ts#L1-L54
Mindmap
A visão resumida da arquitetura e dos fluxos foi registrada em docs/architecture/mindmap.md.
Pendências de documentação
- Mapear os repositórios-fonte de
@dhedalos/authe@dhedalos/ui-component. - Resolver a divergência entre
NEXT_DATADOG_CLIENT_IDem.env.example#L21-L27eNEXT_DATADOG_CLIENT_TOKENemapp/api/envs/route.ts#L7-L17ehelm/templates/secret.yaml#L45-L51. - Adicionar
META_PIXEL_IDeMETA_ACCESS_TOKENao exemplo de ambiente, se continuarem obrigatórias para tracking server-side emapp/api/meta-conversion/route.ts#L4-L10. - Mapear o contrato completo das respostas repassadas por serviços externos em
PUT /api/v1/participantes/{cpf}ePOST /api/v1/otp/confirm.