Guia para contribuir com o Evolution GO.
- Como Contribuir
- Código de Conduta
- Reportando Bugs
- Sugerindo Features
- Pull Requests
- Padrões de Código
- Processo de Review
Contribuições são bem-vindas! Você pode contribuir:
- 🐛 Reportando bugs
- 💡 Sugerindo novas features
- 📝 Melhorando documentação
- 🔧 Corrigindo bugs
- ✨ Implementando features
- Seja respeitoso e profissional
- Aceite feedback construtivo
- Foque no que é melhor para a comunidade
- Mostre empatia com outros membros
- Verifique se o bug já foi reportado nas Issues
- Teste na versão mais recente
- Colete informações: logs, versão do Go, sistema operacional
**Descrição do Bug**
Descrição clara e concisa do bug.
**Como Reproduzir**
1. Faça X
2. Execute Y
3. Veja erro Z
**Comportamento Esperado**
O que deveria acontecer.
**Comportamento Atual**
O que está acontecendo.
**Screenshots/Logs**
Se aplicável, adicione screenshots ou logs.
**Ambiente**
- OS: [ex: Ubuntu 22.04]
- Go Version: [ex: 1.24.0]
- Evolution GO Version: [ex: v1.0.0]
- PostgreSQL Version: [ex: 15.2]
**Informações Adicionais**
Qualquer outro contexto sobre o problema.**Descrição da Feature**
Descrição clara da feature proposta.
**Problema que Resolve**
Qual problema esta feature resolve?
**Solução Proposta**
Como você imagina que esta feature funcionaria?
**Alternativas Consideradas**
Outras abordagens que você considerou?
**Informações Adicionais**
Mockups, exemplos, referências, etc.- Fork o repositório
- Clone seu fork:
git clone https://git.evochat.com/SEU-USUARIO/evolution-go.git - Crie branch:
git checkout -b feature/minha-feature - Desenvolva e commit suas mudanças
- Push:
git push origin feature/minha-feature - Abra PR no repositório original
- Código segue os padrões do projeto
- Código foi formatado (
make fmt) - Lint passou sem erros (
make lint) - Documentação foi atualizada (se necessário)
- Swagger foi atualizado (
make swagger) se alterou endpoints - Commit messages são descritivas
Use Conventional Commits:
# Feature
git commit -m "feat: adiciona suporte para envio de áudio"
# Bug fix
git commit -m "fix: corrige erro ao deletar instância"
# Documentação
git commit -m "docs: atualiza guia de instalação"
# Refatoração
git commit -m "refactor: simplifica lógica de conexão"
# Chore (manutenção)
git commit -m "chore: atualiza dependências"
# Performance
git commit -m "perf: otimiza query de listagem de mensagens"git commit -m "feat: adiciona endpoint de busca de mensagens
- Implementa GET /message/search
- Adiciona filtros por data, remetente e texto
- Inclui paginação (limit/offset)
- Atualiza documentação Swagger
Closes #42"# Sempre formate antes de commit
make fmt
# Ou manualmente
go fmt ./...
goimports -w .# Execute lint
make lint
# Corrige automaticamente quando possível
golangci-lint run --fixSiga o padrão Handler → Service → Repository:
// pkg/mymodule/handler.go
package mymodule
type MyHandler struct {
service MyService
}
func (h *MyHandler) Create(c *gin.Context) {
// Valida input
// Chama service
// Retorna response
}
// pkg/mymodule/service.go
type MyService interface {
Create(dto CreateDTO) (*Model, error)
}
type myService struct {
repo MyRepository
}
func (s *myService) Create(dto CreateDTO) (*Model, error) {
// Lógica de negócio
// Chama repository
return model, nil
}
// pkg/mymodule/repository.go
type MyRepository interface {
Save(model *Model) error
}
type myRepository struct {
db *gorm.DB
}
func (r *myRepository) Save(model *Model) error {
return r.db.Create(model).Error
}Sempre documente endpoints públicos:
// GetInstance retorna uma instância por ID.
//
// @Summary Buscar instância
// @Description Retorna detalhes de uma instância WhatsApp
// @Tags instance
// @Accept json
// @Produce json
// @Param instanceName path string true "Nome da instância"
// @Success 200 {object} Instance
// @Failure 404 {object} ErrorResponse
// @Security ApiKeyAuth
// @Router /instance/{instanceName} [get]
func (h *InstanceHandler) GetInstance(c *gin.Context) {
// ...
}- ✅ Funcionalidade: O código faz o que deveria?
- ✅ Qualidade: Código limpo, legível e manutenível?
- ✅ Performance: Há problemas de performance?
- ✅ Segurança: Há vulnerabilidades?
- ✅ Testes: Há cobertura adequada? (quando testes existirem)
- ✅ Documentação: Está atualizada?
- Primeira revisão: 1-3 dias úteis
- Revisões subsequentes: 1-2 dias úteis
- Merge: Após aprovação de 1+ mantainer
- Seja receptivo a sugestões
- Faça perguntas se não entender
- Atualize o código conforme feedback
- Force push (
git push -f) é OK durante review
- Delete sua branch:
git branch -d feature/minha-feature - Atualize seu fork:
git pull upstream main
- Issues: https://git.evoai.app/Evolution/evolution-go/issues
- Pull Requests: https://git.evoai.app/Evolution/evolution-go/merge_requests
- Documentação: https://git.evoai.app/Evolution/evolution-go/-/wikis
- Go Style Guide: https://google.github.io/styleguide/go/
- Effective Go: https://go.dev/doc/effective_go
Obrigado por contribuir! 🎉
Mantido por: Equipe EvoAI Services