Todos os docs

DOC/ Atualizado em 2026-09-19

Desenvolvimento

Setup, comandos e fluxo de contribuição deste repositório.

  • Node.js 24 ou mais novo
  • pnpm 12 (fixado via packageManager no package.json)

pnpm install

pnpm dev          # turbo dev: app web com HMR
pnpm type-check   # turbo type-check em todo o monorepo
pnpm lint         # eslint (regras de next + typescript), zero warnings
pnpm test         # turbo test (vitest)
pnpm build        # build de produção em apps/web/.next

Todos os checks devem passar antes do push: pnpm lint com zero erros, pnpm type-check com zero erros, pnpm format:check sem diferenças e um pnpm build bem-sucedido.

  • Strings de interface: edite packages/i18n/messages/en.json e depois traduza os outros seis arquivos de idioma. Mantenha a estrutura de chaves idêntica.
  • Docs: edite packages/content/docs/en/<slug>.md e depois atualize as traduções. Traduções ausentes caem no inglês automaticamente.
  • Após mudar messages ou docs, rode pnpm build e confira cada rota de idioma no navegador.

Os commits do repositório são criados com a identidade GitLab do dono do projeto para que os jobs de CI rodem com verificação de identidade, e cada commit carrega um trailer de co-autoria:

Co-authored-by: Ella Mizuki

Isso é obrigatório para o pipeline rodar; veja deployment.md.

main é protegida: push por Maintainers, force push desabilitado. Reescritas de histórico (como re-atribuir autoria de commits) exigem remover a proteção temporariamente, fazer o force push e restaurá-la com as configurações exatamente iguais.

O pipeline definido em .gitlab-ci.yml roda quatro jobs:

  • quality lint e typecheck;
  • semgrep-sast scan de segurança (template);
  • build build de produção com artefato;
  • secret_detection scan de segredos (template).

O setup do pnpm é limitado aos jobs quality e build. As imagens dos templates de segurança não incluem corepack e não devem herdá-lo.

A validação é:

  • lint, typecheck, build;
  • passada de navegador em 375, 768, 1024, 1440 e 1920px com zero overflow horizontal, em todos os idiomas;
  • passada de reduced motion: sem shimmer ou transições ativas, conteúdo visível;
  • navegação por âncora limpa o header fixo (scroll padding);
  • rotas de docs resolvem em todos os idiomas, incluindo o fallback em inglês.