{"id":25451172,"url":"https://github.com/williamjayjay/poc-rn-node-rabbitmq","last_synced_at":"2026-04-08T11:32:04.863Z","repository":{"id":234958241,"uuid":"789808141","full_name":"williamjayjay/poc-RN-Node-RabbitMQ","owner":"williamjayjay","description":"POC utilizando React Native,NodeJS,RabbitMQ,MongoDB e Docker com objetivo em trazer dados da api externa para o serviço de mensageria, envia-lo via rabbitmq para a API nodejs, e a mesma enviar via socket para o app mobile e também armazenar no mongodb","archived":false,"fork":false,"pushed_at":"2024-04-22T09:07:12.000Z","size":22336,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-03T14:30:56.954Z","etag":null,"topics":["docker","express","nodejs","rabbitmq","react-native","reactnative","tailwindcss"],"latest_commit_sha":null,"homepage":"","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/williamjayjay.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}},"created_at":"2024-04-21T15:59:06.000Z","updated_at":"2024-04-22T17:22:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"cf8214b5-fe9f-4255-8d5a-aa8dd35d4c49","html_url":"https://github.com/williamjayjay/poc-RN-Node-RabbitMQ","commit_stats":null,"previous_names":["williamjayjay/poc-rn-node-rabbitmq"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/williamjayjay/poc-RN-Node-RabbitMQ","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamjayjay%2Fpoc-RN-Node-RabbitMQ","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamjayjay%2Fpoc-RN-Node-RabbitMQ/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamjayjay%2Fpoc-RN-Node-RabbitMQ/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamjayjay%2Fpoc-RN-Node-RabbitMQ/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/williamjayjay","download_url":"https://codeload.github.com/williamjayjay/poc-RN-Node-RabbitMQ/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamjayjay%2Fpoc-RN-Node-RabbitMQ/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31554076,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T10:21:54.569Z","status":"ssl_error","status_checked_at":"2026-04-08T10:21:38.171Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["docker","express","nodejs","rabbitmq","react-native","reactnative","tailwindcss"],"created_at":"2025-02-17T22:24:12.734Z","updated_at":"2026-04-08T11:32:04.841Z","avatar_url":"https://github.com/williamjayjay.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eProjeto - React Native/NodeJS/Mongodb/Docker/pm2/RabbitMQ: bitcoin candlesticks\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"GitHub language count\" src=\"https://img.shields.io/github/languages/count/williamjayjay/poc-RN-Node-RabbitMQ\"\u003e\n\n  \u003cimg alt=\"GitHub Top Language\" src=\"https://img.shields.io/github/languages/top/williamjayjay/poc-RN-Node-RabbitMQ\" /\u003e\n\n  \u003cimg alt=\"Repository size\" src=\"https://img.shields.io/github/repo-size/williamjayjay/poc-RN-Node-RabbitMQ\"\u003e\n  \n  \u003ca href=\"https://github.com/williamjayjay/Github-Blog/commits/master\"\u003e\n    \u003cimg alt=\"GitHub last commit\" src=\"https://img.shields.io/github/last-commit/williamjayjay/poc-RN-Node-RabbitMQ\"\u003e\n  \u003c/a\u003e\n    \n   \u003ca href=\"https://github.com/williamjayjay/poc-RN-Node-RabbitMQ/stargazers\"\u003e\n    \u003cimg alt=\"Stargazers\" src=\"https://img.shields.io/github/stars/williamjayjay/poc-RN-Node-RabbitMQ?style=social\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003eVamos construir um serviço com rabbitmq, uma api em nodejs e um aplicativo em react native\u003cbr/\u003e\u003cstrong\u003eEstá é apenas uma POC de um projeto com objetivo de buscar e exibir os preços mais recentes do bitcoin em tempo real.\u003c/strong\u003e.\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg alt=\"poc bitcoin\" src=\"github/cover.png\" /\u003e\n\u003c/p\u003e\n\n## 🥶 Sobre o projeto\n\nDesenvolvi esse projeto para reforçar meu conhecimento com filas e mensageria, e bibliotecas de animação.\n\n## Containers Docker:\n\n**Docker:** Serão executado 2 containers respectivamente, do rabbitMQ e do mongodb.\n\n### Guia de inicialização dos containers docker\n\nPara criar os containers docker, siga estas etapas simples:\n\n1. **Vá para a raiz do diretório btc-candle-generator para criar o container docker do rabbitmq**:\n  ```sh\n  docker compose up -d\n  ```\n\n2. **Vá para a raiz do diretório btc-candle-api para criar o container docker do mongodb**:\n  ```sh\n  docker compose up -d\n  ```\n\n---\n\n## Serviço Mensageria:\n\n**Mensageria:** O serviço de mensageria foi feito utilizando rabbitMQ, ao qual buscamos os valores do preço do bitcoin na API da coingecko.\n\n\n## 🚀 Tecnologias\n\nPrincipais tecnologias que utilizei para desenvolver esta aplicação\n\n- [Amqplib](https://www.npmjs.com/package/amqplib)\n- [Typescript](https://www.typescriptlang.org/)\n- [PM2](https://pm2.keymetrics.io/)\n\n## Guia de inicialização\n\nPara instalar e configurar uma cópia local, siga estas etapas simples:\n\n### Prerequisitos\n\nPara garantir o funcionamento adequado da nossa aplicação, verifique abaixo:\n\n1. **Clone o repositório**:\n  ```sh\n  git clone https://github.com/williamjayjay/poc-RN-Node-RabbitMQ\n  ```\n\n2. **Navegue na raiz do projeto btc-candle-generator:**\n\n3. **Instale os módulos:**\n  ```sh\n  bun i\n  ```\n\n4. **Copie o .env de exemplo:** \n\n\n5. **Instale o [PM2](https://pm2.keymetrics.io/) para rodar o serviço em segundo plano:**\n  ```sh\n  npm install pm2 -g\n  ```\n\n6. **Rode o build do projeto:**\n  ```sh\n  npm run build\n  ```\n\n7. **Execute o arquivo json do PM2 na raiz do projeto:**\n  ```sh\n  pm2 start pm2.json \n  ```\n\n## Roadmap\n\n- [x] Conectar ao rabbitmq\n\n- [x] Buscar o preço do bitcoin em dollar\n\n- [x] Executar regra para buscar o preço do bitcoin a cada 30 segundos realizar 3 buscas e enviando para a fila os 3 preços \n\n- [x] Manter sessão ativa em loop, sem quebrar o serviço\n\n## Exibição no terminal\n\n| Terminal PM2 | Terminal Docker(RabbitMQ e MongoDB) |\n|:-------------------------:|:-------------------------:|\n| ![t-pm2](github/terminal_pm2.png) | ![t-docker](github/terminal_docker.png) |\n\n---\n\n## Api NodeJS-Express:\n\n**API:** A api realiza a conexão com o canal do rabbitmq para receber o serviço de mensageria \n\n\n## 🚀 Tecnologias\n\nPrincipais tecnologias que utilizei para desenvolver esta aplicação\n\n- [Amqplib](https://www.npmjs.com/package/amqplib)\n- [Typescript](https://www.typescriptlang.org/)\n- [Express](https://expressjs.com/)\n- [Mongoose](https://mongoosejs.com/)\n- [Morgan](https://www.npmjs.com/package/morgan)\n- [SocketIO](https://socket.io/pt-br/)\n- [PM2](https://pm2.keymetrics.io/)\n\n## Guia de inicialização\n\nPara instalar e configurar uma cópia local, siga estas etapas simples:\n\n### Prerequisitos\n\nPara garantir o funcionamento adequado da nossa aplicação, verifique abaixo:\n\n1. **Clone o repositório**:\n  ```sh\n  git clone https://github.com/williamjayjay/poc-RN-Node-RabbitMQ\n  ```\n\n2. **Navegue na raiz do projeto btc-candle-api:**\n\n3. **Instale os módulos:**\n  ```sh\n  bun i\n  ```\n\n3. **Copie o .env de exemplo:** \n\n4. **Rode o build do projeto:**\n  ```sh\n  npm run build\n  ```\n\n5. **Inicie o PM2 para iniciar a api em segundo plano:**\n  ```sh\n  pm2 start pm2.json\n  ```\n\n## Roadmap\n\n- [x] Conectar ao mongodb\n\n- [x] Iniciar a api\n\n- [x] Iniciar serviço para consumir mensagens da fila do rabbitmq\n\n- [x] Salvar no mongodb as mensagens entregues pelo rabbitmq\n\n- [x] Emitir a mensagem via websocket com socket.io\n\n---\n\n## Mobile React Native:\n\n**Aplicativo:** O app recebe os preços do bitcoin via api REST e também via socket.io.\n\n\n## 🚀 Tecnologias\n\nPrincipais tecnologias que utilizei para desenvolver esta aplicação\n\n- [Typescript](https://www.typescriptlang.org/)\n- [SocketIO](https://socket.io/pt-br/)\n- [React-Native-Toast-Message](https://www.npmjs.com/package/react-native-toast-message)\n- [React-Native-SVG](https://docs.expo.dev/versions/latest/sdk/svg/)\n- [React-Native-Safe-Area-Context](https://docs.expo.dev/versions/latest/sdk/safe-area-context/)\n- [React-native-Redash](https://github.com/wcandillon/react-native-redash)\n- [React-Native-Reanimated](https://docs.swmansion.com/react-native-reanimated/)\n- [React-Native-Gesture-Handler](https://www.npmjs.com/package/react-native-gesture-handler)\n- [TailwindCSS](https://www.nativewind.dev/)\n- [Native-Base](https://nativebase.io/)\n- [Expo-Font](https://docs.expo.dev/versions/latest/sdk/font/)\n- [Expo-AV](https://docs.expo.dev/versions/latest/sdk/av/)\n- [DayJS](https://day.js.org/)\n- [D3-Scale](https://d3js.org/d3-scale)\n\n## Guia de inicialização\n\nPara instalar e configurar uma cópia local, siga estas etapas simples:\n\n### Prerequisitos\n\nPara garantir o funcionamento adequado da nossa aplicação, verifique abaixo:\n\n1. **Clone o repositório**:\n  ```sh\n  git clone https://github.com/williamjayjay/poc-RN-Node-RabbitMQ\n  ```\n\n2. **Navegue na raiz do projeto rn-bitcoin-viewer-analytcs:**\n\n3. **Instale os módulos:**\n  ```sh\n  bun i\n  ```\n\n4. **Copie o .env de exemplo:** \n\n5. **Rode o aplicativo:**\n  ```sh\n  bun android\n  ```\n\n## Roadmap\n\n- [x] Iniciar o aplicativo e verificar se há ou não dados das velas do bitcoin, caso haja exibir o gráfico de velas, caso não exibir mensagem sobre nenhum dado carregado\n\n- [x] Conseguir visualizar o preço do bitcoin em velas candlesticks\n\n- [x] Exibir animação das velas quando carregadas da api\n\n- [x] Receber a cada 1 minuto e 30 segundos novas velas via websocket\n\n  - [x] Soar som de moeda e exibir toast notification quando chegar uma nova vela via websocket\n\n- [x] Ao clicar no botão da lupa, alternar a exibição entre 3, 6 e 9 últimas velas enviadas pela API Rest e pelo SocketIO\n\n- [x] Ao clicar em uma das velas, deve selecionar a mesma, alterar ícones na parte inferior\n\n- [x] Ao clicar em uma das velas, deve exibir na parte superior os preços de abertura, fechamento, mais alto e mais baixo e também a data e hora que foi gerada aquela vela.\n\n\u003c!-- --------------------- --\u003e\n## UI UX\nUI e UX feita baseada em aplicações ja existentes no mercado e em modelos existentes em plataformas como dribble e behance.\n\n-Link para vídeo com o som que exibe ao chegar uma nova vela no gráfico [Video-React-Native](https://vimeo.com/937610715?share=copy)\n\n| Tela de início | Tela de início (6) |\n|:-------------------------:|:-------------------------:|\n| ![Tela de início](github/tela_inicio.png) | ![Tela de início-6](github/tela_6_velas_selecionadas.png) |\n\n| Tela de início (3) | Tela de início Full |\n|:-------------------------:|:-------------------------:|\n| ![Tela de início-3](github/tela_3_velas_selecionadas.png) | ![Tela de início-fulll](github/tela_full.png) |\n\n| Tela nenhum dado carregado | \n|:-------------------------:|\n| ![Tela nenhum dado carregado](github/print_nenhum_dado_carregado.png) | \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwilliamjayjay%2Fpoc-rn-node-rabbitmq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwilliamjayjay%2Fpoc-rn-node-rabbitmq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwilliamjayjay%2Fpoc-rn-node-rabbitmq/lists"}