Skip to content

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 lint

A 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 ​

TipoConvençãoExemplo
Utilitários TypeScriptcamelCasecalcularPrescricao.ts
Composables VuecamelCase iniciando com useuseRvt.ts
Componentes VuePascalCaseRvtPrincipal.vue
Classes TypeScriptPascalCaseBeneficio.ts
Testesmesmo nome + .spec.tscalcularPrescricao.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 calculadora

Dependê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:

  1. Adicione a versão desejada no catálogo correto em pnpm-workspace.yaml
  2. Referencie com "catalog:<nome>" no package.json da app/package
  3. 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.2

ESLint e Stylelint ​

bash
pnpm lint           # verifica
pnpm lint:fix       # corrige automaticamente
pnpm lint:styles    # verifica CSS/SCSS

A config ESLint compartilhada (@fc/eslint-config) usa @antfu/eslint-config + plugin fc (regras internas).