Appearance
Convenções de Código
Idioma
Todo o código de domínio usa português brasileiro: identificadores, nomes de função, classes e comentários de negócio.
ts
// ✅ correto
function calcularPrescricao(dataCitacao: Date, prazo: number) { ... }
const periodoContribuicao = new Periodo(inicio, fim)
// ❌ errado
function calculatePrescription(serveDate: Date, term: number) { ... }A regra ESLint fc/no-diacritics-in-identifiers bloqueia acentos e cedilhas em qualquer identificador:
ts
const calculo = calcularContribuicao(segurado) // ✅
const cálculo = calcularContribuição(segurado) // ❌ erro de lintA regra deliberadamente não corrige o nome: uma substituição automática isolada poderia alterar a declaração sem atualizar suas referências. Renomeie o símbolo e todos os usos com a ferramenta de refatoração do editor.
Ambiente de execução
Arquivos exclusivos do navegador ou do servidor declaram o ambiente na primeira linha. Uma linha em branco separa o marcador dos imports:
ts
// @env browser
import { criarPlugin } from './criarPlugin'Os arquivos com sufixo .client.* e .server.* são validados automaticamente: o marcador deve existir uma única vez e corresponder, respectivamente, a browser ou node.
Nomenclatura de arquivos
| Tipo | Convenção | Exemplo |
|---|---|---|
| Utilitários TypeScript | camelCase | calcularPrescricao.ts |
| Composables Vue | camelCase iniciando com use | useRvt.ts |
| Componentes Vue | PascalCase | RvtPrincipal.vue |
| Classes TypeScript | PascalCase | Beneficio.ts |
| Testes | mesmo nome + .spec.ts | calcularPrescricao.spec.ts |
Estrutura de uma calculadora
apps/prev-tc/
├── app/
│ ├── app.config.ts # identidade da app (nome, titulo, tema, versao)
│ ├── components/ # componentes específicos desta app
│ ├── composables/
│ │ ├── workers/ # Web Workers para cálculos pesados
│ │ └── use*.ts # composables de UI
│ └── pages/ # rotas da calculadoraDependências
Versões são centralizadas em pnpm-workspace.yaml com catálogos nomeados. Não especificar versões diretamente no package.json de apps/packages.
jsonc
// ✅ correto
{ "dependencies": { "nuxt": "catalog:nuxt" } }
// ❌ errado
{ "dependencies": { "nuxt": "^4.4.2" } }Para adicionar uma nova dependência:
- Adicione a versão desejada no catálogo correto em
pnpm-workspace.yaml - Referencie com
"catalog:<nome>"nopackage.jsonda app/package - Execute
pnpm install
Commits convencionais
O projeto usa Conventional Commits:
feat(prev-tc): adicionar suporte a benefício de transição
fix(calculos-previdenciarios): corrigir cálculo de carência pós-EC 103
chore(deps): atualizar nuxt para 4.4.2ESLint e Stylelint
bash
pnpm lint # verifica
pnpm lint:fix # corrige automaticamente
pnpm lint:styles # verifica CSS/SCSSA config ESLint compartilhada (@fc/eslint-config) usa @antfu/eslint-config + plugin fc (regras internas).