[TESTE] Daniel Gustavo Favero - Desenvolvedor Frontend#8
Open
danielg-favero wants to merge 54 commits intosizebay:mainfrom
Open
[TESTE] Daniel Gustavo Favero - Desenvolvedor Frontend#8danielg-favero wants to merge 54 commits intosizebay:mainfrom
danielg-favero wants to merge 54 commits intosizebay:mainfrom
Conversation
added 30 commits
August 13, 2025 11:02
added 24 commits
August 16, 2025 01:17
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📝 Descrição
Este projeto é uma aplicação web que permite aos usuários pesquisar perfis e repositórios públicos do GitHub.
⚡ Principais funcionalidades
NextAuthfetch cachedoNext.js, otimizando desempenho e tempo de respostaLinks de Deploy
✅ Checklist de Requisitos
🧪 Testes
Button:atomInput:atomTypography:atomRepositoriesList:templateusePagination🚀 Como executar
NextAuthRode o comando
Configure um novo App
OAuthno seu perfil do github. Em caso de dúvidas siga a documentação.Informe os seguintes valores para os campos:
<nome-para-o-app>localhost:3000<descricao-para-o-app>localhost:3000/api/auth/callback/githubAo final, clique em
Update application. Você será redirecionado para página do seu aplicativoOAuth.Clique em
Generate a new client secretpara gerar uma nova chave de acesso.Copie o
ClientIDe oClient secrete cole dentro do arquivo.env.localnas seguintes variáveis:https://api.github.comna variávelGITHUB_API_URLdentro de.env.localAo final, o arquivo
.env.examplefica:localhost:3000em seu navegador.📱 Screenshots
🔧 Decisões Técnicas
Next.js
O
Next.jsfoi escolhido como framework principal por sua simplicidade, performance e suporte a recursos modernos, como Server Components e roteamento otimizado via App Router.Para as chamadas de API, foi utilizado o
fetchnativo do Next.js com cache integrado e request memoization, evitando requisições duplicadas desnecessárias e garantindo uma navegação rápida e fluida. Essa abordagem foi escolhida em vez de chamadas do lado do cliente (e.g. SWR e React Query) devido as soluções decachenativas, performance e tempo de carregamentoPara garantir escalabilidade e manutenção, foi criado um adapter do
fetchna camada de/src/infra/http, permitindo que futuramente seja possível substituir por outro cliente HTTP (como Axios) sem impacto no restante da aplicação.Organização dos Componentes
A estrutura de componentes segue a filosofia Atomic Design, garantindo organização, reuso e manutenção mais simples:
Button,Input,Typography) que formam a base para elementos mais complexos.Skeletons,EmptyStates,Pagination).Services, mapeamento e integração de dados. Testes de integração são realizados aqui.Servicese tratam parâmetros de rota.Muitos componentes utilizam o Composition Pattern, permitindo maior flexibilidade e controle na construção da interface.
Essa organização facilita manutenção, escalabilidade e teste dos componentes.
Principais Desafios
Login Social
Implementar o login via GitHub com
NextAuthfoi um desafio interessante especialmente porque o aplicativo precisava estar envolvido pelo provider do NextAuth. Nos testes, foi necessário mockar métodos do NextAuth para simular autenticação e garantir que os testes funcionassem corretamente.Essa ideia surgiu quando o número de requisições para a API pública do Github para meu IP hávia acabado.
Paginação de Dados
A API pública do GitHub fornece informações paginadas nos headers das respostas. Foi necessário interpretar esses headers corretamente e integrá-los ao componente
Pagination, garantindo que a navegação entre páginas funcionasse de forma consistente.Decisões Arquiteturais
Definir a arquitetura do projeto exigiu planejamento cuidadoso. Foi necessário:
Essa abordagem garantiu um projeto robusto, com boa performance e fácil manutenção.
⏱️ Tempo Investido
Aproximadamente 30 horas, o que incluiu: