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
packageManagerno 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.jsone depois traduza os outros seis arquivos de idioma. Mantenha a estrutura de chaves idêntica. - Docs: edite
packages/content/docs/en/<slug>.mde depois atualize as traduções. Traduções ausentes caem no inglês automaticamente. - Após mudar messages ou docs, rode
pnpm builde 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:
qualitylint e typecheck;semgrep-sastscan de segurança (template);buildbuild de produção com artefato;secret_detectionscan 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.