> ## Documentation Index
> Fetch the complete documentation index at: https://docs.airys.chat/llms.txt
> Use this file to discover all available pages before exploring further.

# Guia de Configuração do Projeto

> Guia completo para configurar e executar o AirysChat no modo de desenvolvimento

# Configuração do Projeto

Este guia ajudará você a configurar e executar o AirysChat no modo de desenvolvimento. Certifique-se de ter concluído a configuração do ambiente.

## Clonar o repositório

```bash theme={null}
# mude o local para o caminho onde você deseja que o airyschat seja instalado
cd ~

# clone o repositório e navegue para o diretório do airyschat
git clone https://github.com/airyschat/airyschat.git
cd airyschat
```

## Instalar dependências Ruby & Javascript

Use o seguinte comando para executar `bundle && pnpm install` para instalar as dependências do Ruby e Javascript.

```bash theme={null}
make burn
```

Isso instalará todas as dependências necessárias para a aplicação AirysChat.

<Warning>
  Se você enfrentar problemas com a gem pg, por favor consulte os [Erros Comuns](/contributing-guide/common-errors#pg-gem-installation-error)
</Warning>

## Configurar as variáveis de ambiente

```bash theme={null}
cp .env.example .env
```

Consulte [environment-variables](/contributing-guide/environment-variables) para ler sobre a configuração de variáveis de ambiente.

## Configurar o servidor rails

```bash theme={null}
# executar as migrações de banco de dados
make db
# iniciar o servidor
foreman start -f Procfile.dev
```

<Note>
  Se você tiver o overmind instalado, use `make run` para executar o servidor.
</Note>

## Login com credenciais

```bash theme={null}
http://localhost:3000
user name: john@acme.inc
password: Password1!
```

## Testando o widget de chat em seu ambiente local

Ao rodar o AirysChat em um ambiente de desenvolvimento, o widget de chat pode ser acessado no seguinte URL.

```
http://localhost:3000/widget_tests
```

Você também pode testar o método `setUser` usando

```
http://localhost:3000/widget_tests?setUser=true
```

Para usar esses URLs, primeiro você precisa compilar os assets. Execute:

```bash theme={null}
bundle exec rails assets:precompile
```

## Docker para desenvolvimento

<Note>
  Siga esta seção apenas se você estiver tentando configurar o AirysChat via docker. Caso contrário, pule isso.
</Note>

Na primeira vez que você iniciar seu ambiente de desenvolvimento, execute os seguintes dois comandos:

```bash theme={null}
# construir a imagem base primeiro
docker compose build base

# construir o servidor e o worker
docker compose build

# preparar o banco de dados
docker compose exec rails bundle exec rails db:airyschat_prepare

# docker compose up
```

Em seguida, navegue para [http://localhost:3000](http://localhost:3000)

```bash theme={null}
# Para parar seu ambiente use Control+C (no Mac) CTRL+C (no Win) ou
docker compose down
# iniciar os serviços
docker compose up
```

Quando você alterar o Dockerfile do serviço ou o conteúdo do diretório de build, execute stop e então build. (Por exemplo, após modificar o package.json ou Gemfile)

```bash theme={null}
docker compose stop
docker compose build
```

O ambiente do docker-compose consiste em:

* airyschat server
* postgres
* redis
* webpacker-dev-server

Caso você encontre um problema de seeding (populando os dados) ou queira redefinir o banco de dados, você pode fazer isso usando o seguinte comando:

```bash theme={null}
docker compose run --rm rails bundle exec rake db:reset
```

Este comando essencialmente executa os contêineres postgres e redis e, em seguida, executa o comando rake dentro do contêiner do servidor airyschat.

#### Testando o widget de chat em seu ambiente local com Docker

Primeiro, compile os assets. Execute:

```bash theme={null}
docker compose exec rails bundle exec rails assets:precompile
```

Em seguida, use os URLs de [#testing-chat-widget-in-your-local-environment](/contributing-guide/project-setup#testing-chat-widget-in-your-local-environment)

### Executando Testes Cypress

Primeiro, compile os assets. Execute:

```bash theme={null}
docker compose exec rails bundle exec rails assets:precompile
```

## Executando Testes Cypress

Consulte a documentação para aprender como escrever especificações (specs) do cypress:

* [https://github.com/shakacode/cypress-on-rails](https://github.com/shakacode/cypress-on-rails)
* [https://docs.cypress.io/guides/overview/why-cypress.html](https://docs.cypress.io/guides/overview/why-cypress.html)

```bash theme={null}
# no terminal tab1
overmind start -f Procfile.test
# no terminal tab2
pnpm cypress open --project ./test
```

## Depurando Docker para produção

Você pode usar nossa imagem oficial do Docker de [https://hub.docker.com/r/airyschat/airyschat](https://hub.docker.com/r/airyschat/airyschat)

```bash theme={null}
docker pull airyschat/airyschat
```

Você pode criar uma imagem por conta própria executando o seguinte comando no diretório raiz.

```bash theme={null}
docker compose -f docker-compose.production.yaml build
```

Isso construirá a imagem que você pode implantar no Kubernetes (GCP, Openshift, AWS, Azure ou em qualquer lugar), Amazon ECS ou Docker Swarm. Você pode colocar uma tag nesta imagem e fazer o push para o registro do docker de sua escolha.

Lembre-se de disponibilizar as variáveis de ambiente necessárias durante a implantação.

## Próximos Passos

Após concluir esta configuração:

1. **Verificar a Instalação**: Acesse [http://localhost:3000](http://localhost:3000) e faça login com as credenciais fornecidas
2. **Explorar o Código**: Comece a fazer alterações e veja-as refletidas no seu ambiente de desenvolvimento
3. **Executar Testes**: Execute a suíte de testes para garantir que tudo funcione corretamente
4. **Verificar a Resolução de Problemas**: Se você encontrar problemas, consulte [Erros Comuns](/contributing-guide/common-errors)

## Obtendo Ajuda

Se você encontrar problemas durante a configuração:

* **Erros Comuns**: Verifique [Erros Comuns](/contributing-guide/common-errors)
* **Variáveis de Ambiente**: Veja [Variáveis de Ambiente](/contributing-guide/environment-variables)
* **Comunidade no Discord**: Junte-se ao nosso [Discord](https://discord.com/invite/cJXdrwS)
* **Issues no GitHub**: [Crie uma issue](https://github.com/airyschat/airyschat/issues)

***

Seu ambiente de desenvolvimento do AirysChat está agora pronto para contribuição! 🚀
