Pular para o conteúdo principal

Guia de Contribuição

Obrigado por se interessar em contribuir para o AirysChat! Este guia o ajudará a começar a contribuir com nossa plataforma de suporte ao cliente de código aberto. Antes de enviar sua contribuição, reserve um momento para ler as diretrizes a seguir.

Começando

Antes de começar seu trabalho, certifique-se de que existe uma issue para ele. Se não, sinta-se à vontade para criar uma. Você também pode dar uma olhada nas issues marcadas como Good first issues.

Passos Iniciais

  1. Verifique Issues Existentes: Navegue pelas issues do GitHub para ver se alguém já está trabalhando no que você deseja contribuir.
  2. Comente na Issue: Adicione um comentário na issue e aguarde que a issue seja atribuída a você antes de começar a trabalhar nela.
    • Isso ajuda a evitar que várias pessoas trabalhem em issues semelhantes.
  3. Proponha Soluções Complexas: Se a solução for complexa, proponha a solução na issue e aguarde a aprovação de um dos principais contribuidores antes de iniciar a implementação.
    • Isso ajuda a reduzir o tempo de retorno na mesclagem de PRs.
  4. Justifique Novos Recursos: Para solicitações de novos recursos, forneça um motivo convincente para adicionar esse recurso. Casos de uso de negócios da vida real serão super úteis.
  5. Junte-se à Comunidade: Sinta-se à vontade para ingressar em nossa comunidade do Discord se precisar de mais discussões com a equipe principal.

Diretrizes de Pull Request

Usamos o modelo de ramificação git-flow. A branch base é develop. Por favor, abra seus PRs contra a branch develop.

Antes de Enviar

  • Certifique-se de ter lido as diretrizes de triagem de issues antes de fazer uma contribuição.
  • É bom e encorajado ter vários commits pequenos enquanto você trabalha no PR - nós iremos fazer o squash dos commits antes de mesclar.
  • Para outras diretrizes, consulte as Diretrizes de PR
  • Certifique-se de que todos os textos que você adicionar no produto sejam traduzíveis por i18n. Você só precisa adicionar a versão em English das strings. Nós extraímos as traduções de outros idiomas de nossos contribuidores no crowdin. Consulte as Diretrizes de tradução para saber mais.

Fluxo de Trabalho de Desenvolvimento

Desenvolvendo um Novo Recurso

# Crie uma branch no seguinte formato:
feature/<issue-id>-<issue-name>

# Exemplo:
feature/235-contact-panel
Requisitos:
  • Adicione casos de teste complementares
  • Siga nossos padrões de codificação
  • Inclua documentação adequada

Correções de Bugs ou Tarefas Menores (Chores)

# Nomenclatura de branch para correções de bugs:
fix/<issue-id>-<issue-name>

# Nomenclatura de branch para tarefas menores:
chore/<description>
Requisitos:
  • Se você estiver resolvendo uma issue específica, adicione fix: Fixes xxxx (#xxxx é a issue) no título do seu PR
  • Forneça uma descrição detalhada do bug no PR
  • Adicione cobertura de teste apropriada, se aplicável

Configuração do Ambiente

Escolha o guia que corresponde ao seu sistema operacional:

Configuração no macOS

Guia de configuração completo para desenvolvedores macOS

Configuração no Ubuntu

Guia de instalação passo a passo para Ubuntu

Configuração no Windows

Configuração do ambiente de desenvolvimento no Windows 10/11

Configuração com Docker

Configuração rápida usando contêineres Docker

Acelere o Desenvolvimento

Use nossos Comandos Make para acelerar seu fluxo de trabalho de desenvolvimento local.

Configuração do Projeto

Depois de configurar o ambiente, siga estes guias para colocar o AirysChat para funcionar localmente:
  1. Guia de Configuração Rápida - Instruções de configuração passo a passo
  2. Variáveis de Ambiente - Opções de configuração
  3. Erros Comuns - Guia de solução de problemas

Integrações de Aplicativos Especiais

Se você estiver trabalhando em integrações específicas:

Testando suas Contribuições

Usamos testes abrangentes para garantir a qualidade do código:

Tipos de Teste

  • Testes Unitários: Testam componentes e funções individuais
  • Testes de Integração: Testam interações de componentes
  • Testes Ponta a Ponta (End-to-End): Testam fluxos de trabalho completos do usuário com Cypress

Executando Testes

# Executa todos os testes
bundle exec rspec

# Executa um arquivo de teste específico
bundle exec rspec spec/models/user_spec.rb

# Executa testes Cypress
npm run cypress:open

Documentação e Tradução

Diretrizes de Documentação

  • Mantenha a documentação clara e concisa
  • Inclua exemplos de código onde for útil
  • Atualize a documentação ao alterar a funcionalidade
  • Siga nossas diretrizes de tradução

Internacionalização

  • Todo o texto voltado para o usuário deve ser traduzível
  • Adicione apenas strings em inglês - outros idiomas são tratados via Crowdin
  • Use formatação e chaves i18n adequadas

Diretrizes da Comunidade

Nós nos esforçamos para manter uma comunidade acolhedora e inclusiva:

Desenvolvimento de API

Se você estiver trabalhando em recursos relacionados a API:

Reconhecimento

Valorizamos todas as contribuições para o AirysChat. Confira nossa página de Contribuidores para ver as pessoas incríveis que ajudaram a tornar o AirysChat melhor.

Obtendo Ajuda

Precisa de assistência? Aqui estão suas opções:
  • Issues do GitHub: Para relatórios de bugs e solicitações de recursos
  • Comunidade do Discord: Para discussões em tempo real com a equipe principal
  • Documentação: Guias abrangentes e referências de API
  • Fóruns da Comunidade: Conecte-se com outros contribuidores

Pronto para começar a contribuir? Escolha uma issue que lhe interesse e siga nossas diretrizes acima. Cada contribuição, por menor que seja, ajuda a tornar o AirysChat melhor para todos! 🚀