Giter Site home page Giter Site logo

tuliomitico / github-trending-mobile Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 291 KB

Esse aplicativo é uma réplica do GitHub Trending usando da API GraphQL do próprio GitHub

JavaScript 5.48% Starlark 5.95% Java 29.64% Ruby 2.32% Objective-C 15.76% TypeScript 40.84%

github-trending-mobile's Introduction

Github Trending Mobile

Esse aplicativo é uma réplica dos trendings do Github, usando como base a API GraphQL na versão 4 do próprio GitHub. As tecnologias usadas são as seguintes: React-Native, TypeScript, Async-Storage, GraphQL e Apollo Client. Algumas funciionalidades ainda não funcionam corretamente como desmarcar um favorito e ser removido.

Requisitos Funcionais

  • Listar os Trending

  • Listar os favoritos (+/-)

  • Acessar os detalhes de um repositório

Requisitos não funcionais

  • TypeScript
  • GraphQL
  • Apollo Client

github-trending-mobile's People

Contributors

tuliomitico avatar

Watchers

James Cloos avatar  avatar

github-trending-mobile's Issues

Feedback - Skilopay

Boa noite Túlio, obrigado por participar do nosso desafio!

Segue um breve Feedback sobre seu projeto, considere tudo como sugestões, se discordar de algo ou ficar com alguma dúvida estou disponível para discutirmos sobre.

Review Geral:

  • Sugestão: No seu Readme, você poderia utilizar um Gif para mostrar sua aplicação bem como as animações dela.
  • Senti falta de uma sessão de Setup e Instalação no seu Readme, uma pessoa sem conhecimentos de react-native não consegue reproduzir o seu projeto, e isso inclui a adição da chave do github nas variáveis de ambiente que é algo especifico do seu projeto.
  • Mal uso de commits, um projeto inteiro em um único commit não é um versionamento de código. Recomendo o estudo e adoção de alguma padronização de commits (conventional-commits por exemplo). Um outro material bom para leitura é o https://chris.beams.io/posts/git-commit/
  • No seu package.json estão declarados alguns pacotes que não estão sendo utilizados (ex: react-native-masked-view). Esses pacotes não utilizados aumentam desnecessariamente o bundle de sua aplicação.
  • Pelo que eu entendi do seu código, apenas 15 repositórios serão exibidos na lista de Trendings, não era essa a proposta. Você poderia ter utilizado FlatList o invés de ScrollView. Incluindo adicionar um callback onEndReached para carregar mais itens do Trending enquanto scrollando em conjunto com o fetchMore do useQuery.
  • O código está em geral bem escrito e bem formatado, o único ponto a melhorar seriam comentários principalmente nas regras de negócio.
  • Você poderia utilizar um arquivo ou pasta de constraints para armazenar constantes globais ao longo de todo o app como por exemplo cores e espaçamentos.
  • Remover importações não utilizadas (Ex.: src/services/store.ts)
  • O Alert.alert dentro do (src/pages/Trending/index.tsx:38) era melhor você fazer um useEffect ou algo do tipo para disparar o Alert ao invés de colocar no root do componente.
  • Usar tipagem de React.FC ao invés de JSX.Element
  • Adicionar SpellChecker (extensão no vs-code) para evitar Typos (src/routes/constants.routes.ts:1 e src/components/Items/styles.ts:3)
  • Não consegui entender a motivação por trás da linha 48 do arquivo src/pages/Trending/index.tsx
  • Bom uso de Stateless Components com react-hooks
  • Bom uso da lib styled-components
  • Poderia ter trabalhado um pouco mais nos testes da aplicação, ao menos testes de snapshots em cada um dos componentes com props variadas.

Diferenciais

  • Utilizar Apollo-client
  • Criar issues e resolvê-las a partir de pull requests
  • Documentação no código e repositório
  • Arquivos pequenos com poucas responsabilidades
  • Estado da aplicação bem estruturado
  • Usabilidade e feedback para o usuário no carregamento da consulta
  • Seguir algum Javascript Style Guide
  • Utilizar alguma ferramenta de CI
  • Testes unitários

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.