Loading repository data…
Loading repository data…
rickferrdev / repository
Este repositório contém o código-fonte do meu portfólio pessoal, um projeto desenvolvido para demonstrar minhas habilidades em desenvolvimento front-end moderno, consumo de APIs e design de interface.
Este repositório contém o código-fonte do meu portfólio pessoal, um projeto desenvolvido para demonstrar minhas habilidades em desenvolvimento front-end moderno, consumo de APIs e design de interface.
O projeto é especial pois é totalmente dinâmico: ele se popula automaticamente buscando e exibindo meus dados de usuário e repositórios diretamente da GitHub API em tempo real.
Este projeto foi construído com uma stack moderna e robusta:
Repository e User).fetch para consumo assíncrono das APIs do GitHub.O objetivo principal deste projeto era criar uma experiência de portfólio que fosse ao mesmo tempo elegante e técnica, evidenciando o uso de boas práticas e recursos avançados do React e TypeScript.
A funcionalidade central do portfólio é a comunicação com o GitHub.
https://api.github.com/users/rickferrdev (Dados do usuário)https://api.github.com/users/rickferrdev/repos?per_page=100 (Lista de repositórios)useState (com user, repos, e loading) e o hook useEffect são utilizados para gerenciar o ciclo de vida da busca de dados e o estado de carregamento.fetchData utiliza Promise.all para buscar os dados de usuário e repositórios em paralelo, otimizando o tempo de carregamento inicial.A utilização de TypeScript foi crucial para definir as estruturas de dados esperadas da API do GitHub.
Repository e User definem claramente os campos esperados (e seus tipos, como string, number, boolean, null) garantindo que o código que consome esses dados esteja seguro e auto-documentado.O código está modularizado em componentes e funções auxiliares:
Portfolio): Gerencia o estado e orquestra a renderização das diferentes seções (Hero e Projetos).<a> no grid) é uma unidade visual, com lógica de estilo e hover encapsulada.MapPinIcon, LinkIcon, etc.) são implementados como componentes React, tornando-os fáceis de usar e estilizar.getLanguageColor: Mapeia a linguagem de programação (repo.language) para uma cor específica, que é usada para estilizar o título e o indicador de cor no cartão, um toque visual que reforça a tecnologia principal de cada projeto.Badge: Exibe informações de status de forma consistente (ex: "Open to Work")..filter((repo) => !repo.fork)) e ordena os projetos pelo número de estrelas (.sort((a, b) => b.stargazers_count - a.stargazers_count)), garantindo que os projetos mais relevantes e de autoria própria sejam exibidos primeiro.langColor), criando um visual coeso e informativo.<header>, <main>, <footer>, <a>) e atributos (target="_blank", rel="noreferrer") contribui para uma melhor acessibilidade e usabilidade.Embora este seja um projeto de portfólio hospedado, você pode configurá-lo localmente:
git clone https://github.com/rickferrdev/exuberant-night
cd exuberant-night
npm install
npm dev
http://localhost:3000 (ou porta similar, dependendo da sua configuração).