{"id":23178899,"url":"https://github.com/aszurar/pokedev","last_synced_at":"2025-07-17T14:06:51.647Z","repository":{"id":39963658,"uuid":"490547154","full_name":"Aszurar/PokeDev","owner":"Aszurar","description":"O projeto PokeDev é um aplicativo mobile que simula uma pokedex do jogos e anime Pokémon. A  criação das interfaces foi usado React Native em conjunto com TypeScript e diversas bibliotecas disponíveis para React Native, enquanto a alimentação dos dados foi usado a PokeAPI, uma API de Pokémon muito bem documentada, livre para usar e popular.","archived":false,"fork":false,"pushed_at":"2022-05-20T18:55:37.000Z","size":762,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-01T06:51:27.712Z","etag":null,"topics":["android-studio","axios","javascript","nodejs","react","react-native","react-native-feather","react-native-gesture-handler","react-native-iphone-x-helper","react-native-modal","react-native-reanimated","react-native-responsive-fontsize","react-native-svg","react-navigation","react-navigation-stack","styled-components","typescript","yarn"],"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/Aszurar.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}},"created_at":"2022-05-10T04:57:09.000Z","updated_at":"2024-11-11T17:15:39.000Z","dependencies_parsed_at":"2022-08-25T08:50:41.628Z","dependency_job_id":null,"html_url":"https://github.com/Aszurar/PokeDev","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Aszurar/PokeDev","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aszurar%2FPokeDev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aszurar%2FPokeDev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aszurar%2FPokeDev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aszurar%2FPokeDev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Aszurar","download_url":"https://codeload.github.com/Aszurar/PokeDev/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aszurar%2FPokeDev/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265614324,"owners_count":23798426,"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","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":["android-studio","axios","javascript","nodejs","react","react-native","react-native-feather","react-native-gesture-handler","react-native-iphone-x-helper","react-native-modal","react-native-reanimated","react-native-responsive-fontsize","react-native-svg","react-navigation","react-navigation-stack","styled-components","typescript","yarn"],"created_at":"2024-12-18T07:13:08.136Z","updated_at":"2025-07-17T14:06:51.629Z","avatar_url":"https://github.com/Aszurar.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PokeDev\n\n O projeto **PokeDev** é um aplicativo mobile que simula uma pokedex do jogos e anime Pokémon.\n\n\n\u003ch3 align=\"center\"\u003e\n  \u003ca href=\"#information_source-sobre\"\u003eSobre\u003c/a\u003e\u0026nbsp;|\u0026nbsp;\n  \u003ca href=\"#interrobang-motivo\"\u003eMotivo\u003c/a\u003e\u0026nbsp;|\u0026nbsp;\n  \u003ca href=\"#art-design\"\u003eDesign\u003c/a\u003e\u0026nbsp;|\u0026nbsp;\n  \u003ca href=\"#seedling-requisitos-mínimos\"\u003eRequisitos\u003c/a\u003e\u0026nbsp;|\u0026nbsp;\n  \u003ca href=\"#rocket-principais-tecnologias-utilizadas\"\u003eTecnologias\u003c/a\u003e\u0026nbsp;|\u0026nbsp;\n  \u003ca href=\"#package-como-baixar-e-executar-o-projeto\"\u003eBaixar e Executar\u003c/a\u003e\u0026nbsp;\n\u003c/h3\u003e\n\n___\n\n\u003cdiv align=\"center\" \u003e\n    \u003cimg src=\"https://i.imgur.com/Pb0pRVA.gif\" width=\"250\"\u003e____\u003cimg src=\"https://i.imgur.com/riiOoLb.gif\" width=250\u003e\n\u003c/div\u003e\n\n\n- [**Link do vídeo completo sobre o projeto**]()\n___\n\n## :information_source: Sobre\n\n- Uma **pokedex** seria uma aparelho que teria todas informações sobre os pokémons, os quais os personagens dos jogos e do anime usam para conhecer sobre cada pokémon, ver suas estatísticas, movimentos, habitat, habilidades dentre outras informações. Ou seja, é basicamente uma aplicação Wiki ou Bestiário de pokémon.\n- Para a alimentação dos dados foi usado a PokeAPI, uma API de Pokémon muito bem documentada, livre para usar e popular, segue o link:\n  - PokeApi: https://pokeapi.co/\n- Para criação das interfaces foi usado React Native em conjunto com TypeScript e diversas bibliotecas disponíveis para React Native como:\n  - React Navigation: https://reactnavigation.org/\n  - Styled Components: https://www.styled-components.com/\n- dentre outras, abaixo, na sessão de   \u003ca href=\"#rocket-principais-tecnologias-utilizadas\"\u003eTecnologias\u003c/a\u003e estará mais detalhado.\n\n* **Home**:\n\n\u003cdiv align=\"center\" \u003e\n  \u003cimg src=\"https://i.imgur.com/YAZhIOl.gif\" width=\"250\"\u003e____\u003cimg src=\"https://i.imgur.com/Xr7jUeY.gif\" width=250\u003e____\u003cimg src=\"https://i.imgur.com/z1NJ8Hs.gif\" width=\"250\"\u003e\n\u003c/div\u003e\n\n___\n\n## :interrobang: Motivo\n\nCom esse projeto foi posto em prática quase todos os conceitos aprendidos com minha experiência profissional e educacional princpalmente com a Rocketseat.\n\n1. **Home**\n\u003cimg src=\"https://i.imgur.com/CPbyHen.png\" width=\"1000\"\u003e\n- Funcionalidades:\n\n  - Listagem de todos Pokémons e suas variações.\n    - Perfomática, por meio da Flatlist.\n\n  - Pesquisa de qualquer Pokémons e suas variações.\n    - É feita pelo nome(_não existe pokémon com o mesmo nome_).\n    - Todos Pokémon que contém o nome digitado serão mostrados como resultados garantindo assim mesmo que o usuário não lembre totalmente do nome do Pokémon, consiga encontrá-lo.\n      - Exemplo: Pesquisar com a palavra **Regi**, o resultado será **Regigigas, Regice, Regirock, Regidragon, Registeel e Regieleki.**\n\n  - Reset de pesquisa.\n    - É feito por meio de um botão que é ativado no Input após a pesquisa ou caso ocorra algum erro.\n    - Garante melhor usabilidade e praticidade.\n\n  - Número total de Pokémon seja do resultado da pesquisa ou da listagem geral.\n    - É mostrado na tela em um componente que se atualiza a cada pesquisa ou listagem.\n\n  - Componente de Loading personalizado para cada componente.\n    - Uso da Lottie Animations.\n    - Loading interativo no Input\n\n  - Componente de Erro personalizado e animado caso a listagem ou a pesquisa não tenham resultados.\n    - Uso da Lottie Animations.\n    - Erro interativo no Input.\n\n  - Focus e Submit inteligente no Input de pesquisa.\n    - Ao digitar o nome do Pokémon, podemos tanto pesquisar apertando o botão de pesquisa quanto apertar o botão de submit padrão do teclado do dispositivo móvel.\n    - Ao apertar em qualquer outra região da tela será retirado o foco do Input.\n    - Foi necessário o uso do TouchableWithoutFeedback para que o Input não fique ativado quando o usuário clicar em qualquer outra região da tela em conjunto com o onStartShouldSetResponder para evitar problemas de icompatibilidade com a Flatlist e RectButton.\n\n\n* **Página de detalhes sobre o Pokémon**:\n\u003cdiv align=\"center\" \u003e\n  \u003cimg src=\"https://i.imgur.com/1ocPfUP.gif\" width=\"250\"\u003e____\u003cimg src=\"https://i.imgur.com/riiOoLb.gif\" width=250\u003e____\u003cimg src=\"https://i.imgur.com/6iHu4us.gif\" width=\"250\"\u003e\n\u003c/div\u003e\n\n2. **Página sobre o Pokémon**\n\u003cimg src=\"https://i.imgur.com/5OJQkwU.png\" width=\"1000\"\u003e\n\n - Funcionalidades:\n\n   - Informações sobre o Pokémon.\n   - Nome, número, habitat, tipo, habilidades, etc.\n   - Todas as informações são mostradas em um componente que se atualiza a cada pesquisa ou listagem.\n   - Componente de loading personalizado e animado em todos componentes.\n   - Nessa tela foi necessário realizar 2 requisições para obtermos todas informações exibitdas:\n     - Uma para obter o nome do Pokémon, tipo, número na national pokedex, peso, altura, habilidades e movimentos.\n     - Outra para obter o habitat, raridade e descrição.\n     - Para isso houve determinada dificuldade pois uma requisição dependia da outra, ou seja, eram processos assíncronos dependentes fazendo com que houvesse difiluldade em garantir que uma requisção seja feita somente após a outra, ou cudiado no uso de uma variável Estado\n\n    - **Modais**\n\n    - Há 2 modais que podem ser acessíveis nessa tela:\n      - **Modal de listando de todos movimentos**\n        - É acessado ao tocar no botão de todos movimentos.\n        - O botão de todos movimentos não é mostrado caso o pokémon não tenha mais de 4 movimentos, ou seja, o modal não é acessível caso todos movimentos do pokémon já estejam sendo mostrado na página de detalhes de pokémon(ate 4).\n        - O Modal é deslizável(swipeable) na vertical, pode ser fechado deslizando para baixo ou aperdando nos botões com os ícones indicando para baixo.\n\n      - **Modal sobre cada movimento**\n        - É acessado por meio do modal acima, no caso, ao apertar em algum movimento da listagem acima o modal sobre o movimento é aberto.\n        - Assim como o de cima, também é deslizável(swipeable), mas nesse caso na horizontal\n        - Nele é feito a requisição para obter as informações exibidas sobre o movimento selecionado.\n        - Essa requisição depende da url do movimento selecionado, ou seja, assim como mencionado anteriormente tamém é uma requisição que depende de outra.\n        - Nesse caso depende da requisição sobre os detalhes do pokémon feita na página de detalhes do pokémon, um dos parâmetros retornados no objeto da resposta é  um vetor de objeto, cada um contendo o nome de todos movimentos daquele pokémon e a url de cada um.\n\n* **Modais**\n\u003cdiv align=\"center\" \u003e\n  \u003cimg src=\"https://i.imgur.com/Canu4px.gif\" width=\"175\"\u003e____\u003cimg src=\"https://i.imgur.com/aKREnNL.gif\" width=\"175\"\u003e____\u003cimg src=\"https://i.imgur.com/RwkgnR0.gif\" width=175\u003e____\u003cimg src=\"https://i.imgur.com/E7qq0iw.gif\" width=\"175\"\u003e\n\u003c/div\u003e\n\n- Funcionalidades em desenvolvimento:\n\n    i. **Modal de evolução dos pokémons**\n    - Não foi possível terminar ainda a parte da impressão no modal e estilização das evoluções de cada pokémon mas a requisição já foi contruída no código assim como o botao de evolução\n        - O modal foi desativado para voltar quando a funcionalidade tiver pronta)\n\n    ii. **Página de \"Meus Pokémon\" e salvar pokémon**\n    - Funcionalidade que permite o usuário salvar/favoritar determinado pokémon e ele ser salvo localmente no dispositivo físico com Assync Storage.\n    - Ainda não foi possível realizar essa funcionalidade mais já foi planejada.\n\n    iii. **Página sobre o Movimento**\n    - Uma página com mais inforações sobre o movimento selecionado no modal sobre os movimentos.\n    - Teríamos um botão nele que acessaria essa página para detalhar mais informações e uma listagem com todos pokémons que possui aquele movimento.\n\n    iv. Splash Screen\n    - Tela de loading inicial da aplicação.\n\n___\n\n## :art: Design\n\n[\u003ch2 align=\"center\"\u003ePokedev\u003c/h2\u003e]()\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"https://i.imgur.com/CPbyHen.png\" width=\"1000\"\u003e\n\u003cimg src=\"https://i.imgur.com/NagFURR.png\" width=\"1000\"\u003e\n\u003cimg src=\"https://i.imgur.com/dDLRsnX.png\" width=\"100\"\u003e\n\u003c/div\u003e\n\n1. Código:\n     - É tentando **manter o padrão que é ensinado na Rocketseat** para o código mais limpo, organizado de facil entendimento com sua estrutura de pastas também.\n     - Em geral foi todo código foi **feito com TypeScript** de forma a manter **sempre uma tipagem/interface** para cada elemento que foi usado tanto para **facilitar o desenvolvimento e entendimento do código tanto para o dev quanto para o VsCode/IDE**, quanto para **manter a consistência do código e a IDE possa sugerir correções e recomendações de forma mais efetiva**.\n2. Estilização:\n     - Toda estilização foi realizada com **styled-components**, que é uma biblioteca de css que tem como objetivo facilitar a criação de estilos e componentes de forma mais eficiente e similar a web com ReactJS, assim podemos **manter o mesmo padrão para web e mobile facilitando o desenvolvimento.**\n     - Foi criado um **tema global** com as **fontes e cores** do projeto que são passadas no Figma.\n     - A fonte usada foi a **Poppins**, que é uma fonte popular e livre para uso, está na biblioteca do Google Fonts. Foi instalada no projeto como fonte externa tanto para o **android quanto para o IOS**.\n     - Para lidar com SVG, JSON, PNG foi necessário realizar uma configuração para que o TypeScript reconheça tais arquivos.\n       - Os SVG foram tipados como componentes React(_React.FC_) em conjunto com a **SvgProps da biblioteca react-native-svg.**\n3. React Native\n     - A estrutura dos componentes foi feita por meio de funções, que são **funções que retornam um componente React.**\n     - A pasta de um componente é composta por um arquivo chamado **index.tsx** e um arquivo de estilização **styles.ts**.\n     - Foi usado o yarn como gerenciador de pacotes.\n     - É utilizado a **react-native-gesture-handler** para criar os botões da aplicação mantendo assim a consistência do dos efeitos de reação do componente entre as platformas IOS e Android.\n___\n## :seedling: Requisitos Mínimos\n\n- Android Studio\n- Celular(Opcional)\n- Node.js\n- React\n- React-Native\n- TypeScript\n- Yarn(ou NPM)\n\n___\n\n## :rocket: Principais Tecnologias Utilizadas\n\nO projeto foi desenvolvido utilizando as seguintes tecnologias\n- [Android Studio](https://developer.android.com/studio)\n- [Axios](https://www.npmjs.com/package/axios)\n- [Javascript](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript)\n- [Lottie Animations React Native](https://www.npmjs.com/package/lottie-react-native)\n- [NodeJS](https://nodejs.org/en/)\n- [React](https://pt-br.reactjs.org/)\n- [React Native](https://reactnative.dev/)\n- [React Navigation](https://reactnavigation.org/)\n   - [Stack Navigator](https://reactnavigation.org/docs/stack-navigator/)\n- [React Native Feather](https://www.npmjs.com/package/react-native-feather)\n  - [Feather Icons](https://feathericons.com/)\n- [React Native Gesture Handler](https://docs.swmansion.com/react-native-gesture-handler/docs/)\n  - [RectButton \u0026 Bordeless Button](https://docs.swmansion.com/react-native-gesture-handler/docs/next/api/components/buttons/#rectbutton)\n- [React Native Iphone X Helper](https://github.com/ptelad/react-native-iphone-x-helper#readme)\n- [React Native Modal](https://github.com/react-native-modal/react-native-modal)\n- [React Native Reanimated](https://docs.swmansion.com/react-native-reanimated/docs/)\n- [React Native Responsive Fontsize](https://www.npmjs.com/package/react-native-responsive-fontsize)\n- [React Native SVG](https://github.com/react-native-svg/react-native-svg)\n- [Styled Components](https://www.styled-components.com/)\n- [TypeScript](https://www.typescriptlang.org/)\n- [Yarn](https://classic.yarnpkg.com/blog/2017/05/12/introducing-yarn/)\n___\n## :package: Como baixar e executar o projeto\n\n  - Clonar o projeto:\n    ```bash\n     git clone https://github.com/Aszurar/PokeDev.git\n    ```\n  - É necessário a instalação do **yarn** de acordo com seu sistema operacional, para isso veja como no site do [Yarn](https://github.com/Aszurar/SavePass.git)\n  - Instalação das dependências:\n    - Execute o comando abaixo dentro da pasta do projeto\n    ```bash\n      yarn\n    ```\n - É necessário a instalação do emulador [Android Studios](https://developer.android.com/studio) e das tecnologias requesitadas acima no:seedling:   \u003ca href=\"#seedling-requisitos-mínimos\"\u003e**Requisitos**\u003c/a\u003e\n - Também é necessário a instalação/configuração de outras tecnologias, para isso siga os passos indicados nessa página de acordo com seu sistema operacional: [Executando uma Aplicação React-Native emulando Windows/Linux/MacOS ou direto no dispositivo mobile Android/IOS](https://react-native.rocketseat.dev/android/linux)\n - Execução -\n - Com o emulador android aberto ou o dispositivo móvel físico conecatdo via USB:\n - **Abra a pasta do projeto com alguma IDE(Vscode) ou simplesmente abra o terminal na pasta do projeto e execute o comando abaixo:**\n    ```bash\n       yarn android\n    ```\n- Caso o metro-bundle não funcione, execute como abaixo:\n    1. Executando o metro-bundle:\n        ```bash\n            yarn start\n        ```\n    2. Executando no android:\n        ```bash\n            yarn android\n        ```\n- Caso esteja no IOS, após as configurações faladas anteriormente até no link mencionado acima, então execute o comando abaixo:\n    ```bash\n        yarn ios\n    ```\n___\nDesenvolvido por :star2: Lucas de Lima Martins de Souza.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faszurar%2Fpokedev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faszurar%2Fpokedev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faszurar%2Fpokedev/lists"}