{"id":30350305,"url":"https://github.com/jefter-dev/arbitrage","last_synced_at":"2025-08-18T21:18:34.968Z","repository":{"id":310260553,"uuid":"1039258411","full_name":"jefter-dev/arbitrage","owner":"jefter-dev","description":"Encontre e valide oportunidades de arbitragem de cripto entre múltiplas exchanges em tempo real. Salva resultados localmente, expõe via API REST e possui dashboard web. Escrito em TypeScript com arquitetura limpa (Facade/Service/Repository).","archived":false,"fork":false,"pushed_at":"2025-08-16T20:54:52.000Z","size":181,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-16T22:13:14.640Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jefter-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-16T20:21:59.000Z","updated_at":"2025-08-16T20:54:56.000Z","dependencies_parsed_at":"2025-08-16T22:13:16.807Z","dependency_job_id":"3d382dac-89ee-409d-a7d4-76ca5b896553","html_url":"https://github.com/jefter-dev/arbitrage","commit_stats":null,"previous_names":["jefter-dev/arbitrage"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/jefter-dev/arbitrage","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jefter-dev%2Farbitrage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jefter-dev%2Farbitrage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jefter-dev%2Farbitrage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jefter-dev%2Farbitrage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jefter-dev","download_url":"https://codeload.github.com/jefter-dev/arbitrage/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jefter-dev%2Farbitrage/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271062005,"owners_count":24692673,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-18T02:00:08.743Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-18T21:18:33.024Z","updated_at":"2025-08-18T21:18:34.959Z","avatar_url":"https://github.com/jefter-dev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🤖 Bot de Arbitragem de Criptomoedas\n\n[![Node.js](https://img.shields.io/badge/Node.js-18+-green?logo=node.js)](https://nodejs.org/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-4.9-blue?logo=typescript)](https://www.typescriptlang.org/)\n[![PNPM](https://img.shields.io/badge/Package%20Manager-PNPM-blue?logo=pnpm)](https://pnpm.io/)\n[![License](https://img.shields.io/badge/License-MIT-green)](LICENSE)\n\nUm **bot de alta performance** que **busca**, **valida** e **exibe** oportunidades de lucro (arbitragem) entre múltiplas exchanges de criptomoedas. Construído em **TypeScript**, com **API** e **dashboard web**, permitindo acompanhar resultados em tempo real.\n\n\u003e 💡 **Arquitetura Modular:** Novas exchanges podem ser adicionadas facilmente através do **Adapter Pattern**, sem impactar a lógica existente.\n\n---\n\n## 🔎 O que o Bot Faz Atualmente\n\nA arbitragem consiste em **comprar uma criptomoeda mais barata em uma exchange e vendê-la mais cara em outra**, aproveitando a diferença de preço.\n\nEste bot automatiza a **análise e validação de oportunidades de arbitragem** e permite a **visualização das oportunidades em um dashboard web**.\n\n- ✅ **Monitoramento** de preços em múltiplas exchanges (Binance, KuCoin, Bybit, etc.)\n- 🧠 **Comparação** de preços para identificar oportunidades lucrativas\n- 🛠️ **Validação** de oportunidades verificando carteiras e compatibilidade de redes (blockchains)\n- 📊 **Exibição** de resultados em dashboard web e armazenamento no banco de dados local\n\u003e ⚠️ Importante: No momento, não há execução automática de ordens. O bot apenas encontra, valida e mostra oportunidades.\n---\n\nhttps://github.com/user-attachments/assets/f3eb655f-0d16-4b1b-8e95-3b44ef7c7b71\n\nhttps://github.com/user-attachments/assets/eed77b71-2066-4157-aa96-f327c7e9728b\n\n## 🏛️ Estrutura do Projeto\n\nOrganizado em **camadas separadas por responsabilidade**, garantindo manutenção e escalabilidade:\n\n```\narbitrage/\n├── db/                        # Banco de dados local\n├── public/                    # Frontend dashboard (MVVM)\n├── src/\n│   ├── adapter/               # Conectores para cada exchange (Adapter Pattern)\n│   ├── controller/            # API Layer\n│   ├── facade/                # Ponto de entrada simplificado (Facade Pattern)\n│   ├── repository/            # Persistência de dados (Repository Pattern)\n│   ├── service/               # Lógica de negócio\n│   ├── model/                 # Modelos de dados\n│   ├── lib/                   # Utilitários e helpers\n│   ├── types/                 # Tipos e interfaces TypeScript\n│   ├── app.ts                 # Inicialização do bot\n│   └── server.ts              # Inicialização da API e dashboard\n├── .env                       # Chaves privadas (NÃO COMPARTILHE)\n├── .env.example               # Modelo de variáveis de ambiente\n├── package.json\n└── tsconfig.json\n```\n\n---\n\n## 🚀 Instalação Rápida\n\n**Pré-requisitos:**\n\n- Node.js (v18+)\n- PNPM\n\n**1️⃣ Clone e Instale Dependências**\n\n```bash\ngit clone https://github.com/jefter-dev/arbitrage.git\ncd arbitrage\npnpm install\n```\n\n**2️⃣ Configure suas Chaves de API**\n\nPara Linux/macOS:\n\n```bash\ncp .env.example .env\n```\n\nPara Windows:\n\n```bash\ncopy .env.example .env\n```\n\n\u003e ⚠️ **Segurança:** Nunca compartilhe o arquivo `.env`. Ele já está no `.gitignore`.\n\n---\n\n## ⚡ Exemplo de Uso\n\n**Rodando o Bot de Busca:**\n\n```bash\npnpm start\n```\n\n\u003e Armazena oportunidades no `db/db.json`.\n\n**Iniciando o Dashboard e API:**\n\n```bash\npnpm start:api\n```\n\nAcesse em: **[http://localhost:8000](http://localhost:8000)**\n\n## ⚡ Endpoints da API\n\nO bot disponibiliza os seguintes endpoints para consulta das oportunidades de arbitragem:\n\n| Método | Rota                            | Descrição                                                                  |\n| ------ | ------------------------------- | -------------------------------------------------------------------------- |\n| GET    | `/api/opportunities`            | Retorna **todas as oportunidades** armazenadas no banco.                   |\n| GET    | `/api/opportunities/executable` | Retorna apenas as oportunidades que são **executáveis imediatamente**.     |\n| GET    | `/api/opportunities/potential`  | Retorna oportunidades **potenciais**, validadas mas não executáveis ainda. |\n\n---\n\n## 🛠️ Tecnologias\n\n- **Backend:** Node.js, TypeScript, Express.js\n- **Banco de Dados:** lowdb (JSON file database)\n- **Frontend:** HTML, Tailwind CSS, JavaScript (MVVM Pattern)\n- **Ferramentas:** Axios, PNPM, ts-node\n\n---\n\n## 🙌 Contribuição\n\nContribuições são **sempre bem-vindas**!\nVocê pode ajudar a:\n\n- Adicionar novas exchanges\n- Melhorar a lógica de validação\n- Otimizar dashboard e performance\n- Implementar novas funcionalidades\n\n1. Fork este repositório\n2. Crie uma branch com sua feature (`git checkout -b feature/nova-exchange`)\n3. Faça commit das alterações (`git commit -m \"feat: adicionar nova exchange\"`)\n4. Envie para o seu fork (`git push origin feature/nova-exchange`)\n5. Abra um Pull Request 🚀\n\n\u003e 💡 Use issues para discutir ideias antes de implementar funcionalidades complexas.\n\n---\n\n## 🗺️ Próximos Passos\n\n- Integração com WebSockets para preços em tempo real\n- Execução automática de ordens\n- Melhoramento na lógica de validação dos contratos\n- Filtros e ordenação no dashboard\n- Histórico completo de oportunidades\n- Containerização com Docker\n\n---\n\n## 📄 Licença\n\nDistribuído sob a licença **MIT**.\n\n---\n\n## 📬 Contato\n\nPara dúvidas ou sugestões, abra uma **issue** ou entre em contato com o autor do projeto.\n\n- **Nome:** Jéfter Lucas - JEFTER DEV\n- **Email:** [contato@jefterdev.com](mailto:contato@jefterdev.com)\n- **GitHub:** [https://github.com/jefter-dev](https://github.com/jefter-dev)\n- **Site:** [https://jefterdev.com](https://jefterdev.com)\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjefter-dev%2Farbitrage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjefter-dev%2Farbitrage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjefter-dev%2Farbitrage/lists"}