Contribuição
Este documento descreve como contribuir para o projeto API de Gerenciamento de Carros.
Primeiros Passos
Configuração do Ambiente de Desenvolvimento
Antes de começar a contribuir, configure seu ambiente de desenvolvimento:
- Fork o repositório para sua conta pessoal
- Clone o fork para sua máquina local:
git clone https://github.com/seu-usuario/car_api.git cd car_api - Adicione o repositório upstream:
git remote add upstream https://github.com/autor-original/car_api.git - Instale as dependências:
poetry install - Ative o ambiente virtual:
poetry shell
Atualizando seu Fork
Mantenha seu fork sincronizado com o repositório original:
# Fetch das atualizações do upstream
git fetch upstream
# Merge das atualizações na branch principal
git checkout main
git merge upstream/main
Tipos de Contribuições
Aceitamos diversos tipos de contribuições:
- Correções de bugs: Identificação e correção de problemas existentes
- Novas funcionalidades: Implementação de recursos solicitados
- Melhorias de código: Refatorações e otimizações
- Documentação: Melhoria da documentação existente ou criação de nova
- Testes: Adição ou melhoria de testes automatizados
- Traduções: Tradução do código ou documentação
- Relatórios de bugs: Identificação de problemas com detalhes claros
- Sugestões de recursos: Propostas de novas funcionalidades
Processo de Contribuição
1. Encontre uma Issue
- Verifique as issues existentes
- Comente na issue que deseja trabalhar para evitar duplicação de esforços
- Se não houver issue para o que deseja resolver, crie uma
2. Crie uma Branch
Crie uma branch para sua contribuição:
# Atualize sua branch principal
git checkout main
git pull origin main
# Crie uma nova branch com nome descritivo
git checkout -b feat/nova-funcionalidade
# ou
git checkout -b fix/nome-do-bug
3. Desenvolva sua Contribuição
- Siga os padrões de codificação do projeto
- Escreva testes para novas funcionalidades
- Atualize a documentação conforme necessário
- Certifique-se de que todos os testes continuam passando
4. Commit suas Mudanças
Siga as convenções de commit semântico:
# Adicione os arquivos modificados
git add .
# Faça o commit com mensagem clara e descritiva
git commit -m "feat(cars): adiciona filtro por preço nos endpoints de carros"
Tipos comuns de commits:
- feat: Nova funcionalidade
- fix: Correção de bug
- docs: Alterações na documentação
- style: Mudanças de estilo (formatação, ponto-e-vírgula faltando, etc.)
- refactor: Refatoração de código
- test: Adição ou modificação de testes
- chore: Tarefas de manutenção
5. Envie sua Contribuição
# Envie sua branch para o GitHub
git push origin feat/nova-funcionalidade
# Crie um Pull Request no GitHub
Diretrizes de Código
Padrões de Codificação
- Siga o guia de estilo do projeto
- Use nomes de variáveis e funções descritivos
- Mantenha funções pequenas e com propósito único
- Comente código complexo ou não óbvio
- Evite duplicação de código
Testes
- Escreva testes para novas funcionalidades
- Mantenha a cobertura de testes acima de 80%
- Teste casos de sucesso e falha
- Use fixtures para dados de teste consistentes
Documentação
- Atualize a documentação para refletir mudanças
- Adicione docstrings para funções públicas
- Atualize exemplos e tutoriais conforme necessário
Processo de Revisão
Pull Request
Ao criar um Pull Request:
- Título descritivo: Use um título claro e conciso
- Descrição detalhada: Explique o que foi feito e por quê
- Referencie issues: Use palavras-chave como "Fixes #123" para fechar issues automaticamente
- Marque revisores: Se souber quem pode revisar, marque-os
Revisão de Código
- Seja receptivo(a) a feedbacks
- Faça perguntas se não entender uma sugestão
- Revise seu próprio código antes de submeter
- Responda a comentários de revisão de forma construtiva
Recursos para Contribuidores
Ambientes de Desenvolvimento
O projeto é compatível com diversos ambientes:
- VS Code: Recomendado com extensões para Python
- PyCharm: Excelente suporte para debugging e refatoração
- Vim/Neovim: Com plugins adequados
- Outros: Qualquer editor com suporte a Python
Ferramentas de Desenvolvimento
- Poetry: Gerenciamento de dependências
- Ruff: Linting e formatação de código
- pytest: Execução de testes
- Alembic: Migrações de banco de dados
Comunicação
Issues
- Use issues para reportar bugs ou sugerir recursos
- Forneça detalhes suficientes para reprodução de bugs
- Seja claro(a) e objetivo(a) na comunicação
Discussões
- Use discussões para conversas mais amplas sobre o projeto
- Tire dúvidas sobre implementação
- Proponha ideias para o futuro do projeto
Reconhecimento
Contribuidores serão reconhecidos de diversas formas:
- Autores: Contribuições significativas aparecerão como co-autores
- Changelog: Contribuições aparecerão nas notas de versão
- Créditos: Nome aparecerá na seção de créditos do projeto
Código de Conduta
Ao contribuir para este projeto, você concorda em seguir nosso Código de Conduta (se existir). Esperamos que todos os participantes:
- Sejam respeitosos e inclusivos
- Comuniquem de forma clara e profissional
- Foquem na qualidade técnica e no valor para os usuários
- Aceitem feedback construtivo com mente aberta
Dúvidas?
Se tiver dúvidas sobre como contribuir:
- Leia a documentação do projeto
- Abra uma issue com sua dúvida
- Entre em contato com os mantenedores (se informações estiverem disponíveis)
Agradecimento
Agradecemos antecipadamente por considerar contribuir para este projeto. Sua ajuda é essencial para tornar este projeto melhor para todos os usuários.