Obrigado por considerar contribuir para este projeto! Sua ajuda é muito bem-vinda e valorizada. Este documento fornece diretrizes e informações sobre como contribuir de forma efetiva.
Este projeto e todos os participantes estão sujeitos ao nosso Código de Conduta. Ao participar, você concorda em cumprir estes termos. Por favor, reporte comportamentos inaceitáveis para [INSERIR_EMAIL_AQUI].
Existem várias maneiras de contribuir para este projeto:
Encontrou um bug? Ajude-nos a corrigi-lo:
- Verifique se já existe uma issue similar
- Use o template de bug report ao criar uma nova issue
- Seja específico - inclua detalhes sobre o ambiente e passos para reproduzir
- Adicione capturas de tela se aplicável
Tem uma ideia para melhorar o projeto?
- Abra uma issue com o label "enhancement"
- Descreva claramente o que você gostaria de ver
- Explique por que seria útil para a comunidade
- Considere implementar a melhoria você mesmo
# Clone o repositório
git clone https://github.com/[USUARIO]/[REPOSITORIO].git
cd [REPOSITORIO]
# Instale as dependências
npm install
# ou
pip install -r requirements.txt
# ou
[COMANDO_DE_INSTALACAO_ESPECIFICO]
# Execute os testes para garantir que tudo está funcionando
npm test
# ou
pytest
# ou
[COMANDO_DE_TESTE_ESPECIFICO]- Fork o repositório
- Crie uma branch para sua feature (
git checkout -b feature/nova-funcionalidade) - Faça suas alterações seguindo as diretrizes de código
- Adicione testes para cobrir suas alterações
- Execute os testes e certifique-se de que passam
- Faça commit seguindo nosso padrão de mensagens
- Push para sua branch (
git push origin feature/nova-funcionalidade) - Abra um Pull Request
A documentação sempre pode ser melhorada:
- Corrigir erros de digitação ou gramática
- Adicionar exemplos
- Melhorar explicações
- Traduzir conteúdo
- Adicionar tutoriais
Contribuições de design são bem-vindas:
- Melhorias na interface do usuário
- Ícones e ilustrações
- Experiência do usuário
- Acessibilidade
- Siga o style guide do projeto (use o linter configurado)
- Mantenha consistência com o código existente
- Comente código complexo quando necessário
- Use nomes descritivos para variáveis e funções
- Mantenha funções pequenas e focadas
// ✅ Bom
function calcularPrecoTotal(items, desconto = 0) {
const subtotal = items.reduce((acc, item) => acc + item.preco, 0);
return subtotal * (1 - desconto);
}
// ❌ Evite
function calc(i, d) {
let t = 0;
for (let x of i) t += x.p;
return t * (1 - d);
}Usamos o padrão Conventional Commits:
tipo(escopo): descrição breve
Descrição mais detalhada se necessário.
Refs: #123
Tipos permitidos:
feat: nova funcionalidadefix: correção de bugdocs: alterações na documentaçãostyle: formatação, ponto e vírgula, etcrefactor: refatoração de códigotest: adição ou correção de testeschore: mudanças no processo de build, dependências, etc
Exemplos:
feat(auth): adicionar login social com Google
fix(api): corrigir erro de timeout na requisição de usuários
docs(readme): atualizar instruções de instalação
test(utils): adicionar testes para função de validação
- Escreva testes para todas as novas funcionalidades
- Mantenha alta cobertura de testes (mínimo 80%)
- Use nomes descritivos nos testes
- Teste casos extremos e cenários de erro
// Exemplo de teste bem estruturado
describe('calcularPrecoTotal', () => {
it('deve calcular o preço total sem desconto', () => {
const items = [{ preco: 10 }, { preco: 20 }];
expect(calcularPrecoTotal(items)).toBe(30);
});
it('deve aplicar desconto corretamente', () => {
const items = [{ preco: 100 }];
expect(calcularPrecoTotal(items, 0.1)).toBe(90);
});
it('deve retornar 0 para lista vazia', () => {
expect(calcularPrecoTotal([])).toBe(0);
});
});- Verifique se sua branch está atualizada com a main
- Execute todos os testes localmente
- Execute o linter e corrija todos os problemas
- Adicione/atualize testes se necessário
- Atualize a documentação se necessário
## Descrição
Breve descrição das mudanças.
## Tipo de Mudança
- [ ] Bug fix (mudança que corrige um problema)
- [ ] Nova funcionalidade (mudança que adiciona funcionalidade)
- [ ] Breaking change (mudança que quebra compatibilidade)
- [ ] Documentação
## Como Testar
Passos para testar as mudanças:
1. ...
2. ...
3. ...
## Checklist
- [ ] Meu código segue o style guide do projeto
- [ ] Fiz uma auto-revisão do meu código
- [ ] Comentei partes complexas do código
- [ ] Fiz mudanças correspondentes na documentação
- [ ] Minhas mudanças não geram novos warnings
- [ ] Adicionei testes que provam que minha correção/funcionalidade funciona
- [ ] Testes novos e existentes passam localmente
## Screenshots (se aplicável)
[Adicione screenshots aqui]
## Issues Relacionadas
Fixes #123- Automated checks devem passar (CI/CD, testes, linting)
- Pelo menos um maintainer deve aprovar
- Todas as conversas devem ser resolvidas
- Documentação deve estar atualizada
- Testes devem cobrir as mudanças
- ESLint
- Prettier
- GitLens
- Thunder Client (para testes de API)
Copie o arquivo .env.example para .env e configure:
cp .env.example .envEdite o arquivo .env com suas configurações locais.
# Executar em modo de desenvolvimento
npm run dev
# Executar testes
npm test
# Executar testes com coverage
npm run test:coverage
# Executar linting
npm run lint
# Corrigir problemas de lint automaticamente
npm run lint:fix
# Build para produção
npm run build├── src/ # Código fonte
│ ├── components/ # Componentes reutilizáveis
│ ├── pages/ # Páginas da aplicação
│ ├── services/ # Lógica de negócio
│ ├── utils/ # Funções utilitárias
│ └── types/ # Definições de tipos
├── tests/ # Testes
├── docs/ # Documentação
├── public/ # Arquivos estáticos
├── .github/ # Templates e workflows
└── package.json # Dependências e scripts
**Descreva o bug**
Descrição clara e concisa do problema.
**Para Reproduzir**
Passos para reproduzir o comportamento:
1. Vá para '...'
2. Clique em '....'
3. Role para baixo até '....'
4. Veja o erro
**Comportamento Esperado**
Descrição clara do que você esperava que acontecesse.
**Screenshots**
Se aplicável, adicione screenshots para explicar o problema.
**Ambiente:**
- OS: [ex: iOS]
- Browser: [ex: chrome, safari]
- Versão: [ex: 22]
**Informações Adicionais**
Qualquer outra informação sobre o problema.**A sua feature request está relacionada a um problema? Descreva.**
Descrição clara e concisa do problema.
**Descreva a solução que você gostaria**
Descrição clara e concisa do que você quer que aconteça.
**Descreva alternativas consideradas**
Descrição clara e concisa de soluções alternativas consideradas.
**Informações adicionais**
Qualquer outra informação ou screenshot sobre a feature request.- Documentação: [link para documentação]
- Issues: [link para issues]
- Discussions: [link para discussions]
- Discord/Slack: [link para chat da comunidade]
- Wiki: [link para wiki se houver]
Contribuidores são listados em nosso README.md e no arquivo CONTRIBUTORS.md.
Ao contribuir para este projeto, você concorda que suas contribuições serão licenciadas sob a MIT License.
Não hesite em abrir uma issue com a tag "question" se você tiver dúvidas sobre como contribuir!
Obrigado por contribuir! 🎉