Aplicação de terminal desenvolvida em Python para consultar e exibir informações públicas de usuários do GitHub através da GitHub REST API.
O projeto foi construído de forma incremental com foco no aprendizado prático de Python, APIs, HTTP, JSON, testes automatizados, Git e GitHub.
✅ V1.0 publicada
A primeira versão funcional do projeto está marcada com a tag v1.0.
O desenvolvimento continua após a V1, com melhorias na organização do código e adição de testes automatizados com pytest.
- Entrada de username pelo terminal
- Remoção de espaços extras
- Validação do formato do username
- Limite máximo de 39 caracteres
- Validação de hífens
- Rejeição de caracteres inválidos
- Rejeição de caracteres fora do padrão ASCII
- Consulta à API pública do GitHub
- Tratamento de usuário inexistente (
404) - Tratamento de outros status HTTP
- Tratamento de falhas de conexão e timeout
- Tratamento de campos ausentes no perfil
- Exibição de:
- username
- nome
- biografia
- quantidade de repositórios públicos
- seguidores
O projeto utiliza pytest para testar as regras de validação de username.
Atualmente os testes cobrem casos como:
- username válido
- username vazio
- hífen no início
- hífens consecutivos
- caracteres inválidos
- limite de 39 caracteres
- username com mais de 39 caracteres
Para executar os testes:
python -m pytest- Python
- Requests
- Pytest
- Git
- GitHub
- GitHub REST API
- JSON
- HTTP
github-profile-viewer/
├── tests/
│ └── test_validators.py
├── .gitignore
├── github_client.py
├── main.py
├── README.md
├── requirements.txt
└── validators.py
Responsável por coordenar o fluxo principal da aplicação.
Contém as regras de validação do username.
Responsável pela comunicação com a API do GitHub.
Contém os testes automatizados do projeto.
git clone https://github.com/paulomatheuz/github-profile-viewer.gitEntre na pasta:
cd github-profile-viewerpip install -r requirements.txtpython main.pyDigite um username:
Digite um usuário do GitHub: paulomatheuz
Exemplo de saída:
Usuário: paulomatheuz
Nome: Não informado
Biografia: Software Engineering Student.
Repositórios públicos: 7
Seguidores: 11
Os dados são obtidos diretamente da API do GitHub e podem mudar.
Username inválido:
Username inválido
Usuário inexistente:
Usuário não encontrado
Falha de conexão:
Erro de conexão. Tente novamente.
Durante o desenvolvimento deste projeto pratiquei:
- variáveis e tipos
- strings
- condicionais
- operadores lógicos
- loops
- listas e dicionários
- funções
- parâmetros e retornos
- escopo
- módulos e imports
- validação de dados
- tratamento de exceções
- HTTP e status codes
- consumo de APIs
- JSON
- Requests
- testes automatizados com pytest
- debugging
- refatoração
- separação de responsabilidades
- Git e GitHub
O histórico de commits foi mantido como uma linha do tempo da evolução do projeto e do meu aprendizado.
O projeto começou apenas validando um username e evoluiu gradualmente para:
- validação de entrada;
- consumo da API do GitHub;
- interpretação de JSON;
- tratamento de erros;
- publicação da V1;
- testes automatizados;
- separação do código em módulos.
A primeira versão funcional está marcada com:
v1.0
O código presente na branch master pode conter melhorias realizadas após essa versão.
Possíveis evoluções futuras:
- ampliar a cobertura de testes
- testar o cliente da API sem depender de requisições reais
- exibir repositórios públicos
- exibir linguagens utilizadas
- melhorar a interface do terminal
- continuar refinando a organização do código
Mais do que construir um GitHub Profile Viewer, este projeto serve como registro do meu aprendizado em programação e desenvolvimento de software através da construção, teste, depuração, refatoração e versionamento de uma aplicação Python real.