Skip to main content
Este guia explica como configurar e rodar o backend e o front-end do Crypto Arbitrage Service localmente.

📹 Tutorial em Vídeo

Para uma explicação visual e passo a passo do processo de instalação e configuração, assista ao tutorial em vídeo: Tutorial de Instalação Assistir tutorial no YouTube

🪟 Instalação no Windows

Para usuários do Windows, recomendamos usar o WSL 2 (Windows Subsystem for Linux) para executar o projeto. O WSL 2 permite rodar um ambiente Linux completo dentro do Windows, oferecendo melhor desempenho e compatibilidade com as ferramentas necessárias para o projeto.

Requisitos

  • Windows 10 versão 2004 ou superior (Build 19041+) ou Windows 11
  • Máquina compatível com virtualização (geralmente já habilitada)
  • Pelo menos 4GB de RAM (recomendado 8GB ou mais)

Passos básicos

  1. Instalar o WSL 2
    • Abra o PowerShell ou Terminal como administrador
    • Execute: wsl --install
    • Isso instalará o WSL 2 e o Ubuntu por padrão
    • Reinicie o computador quando solicitado
  2. Configurar o WSL 2
    • Após reiniciar, abra o Ubuntu (disponível no menu Iniciar)
    • Crie um usuário e senha quando solicitado
    • Atualize o WSL para a versão mais recente: wsl --update
    • Defina o WSL 2 como padrão: wsl --set-default-version 2
  3. Instalar o Docker
    • Você pode usar o Docker Desktop com integração WSL 2 (mais fácil) ou o Docker Engine diretamente no WSL 2 (mais leve)
    • O Docker Desktop pode ser baixado em: https://www.docker.com/products/docker-desktop/
    • Após instalar, ative a integração com sua distribuição Linux no Docker Desktop
  4. Executar o script de instalação
    • Acesse o projeto dentro do WSL 2 (não use /mnt/c, prefira /home/seu_usuario)
    • Execute o script setup.sh conforme descrito na seção Instalação Automatizada (Linux)
Para melhor performance, mantenha seus projetos dentro do sistema de arquivos do Linux (/home/seu_usuario) e não no sistema de arquivos do Windows (/mnt/c).

Recursos adicionais

Para um guia completo e detalhado sobre WSL 2 e Docker no Windows, consulte o repositório oficial: Guia WSL2 + Docker Quickstart Este guia inclui informações sobre:
  • Instalação detalhada do WSL 2
  • Configuração do Docker Desktop e Docker Engine
  • Otimizações de performance
  • Dicas e truques para desenvolvimento
  • Solução de problemas comuns

🚀 Instalação Automatizada (Linux)

Para facilitar a instalação em máquinas Linux, o projeto inclui um script de setup automatizado que executa todos os passos necessários para configurar o ambiente de desenvolvimento.

Como executar o script:

  1. Certifique-se de que você tem permissões de execução no script:
    chmod +x setup.sh
    
  2. Execute o script na raiz do projeto:
    ./setup.sh
    
O script pode solicitar permissões sudo para instalar dependências do sistema. Não é recomendado executar o script como usuário root.

O que o script faz:

O script setup.sh automatiza os seguintes passos:
  1. Instalação do Docker e Docker Compose
    • Verifica se o Docker está instalado
    • Instala o Docker caso não esteja presente
    • Verifica e configura o Docker Compose
  2. Inicialização dos serviços Docker
    • Inicia os containers do MongoDB e RabbitMQ via Docker Compose
    • Aguarda os serviços estarem prontos para conexão
    • Verifica se os serviços estão respondendo nas portas corretas
  3. Configuração do arquivo .env
    • Cria o arquivo .env na raiz do projeto baseado em .env.example
    • Configura automaticamente as URIs do MongoDB e RabbitMQ para localhost
    • Faz backup do arquivo .env existente caso já exista
  4. Instalação do Go (Golang)
    • Verifica se o Go está instalado
    • Instala o Go versão 1.23.4 caso não esteja presente
    • Verifica compatibilidade com a versão requerida pelo projeto
  5. Compilação do Backend
    • Sincroniza e corrige o go.mod
    • Baixa todas as dependências do Go
    • Compila o projeto backend gerando o binário crypto-core
  6. Inicialização do Backend
    • Inicia o backend em background
    • Verifica se MongoDB e RabbitMQ estão acessíveis
    • Salva o PID do processo em crypto-core/backend.pid
    • Logs disponíveis em crypto-core/backend.log
  7. Instalação do Node.js
    • Verifica se o Node.js está instalado
    • Instala o Node.js versão 20.x caso não esteja presente (via NodeSource)
  8. Instalação das dependências do Front-end
    • Navega até a pasta front-argitragem
    • Executa npm install para instalar todas as dependências
  9. Inicialização do Front-end
    • Constrói o projeto front-end (build de produção)
    • Inicia o servidor front-end em modo produção
    • Salva o PID do processo em front-argitragem/frontend.pid
    • Logs disponíveis em front-argitragem/frontend.log

Serviços após a instalação:

Após a execução bem-sucedida do script, os seguintes serviços estarão rodando:
  • MongoDB: localhost:27017
  • RabbitMQ: localhost:5672 (Management: localhost:15672)
  • Backend: Porta configurada no .env (padrão: 8080)
  • Front-end: Porta configurada no build (verifique os logs)

Gerenciamento dos serviços:

Para parar os serviços iniciados pelo script:
# Parar o backend
kill $(cat crypto-core/backend.pid)

# Parar o front-end
kill $(cat front-argitragem/frontend.pid)

# Parar os containers Docker
cd crypto-core && docker compose down

🛠️ Backend

O backend foi desenvolvido em Golang (versão 1.20) e está localizado na pasta crypto-core. Ele depende de serviços como MongoDB, RabbitMQ e opcionalmente Redis para cache, que podem ser executados via Docker. Caso o Redis não esteja disponível, o sistema automaticamente utiliza cache em memória.

Passos para rodar o backend:

  1. Certifique-se de que você tem o Docker instalado na sua máquina.
  2. Navegue até a pasta do backend:
    cd crypto-core
    
  3. Suba os serviços necessários com o Docker Compose:
    docker-compose up -d
    
  4. Execute o backend:
    go run main/main.go
    

🔑 Variáveis de Ambiente do Backend

O backend utiliza diversas variáveis de ambiente para configurar integrações e serviços externos. Abaixo está uma descrição de cada uma delas:
  • BYBIT_API_KEY: Chave de API para acessar a ByBit
  • BYBIT_SECRET_KEY: Chave secreta para acessar a ByBit
  • KRAKEN_API_KEY: Chave de api para acessar a Kraken
  • KRAKEN_API_SECRET: Chave secreta para acessar a Kraken
  • API_KEY_CRYPTO_COM: Chave de API para acessar a Crypto.com
  • CRYPTO_COM_SECRET_KEY: Chave secreta para acessar a Crypto.com
  • API_KEY_BINANCE: Chave de API para acessar a API da Binance.
  • SECRET_KEY_BINANCE: Chave secreta correspondente à API da Binance.
  • API_KEY_OKX: Chave de API para acessar a API da OKX.
  • SECRET_KEY_OKX: Chave secreta correspondente à API da OKX.
  • PASSPHRASE_OKX: Frase de segurança necessária para autenticação na API da OKX.
  • MONGO_URI: URI de conexão com o banco de dados MongoDB. Exemplo: mongodb://localhost:27017.
  • FREE_CURRENCY_API_KEY: Chave de API para acessar o serviço de conversão de moedas Free Currency API.
  • EXCHANGERATE_API_KEY: Chave de API para acessar o serviço de conversão de moedas ExchangeRate API como fallback.
  • AMQP_URI: URI de conexão com o servidor RabbitMQ. Exemplo: amqp://adm:123456@localhost:5672/virtualhost.
  • TWITTER_CONSUMER_KEY: Chave de consumidor para integração com a API do Twitter.
  • TWITTER_CONSUMER_SECRET: Chave secreta de consumidor para integração com a API do Twitter.
  • PANIC_RECOVERY: Faz a aplicacao se recuperar de panicos (erros inesperados).
  • REDIS_HOST: Endereço do servidor Redis. Exemplo: localhost:6379. recomendado caso voce va utilizar em alguma vm ou em um ambiente fora de containers
  • AWESOME_API_KEY: Chave de API para obter as cotações do Dólar. Disponível em https://awesomeapi.com.br/conta
Certifique-se de configurar essas variáveis de ambiente corretamente antes de executar o backend. Você pode defini-las em um arquivo .env na raiz do projeto ou diretamente no ambiente do sistema operacional.

🌐 Front-end

O front-end foi desenvolvido em React e está localizado na pasta front-arbitragem. Ele utiliza o npm para gerenciar dependências e rodar o servidor local.

Passos para rodar o front-end:

  1. Certifique-se de que você tem o Node.js (versão 18.10.0 ou superior) instalado.
  2. Navegue até a pasta do front-end:
    cd front-arbitragem
    
  3. Instale as dependências do projeto:
    npm install
    
  4. Inicie o servidor local:
    npm run dev
    

🐳 Dependências via Docker

As dependências do backend, como MongoDB e RabbitMQ, são gerenciadas via Docker. Para subir os serviços necessários, execute o seguinte comando na pasta crypto-core:
cd crypto-core
docker compose up -d
Isso iniciará os containers do MongoDB e RabbitMQ em modo detached (background). Os serviços estarão disponíveis em:
  • MongoDB: localhost:27017
  • RabbitMQ: localhost:5672 (Management UI: localhost:15672)
Para parar os containers, execute:
cd crypto-core
docker compose down

☁️ Provedores de Serviços Gerenciados (Alternativas Gratuitas)

Como alternativa à instalação local via Docker, você pode utilizar serviços gerenciados gratuitos para desenvolvimento e testes. Isso pode ser útil para simplificar a configuração inicial ou para testar o projeto sem precisar configurar todos os serviços localmente.

MongoDB Gerenciado

Você pode usar um MongoDB gerenciado gratuito (como MongoDB Atlas) em vez de executar o MongoDB localmente via Docker. Tutorial em vídeo: Como configurar MongoDB Atlas gratuito Após criar sua conta e cluster no MongoDB Atlas, você receberá uma URI de conexão que deve ser configurada na variável de ambiente MONGO_URI no arquivo .env.

RabbitMQ Gerenciado

Existem serviços de mensageria gerenciados gratuitos que podem substituir o RabbitMQ local. Tutorial em vídeo: Como configurar RabbitMQ gerenciado gratuito Após configurar o serviço, atualize a variável de ambiente AMQP_URI no arquivo .env com a URI de conexão fornecida pelo provedor.

APIs de Conversão de Moedas

O projeto utiliza duas APIs de conversão de moedas como fallback. Você pode obter chaves de API gratuitas nos seguintes serviços:

Free Currency API

Crie uma conta gratuita e obtenha sua chave de API no dashboard. Configure a variável FREE_CURRENCY_API_KEY no arquivo .env.

ExchangeRate API

Crie uma conta gratuita e obtenha sua chave de API no dashboard. Configure a variável EXCHANGERATE_API_KEY no arquivo .env.
Ambas as APIs são usadas como fallback. Se uma falhar, o sistema tentará usar a outra automaticamente. Recomendamos configurar ambas para maior confiabilidade.

🚀 Sugestões de Publicação

Front-end - Netlify

Para publicar o front-end do projeto, recomendamos o uso do Netlify, uma plataforma de hospedagem gratuita especializada em aplicações web modernas. Dashboard: Netlify

Vantagens do Netlify

  • Plano gratuito generoso - Inclui 100GB de largura de banda e 300 minutos de build por mês
  • Deploy contínuo - Integração automática com GitHub, GitLab e Bitbucket
  • CDN global - Distribuição de conteúdo em servidores ao redor do mundo para melhor performance
  • HTTPS automático - Certificados SSL gratuitos e renovação automática
  • Preview de branches - Visualize mudanças de pull requests antes de fazer merge
  • Fácil configuração - Setup simples através de interface web ou arquivo de configuração
  • Serverless Functions - Suporte para funções serverless (opcional)
  • Formulários - Gerenciamento de formulários sem backend (opcional)

Como publicar

O Netlify oferece duas formas principais de fazer deploy: Opção 1: Deploy via Git (Recomendado)
  1. Crie uma conta gratuita no Netlify
  2. Conecte seu repositório Git ao Netlify
  3. Configure o build command: npm run build
  4. Configure o publish directory: dist (ou o diretório de build do seu projeto)
  5. O Netlify fará o deploy automaticamente a cada push no repositório
Opção 2: Deploy via Arrastar e Soltar (Drag and Drop)
  1. Crie uma conta gratuita no Netlify
  2. Execute o build do projeto localmente: npm run build
  3. Acesse a área de deploy manual no dashboard do Netlify
  4. Arraste e solte a pasta de build (geralmente dist) diretamente na interface do Netlify
  5. O deploy será realizado instantaneamente
O Netlify é ideal para projetos React, Vue, Angular e outros frameworks modernos, oferecendo uma experiência de deploy simplificada e profissional.