{"id":46789537,"url":"https://github.com/dev-araujo/chainlink-price-feed-api","last_synced_at":"2026-07-22T17:35:32.108Z","repository":{"id":328698842,"uuid":"1044587635","full_name":"dev-araujo/chainlink-price-feed-api","owner":"dev-araujo","description":"Esta API (e interface simples como exemplo), desenvolvida em Go, atua como uma ponte para os Chainlink Data Feeds, permitindo que aplicações acessem dados de preços da blockchain Ethereum de forma simples e eficiente.","archived":false,"fork":false,"pushed_at":"2026-06-08T18:44:22.000Z","size":18099,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-08T20:23:10.155Z","etag":null,"topics":["api","blockchain","chainlink","chainlink-price-feeds","ethereum","go-ethereum","golang","project","rest-api","web3"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dev-araujo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-25T23:17:39.000Z","updated_at":"2026-06-08T18:44:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dev-araujo/chainlink-price-feed-api","commit_stats":null,"previous_names":["dev-araujo/chainlink-price-feed","dev-araujo/chainlink-price-feed-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dev-araujo/chainlink-price-feed-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-araujo%2Fchainlink-price-feed-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-araujo%2Fchainlink-price-feed-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-araujo%2Fchainlink-price-feed-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-araujo%2Fchainlink-price-feed-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dev-araujo","download_url":"https://codeload.github.com/dev-araujo/chainlink-price-feed-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-araujo%2Fchainlink-price-feed-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35771486,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-22T02:00:06.236Z","response_time":124,"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":["api","blockchain","chainlink","chainlink-price-feeds","ethereum","go-ethereum","golang","project","rest-api","web3"],"created_at":"2026-03-10T02:30:52.932Z","updated_at":"2026-07-22T17:35:32.090Z","avatar_url":"https://github.com/dev-araujo.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003cdiv \u003e\n  \u003cimg src=\"https://img.shields.io/static/v1?label=license\u0026message=MIT\u0026color=5965E0\u0026labelColor=121214\" alt=\"License\"\u003e\n  \u003cbr\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Go-00ADD8?style=for-the-badge\u0026logo=go\u0026logoColor=white\" alt=\"Go\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Gin-0077B5?style=for-the-badge\u0026logo=gin\u0026logoColor=white\" alt=\"Gin\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Ethereum-3C3C3D?style=for-the-badge\u0026logo=ethereum\u0026logoColor=white\" alt=\"Go-Ethereum\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Docker-2496ED?style=for-the-badge\u0026logo=docker\u0026logoColor=white\" alt=\"Docker\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Chainlink-375BD2?style=for-the-badge\u0026logo=chainlink\u0026logoColor=white\" alt=\"Chainlink\"\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n\u003ch1 \u003eChainlink Price Feed com GO\u003c/h1\u003e\n\n\u003cp \u003e\n  Esta API, desenvolvida em \u003cstrong\u003eGo\u003c/strong\u003e, atua como uma ponte para os \u003cstrong\u003e\u003ca href=\"https://docs.chain.link/data-feeds/price-feeds/addresses?page=1\u0026testnetPage=1\u0026testnetSearch=1\"\u003eChainlink Data Feeds\u003c/a\u003e\u003c/strong\u003e, permitindo que aplicações acessem dados de preços da \u003cstrong\u003eblockchain Ethereum\u003c/strong\u003e de forma simples e eficiente.\n\u003c/p\u003e\n\n\u003cp \u003e\n  A aplicação se conecta a um \u003cstrong\u003enó da rede Ethereum\u003c/strong\u003e e busca dinamicamente o catálogo completo de feeds de preço da Chainlink, interagindo com os \u003cstrong\u003econtratos inteligentes\u003c/strong\u003e para expor os preços de todos os ativos Crypto/USD disponíveis. Os preços em BRL são obtidos via conversão de câmbio em tempo real. Além disso, a aplicação inclui uma \u003cstrong\u003einterface web\u003c/strong\u003e (feita com HTMX) com suporte a filtro e alternância de moeda (USD/BRL).\n\u003c/p\u003e\n\n\u003cdiv \u003e\n  \u003cimg src='./assets/gopher-link.png' width='300'\u003e\n\u003c/div\u003e\n\n## 🎨 Demo\n\n\n\n\u003cimg src=\"./assets/interface.png\" alt=\"Interface web\" width=\"100%\" style=\"border-radius: 10px; box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);\"/\u003e\n\n\n---\n\n## 🛠️ Stack\n\n* **[Go](https://golang.org/)**: Linguagem principal.\n* **[Gin](https://github.com/gin-gonic/gin)**: Framework web de alta performance.\n* **[Go-Ethereum](https://github.com/ethereum/go-ethereum)**: Cliente para interação com a blockchain.\n* **[Docker](https://www.docker.com/)**: Containerização da aplicação.\n* **[HTMX](https://htmx.org/)**: Interatividade no frontend sem complexidade de SPAs.\n* **[CoinGecko API](https://www.coingecko.com/en/api)**: Imagens dos ativos com cache e fallback automático.\n\n## ✨ Funcionalidades\n\n- **Catálogo dinâmico de ativos**: todos os feeds Crypto/USD disponíveis no Chainlink são carregados automaticamente na inicialização e atualizados a cada 6 horas — sem lista fixa de ativos.\n- **Preços em USD e BRL**: conversão para real via taxa de câmbio em tempo real.\n- **Imagens automáticas**: logos dos ativos buscados dinamicamente via CoinGecko com fallback visual.\n- **Filtro na interface**: pesquise por nome de ativo diretamente na interface web.\n- **Alternância de moeda**: troque entre BRL e USD na interface sem recarregar a página.\n\n## 🚀 Executando a aplicação\n\nSiga as instruções abaixo para ter uma cópia do projeto rodando em sua máquina.\n\n### Pré-requisitos\n\n* [Go](https://golang.org/doc/install) (1.24.4+)\n* [Docker](https://docs.docker.com/get-docker/) (Opcional, mas recomendado)\n\n### Instalação\n\n1. Clone o repositório:\n```sh\ngit clone https://github.com/dev-araujo/chainlink-price-feed.git\ncd chainlink-price-feed\n\n\n```\n\n2. Configure as variáveis de ambiente:\n\n```sh\ncp .env.example .env\n\n\n```\n\n3. Edite o arquivo `.env` inserindo sua URL RPC (Infura/Alchemy):\n\n```env\nRPC_URL=\"https://mainnet.infura.io/v3/SEU_ID_DO_INFURA\"\nSERVER_PORT=\"8080\"\nGIN_MODE=\"release\"\nWEB_PORT=\"8081\"\nAPI_URL=\"http://localhost:8080\"\n\n\n```\n\n\u003e **💡 Dica:** Para testes, você pode obter um RPC gratuito em [Public Node](https://ethereum.publicnode.com/).\n\n---\n\n### Opção 1: Docker (Recomendado)\n\nPara iniciar todo o ambiente (API + Web) com um único comando:\n\n```sh\ndocker-compose up --build\n\n\n```\n\n* A **API** estará disponível em `http://localhost:8080`\n* A **Aplicação Web** estará disponível em `http://localhost:8081`\n\n---\n\n### Opção 2: Rodando Localmente (Sem Docker)\n\n⚠️ **Atenção:** Certifique-se de executar os comandos sempre a partir da **raiz do projeto** (`chainlink-price-feed/`) para que a aplicação consiga encontrar as pastas de arquivos estáticos (`web/` e `assets/`).\n\nVocê tem duas formas de executar a aplicação localmente:\n\n#### Forma A: Aplicativo Unificado (Tudo em um)\n\nEsta é a maneira mais simples, executando tanto a API quanto a Interface Web num único processo.\n\n```sh\ngo run cmd/app/main.go\n\n```\n\n*A aplicação completa estará disponível na porta definida em `WEB_PORT` (padrão: 8081).*\n\n#### Forma B: Executando os serviços separadamente\n\nSe preferir rodar a API e a aplicação web de forma independente:\n\n**1. Iniciando a API (Backend)**\n\n```sh\ngo run cmd/api/main.go\n\n```\n\n*A API iniciará na porta definida em `SERVER_PORT` (padrão: 8080).*\n\n**2. Iniciando a Aplicação Web (Frontend)**\nEm um novo terminal, ainda na raiz do projeto, execute:\n\n```sh\ngo run cmd/web/main.go\n\n```\n\n*A interface web iniciará na porta definida em `WEB_PORT` (padrão: 8081).*\n\n---\n\n## 📡 Endpoints da API\n\nA API fornece os seguintes endpoints para consulta:\n\n| Método | Endpoint | Descrição |\n| --- | --- | --- |\n| `GET` | `/health` | Verifica o status da API. |\n| `GET` | `/api/price/:asset/usd` | Retorna o preço do ativo em USD. |\n| `GET` | `/api/price/:asset/brl` | Retorna o preço do ativo em BRL. |\n| `GET` | `/api/price/all/usd` | Retorna todos os ativos disponíveis em USD. |\n| `GET` | `/api/price/all/brl` | Retorna todos os ativos disponíveis em BRL. |\n\n**Ativos Suportados (`:asset`):**\nQualquer símbolo presente no catálogo de feeds Crypto/USD da Chainlink (ex: `btc`, `eth`, `link`, `uni`, `1inch`, `paxg`, `stx`, entre muitos outros). O catálogo é carregado dinamicamente na inicialização.\n\n### Exemplos de Resposta\n\n**GET** `/api/price/eth/usd`\n\n```json\n{\n    \"pair\": \"ETH/USD\",\n    \"price\": \"3000.00\",\n    \"timestamp\": 1678886400,\n    \"imageUrl\": \"https://assets.coingecko.com/coins/images/279/small/ethereum.png\"\n}\n\n\n```\n\n**GET** `/health`\n\n```json\n{\n    \"status\": \"ATIVO\"\n}\n\n\n```\n\n---\n\n## Author 👷\n\n\u003cimg src=\"https://user-images.githubusercontent.com/97068163/149033991-781bf8b6-4beb-445a-913c-f05a76a28bfc.png\" width=\"10%\" alt=\"caricatura do autor desse repositório\"/\u003e\n\n**Adriano P Araujo** \n\u003cbr\u003e\n[![LinkedIn](https://img.shields.io/badge/LinkedIn-0A66C2?logo=linkedin\u0026logoColor=white\u0026style=for-the-badge)](https://www.linkedin.com/in/araujocode/)\n\u003cbr\u003e\n[![GitHub](https://img.shields.io/badge/GitHub-181717?logo=github\u0026logoColor=white\u0026style=for-the-badge)](https://github.com/dev-araujo)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdev-araujo%2Fchainlink-price-feed-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdev-araujo%2Fchainlink-price-feed-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdev-araujo%2Fchainlink-price-feed-api/lists"}