Ir para o conteúdo

Guia de Contribuição

Este documento descreve os padrões de código, processo de contribuição e boas práticas para o projeto Billings Ease.

Índice

  1. Visão Geral
  2. Padrões de Código
  3. Processo de Contribuição
  4. Commits
  5. Pull Requests
  6. Testes

Visão Geral

Este guia estabelece padrões para contribuições ao projeto Billings Ease.

Princípios: - Código limpo e legível - Testes obrigatórios - Documentação atualizada - Revisão de código


Padrões de Código

Backend (Go)

Formatação: - Use gofmt ou goimports - Máximo 100 caracteres por linha - Use tabs para indentação

Nomenclatura: - Pacotes: lowercase, uma palavra - Funções: PascalCase (públicas), camelCase (privadas) - Constantes: PascalCase ou UPPER_CASE

Exemplo:

// ✅ BOM
func CreateUser(user *models.User) error {
    // ...
}

// ❌ EVITAR
func create_user(user *models.User) error {
    // ...
}

Estrutura: - Handlers: apenas HTTP concerns - Services: lógica de negócio - Repositories: acesso a dados - Models: estruturas de dados


Frontend (TypeScript/React)

Formatação: - Use Prettier - Máximo 100 caracteres por linha - 2 espaços para indentação

Nomenclatura: - Componentes: PascalCase - Funções: camelCase - Constantes: UPPER_CASE ou camelCase - Hooks: useXxx

Exemplo:

// ✅ BOM
export function CycleDetails() {
  const { cycle } = useActiveCycle()
  return <div>...</div>
}

// ❌ EVITAR
export function cycle_details() {
  // ...
}

Estrutura: - Componentes em components/ - Páginas em pages/ - Hooks em hooks/ - Utils em utils/ ou lib/


Processo de Contribuição

1. Fork e Clone

# Fork no GitHub, depois:
git clone https://github.com/seu-usuario/billings-ease.git
cd billings-ease

2. Criar Branch

git checkout -b feature/minha-feature
# ou
git checkout -b fix/correcao-bug

Convenção de nomes: - feature/ - Nova funcionalidade - fix/ - Correção de bug - docs/ - Documentação - refactor/ - Refatoração

3. Desenvolver

  • Seguir padrões de código
  • Escrever testes
  • Atualizar documentação se necessário

4. Commits

git add .
git commit -m "feat: adiciona nova funcionalidade X"

5. Push e Pull Request

git push origin feature/minha-feature

Criar Pull Request no GitHub com: - Descrição clara - Referência a issues (se houver) - Screenshots (se UI)


Commits

Formato

Seguir Conventional Commits:

<tipo>(<escopo>): <descrição>

[corpo opcional]

[rodapé opcional]

Tipos

  • feat - Nova funcionalidade
  • fix - Correção de bug
  • docs - Documentação
  • style - Formatação
  • refactor - Refatoração
  • test - Testes
  • chore - Tarefas de manutenção

Exemplos

feat(cycles): adiciona validação de símbolos permitidos
fix(auth): corrige refresh token expirado
docs(api): atualiza documentação de endpoints
test(handlers): adiciona testes para login
refactor(services): simplifica lógica de fertilidade

Pull Requests

Checklist

Antes de criar PR:

  • [ ] Código segue padrões
  • [ ] Testes passam (npm test / go test ./...)
  • [ ] Testes cobrem mudanças
  • [ ] Documentação atualizada
  • [ ] Sem linter errors
  • [ ] Commits seguem convenção

Template de PR

## Descrição
Breve descrição das mudanças

## Tipo de Mudança
- [ ] Bug fix
- [ ] Nova funcionalidade
- [ ] Breaking change
- [ ] Documentação

## Como Testar
Passos para testar as mudanças

## Screenshots (se aplicável)
Adicionar screenshots de mudanças de UI

Testes

Backend

Executar todos:

go test ./...

Com coverage:

go test -cover ./...

Teste específico:

go test ./internal/handlers/auth

Requisitos: - Novas funcionalidades devem ter testes - Coverage mínimo: 70% (objetivo)


Frontend

Executar todos:

npm test

Watch mode:

npm run test:watch

Coverage:

npm run test:coverage

Requisitos: - Componentes devem ter testes - Hooks devem ter testes - Coverage mínimo: 60% (objetivo)


Code Review

Processo

  1. Criar PR
  2. Aguardar revisão
  3. Responder feedback
  4. Fazer ajustes se necessário
  5. Merge após aprovação

Critérios de Revisão

  • Código limpo e legível
  • Segue padrões do projeto
  • Testes adequados
  • Documentação atualizada
  • Sem breaking changes (ou documentados)

Referências