Este repositório documenta os padrões de commits para projetos de back-end, baseado no Conventional Commits.
Manter um padrão claro nas mensagens de commit facilita o entendimento do histórico do projeto, a colaboração entre desenvolvedores e a automação de processos como geração de changelogs e versionamento semântico.
Estes são os tipos básicos definidos pelo Conventional Commits, usados para categorizar as alterações no código:
Tipo | Descrição breve |
---|---|
feat | Adiciona uma nova funcionalidade |
fix | Corrige um bug |
docs | Atualizações na documentação |
style | Ajustes de formatação ou estilo, sem alterar lógica |
refactor | Modificações no código que não alteram funcionalidades ou corrigem bugs |
test | Adição ou correção de testes |
chore | Tarefas gerais de manutenção que não alteram código nem testes |
build | Mudanças no processo de build ou dependências |
ci | Configurações e scripts para integração contínua |
perf | Melhorias de performance |
revert | Reversão de commits anteriores |
Esses tipos são extensões muito usadas em projetos de back-end para detalhar melhor as alterações específicas:
Tipo | Descrição breve |
---|---|
infra | Alterações na infraestrutura (Docker, servidores, rede) |
db | Mudanças no banco de dados (migrations, seeds) |
security | Correções ou melhorias relacionadas à segurança |
config | Alterações em arquivos de configuração |
log | Ajustes e melhorias em logs e monitoramento |
deps | Atualização de dependências |
api | Modificações na API (endpoints, contratos, regras) |
Tipo do Commit | Emoji | Palavra-chave |
---|---|---|
Funcionalidade nova | ✨ :sparkles: |
feat |
Correção de bug | 🐛 :bug: |
fix |
Documentação | 📝 :memo: |
docs |
Estilo de código | 🎨 :art: |
style |
Refatoração | 🔨 :hammer: |
refactor |
Adicionando um teste | ✅ :white_check_mark: |
test |
Tarefa auxiliar | 🔧 :wrench: |
chore |
Melhoria de performance | ⚡ :zap: |
perf |
Integração contínua | 🤖 :robot: |
ci |
Processo de build | 📦 :package: |
build |
Reversão | ⏪ :rewind: |
revert |
Infraestrutura | 🏗️ :building_construction: |
infra |
Banco de dados | 🗃️ :card_file_box: |
db |
Segurança | 🔐 :closed_lock_with_key: |
security |
Log e monitoramento | 📈 :chart_with_upwards_trend: |
log |
Dependências | 📚 :books: |
deps |
Configuração | ⚙️ :gear: |
config |
API | 🔌 :electric_plug: |
api |
Usado para mudanças rápidas que não exigem corpo explicativo.
Execute:
git commit -m "tipo(escopo opcional): descrição curta"
Para escrever commits completos com título, corpo e BREAKING CHANGE
(se necessário), use:
git commit
Esse comando abrirá o editor padrão do Git para que você possa escrever a mensagem no seguinte formato:
<tipo>(escopo opcional): descrição curta
Corpo explicando o que foi feito, por que foi feito e detalhes relevantes.
BREAKING CHANGE: descreva aqui o que quebra compatibilidade anterior, se houver.
Tipo | Exemplo de commit |
---|---|
Funcionalidade nova | ✨ feat(auth): adiciona middleware JWT para autenticação |
Correção de bug | 🐛 fix(api): corrige erro 500 ao atualizar usuário sem email |
Documentação | 📝 docs(readme): atualiza instruções para rodar o projeto |
Estilo de código | 🎨 style(api): ajusta indentação e remove linhas em branco |
Refatoração | 🔨 refactor(service/user): extrai lógica de verificação para helper |
Adicionando um teste | ✅ test(user): adiciona teste para verificar hash de senha |
Tarefa auxiliar | 🔧 chore: atualiza pacotes e scripts do package.json |
Melhoria de perf. | ⚡ perf(query): otimiza busca de usuários com index no email |
Integração contínua | 🤖 ci(github): adiciona verificação de testes no pull request |
Processo de build | 📦 build: adiciona dotenv ao build final para variáveis de ambiente |
Reversão | ⏪ revert: reverte uso de bcrypt por conflito com ambiente |
Infraestrutura | 🏗️ infra(docker): adiciona volume persistente ao container do banco |
Banco de dados | 🗃️ db(migration): cria tabela de favoritos com relação a usuários |
Segurança | 🔐 security(cors): restringe origens permitidas para frontend |
Log e monitoramento | 📈 log(logger): adiciona logs com Winston para endpoints sensíveis |
Dependências | 📚 deps: atualiza versão do pacote express para 4.18.2 |
Configuração | ⚙️ config: ajusta variáveis de ambiente no arquivo .env |
API | 🔌 api(user): adiciona endpoint para resetar senha |
Abaixo estão exemplos usando a estrutura completa recomendada pelo Conventional Commits:
✨ feat(auth): adiciona middleware JWT para autenticação
Implementa um middleware que valida tokens JWT em rotas protegidas.
Esse middleware será utilizado em todas as rotas privadas do sistema.
🐛 fix(api): corrige erro 500 ao atualizar usuário sem email
Corrige um bug onde o backend retornava erro 500 ao tentar atualizar
um usuário com campo de email nulo.
BREAKING CHANGE: Agora é obrigatório informar um email válido ao atualizar um usuário.
📝 docs(readme): atualiza instruções para rodar o projeto
Melhora as instruções no README adicionando passo a passo para rodar o projeto localmente com Docker.
🎨 style(api): ajusta indentação e remove linhas em branco
Melhorias de estilo no código da camada de controle de usuários.
Nenhuma funcionalidade foi alterada.
🔨 refactor(service/user): extrai lógica de verificação para helper
Move a verificação de duplicidade de email para uma função helper reutilizável.
✅ test(user): adiciona teste para verificar hash de senha
Adiciona testes unitários para garantir que senhas estão sendo
criptografadas corretamente antes de salvar no banco de dados.
🔧 chore: atualiza pacotes e scripts do package.json
Atualiza dependências e scripts de build para ambiente de produção.
⚡ perf(query): otimiza busca de usuários com index no email
Cria um índice no campo email para acelerar consultas frequentes no banco.
🤖 ci(github): adiciona verificação de testes no pull request
Inclui job de testes automatizados na pipeline do GitHub Actions.
📦 build: adiciona dotenv ao build final para variáveis de ambiente
Garante que as variáveis de ambiente do arquivo .env estejam presentes no processo de build.
⏪ revert: reverte uso de bcrypt por conflito com ambiente
Reverte commit anterior que trocava crypto por bcrypt.
🏗️ infra(docker): adiciona volume persistente ao container do banco
Permite que os dados do banco persistam entre reinicializações do container.
🗃️ db(migration): cria tabela de favoritos com relação a usuários
Cria uma nova tabela de favoritos com chave estrangeira para a tabela de usuários.
🔐 security(cors): restringe origens permitidas para frontend
Atualiza configuração CORS para aceitar apenas domínios confiáveis.
📈 log(logger): adiciona logs com Winston para endpoints sensíveis
Agora endpoints de autenticação e pagamento possuem logging detalhado.
📚 deps: atualiza versão do pacote express para 4.18.2
Inclui correções de segurança da nova versão.
⚙️ config: ajusta variáveis de ambiente no arquivo .env
Adiciona nova variável `JWT_SECRET` e remove `SESSION_KEY`.
🔌 api(user): adiciona endpoint para resetar senha
Permite que usuários solicitem um token para redefinir a senha via email.
Contribuições são bem-vindas! Se você quiser sugerir melhorias, corrigir erros ou adicionar novas funcionalidades, siga os passos abaixo:
- Fork este repositório.
- Clone o seu fork localmente:
git clone https://github.com/seu-usuario/seu-repositorio.git
- Crie uma branch com um nome descritivo:
git checkout -b minha-melhoria
- Faça suas alterações seguindo os padrões de commits deste repositório.
- Commit e push para o seu fork:
git add . git commit -m "feat: descreva brevemente sua contribuição" git push origin minha-melhoria
- Abra um Pull Request explicando o que foi alterado e por quê.