{"id":29040419,"url":"https://github.com/matheusdias10/github-profile-pipeline","last_synced_at":"2026-04-11T13:02:46.516Z","repository":{"id":295139803,"uuid":"988698257","full_name":"MatheusDias10/github-profile-pipeline","owner":"MatheusDias10","description":"Pipeline Python que extrai dados de perfis do GitHub via API, limpa com pandas, exporta para banco de dados SQL Server e exibe em uma interface web.","archived":false,"fork":false,"pushed_at":"2025-06-15T16:46:32.000Z","size":43,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-26T14:05:32.906Z","etag":null,"topics":["json","pandas","requests","sqlalchemy","sqlserver","streamlit"],"latest_commit_sha":null,"homepage":"","language":"Python","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/MatheusDias10.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-23T00:13:17.000Z","updated_at":"2025-06-15T16:46:35.000Z","dependencies_parsed_at":"2025-06-02T03:45:25.649Z","dependency_job_id":null,"html_url":"https://github.com/MatheusDias10/github-profile-pipeline","commit_stats":null,"previous_names":["matheusdias10/github-profile-pipeline"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MatheusDias10/github-profile-pipeline","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatheusDias10%2Fgithub-profile-pipeline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatheusDias10%2Fgithub-profile-pipeline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatheusDias10%2Fgithub-profile-pipeline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatheusDias10%2Fgithub-profile-pipeline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MatheusDias10","download_url":"https://codeload.github.com/MatheusDias10/github-profile-pipeline/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatheusDias10%2Fgithub-profile-pipeline/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262081117,"owners_count":23255662,"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":["json","pandas","requests","sqlalchemy","sqlserver","streamlit"],"created_at":"2025-06-26T14:05:24.767Z","updated_at":"2025-12-30T22:23:01.955Z","avatar_url":"https://github.com/MatheusDias10.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# github-profile-pipeline\n\nPipeline Python que extrai dados de perfis do GitHub via API, limpa com pandas, exporta para um banco de dados SQL Server e exibe tudo em uma interface Web usando Streamlit.\n\n---\n\n## Visão Geral\n\nEste projeto fornece um pipeline ETL simples para:\n\n1. **Extrair** dados de perfis GitHub usando a API oficial.\n2. **Transformar** o JSON bruto em um DataFrame pandas, mantendo apenas os campos relevantes.\n3. **Carregar** os resultados em um banco de dados do SQL Server para análises ou integração com outros sistemas.\n4. **Exibir** os resultados em uma interface web com o Streamlit.\n\nIdeal para quem deseja comparar características de usuários (número de repositórios, seguidores, data de criação, etc.) de forma automatizada.\n\n---\n\n## Recursos Principais\n\n* Busca de perfis GitHub autenticada via token (Personal Access Token).\n* Tratamento de erros de rede e parsing de JSON.\n* Garantia de configuração de ambiente (.env) e feedback claro em caso de falta de credenciais.\n* Modularização em fases Extract e Transform, com possibilidade de extensão para Load.\n* Retorno de um Banco de Dados pronto para análise e armazenamento.\n* Exibição dos dados armazenados em uma interface web.\n\n---\n\n## Tecnologias Utilizadas\n\n* **Python 3.10+**\n* **pandas 2.2.3**\n* **requests 2.32.3**\n* **python-dotenv 1.1.0**\n* **Streamlit**\n* **sqlalchemy**\n\n---\n\n## Estrutura do Projeto\n\n```text\ngithub-profile-pipeline/\n│\n├── .venv/                                # Ambiente virtual\n├── etl_process/                          # Pasta principal do pipeline ETL\n│   ├── extract/                          # Módulo de extração\n│   │   └── extract_github_client.py      # Função de extração de perfis\n│   ├── transform/                        # Módulo de transformação\n│   │   └── transform_data.py             # Limpeza e normalização de dados\n│   └── load/                             # Módulo de carregamento\n│       ├── db_config.py                  # Configuração do Banco de Dados SQL Server\n│       └── functions.py                  # Funções de persistência (funções e etc.)                  \n├── .gitignore                            # Arquivos ou coisas a se ignorar\n├── app.py                                # Aonde será exibido a interface web com todo o processo ETL embutido.  \n├── README.md                             # README\n└── requirements.txt                      # Requerimentos\n```\n\n---\n\n## Instalação\n\n1. Clone o repositório:\n\n   ```bash\n   git clone https://github.com/MatheusDias10/github-profile-pipeline.git\n   cd github-profile-pipeline\n   ```\n\n2. Crie e ative um ambiente virtual:\n\n   ```bash\n   python3 -m venv .venv\n   .\\.venv\\Scripts\\activate\n   ```\n\n3. Instale as dependências:\n\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n---\n\n## Configuração\n\n1. Crie um arquivo `.env` na raiz do projeto:\n\n   ```dotenv\n   GITHUB_TOKEN=seu_personal_access_token_aqui\n   ```\n2. Certifique-se de que `.env` está listado no `.gitignore` para não vazar credenciais.\n\n---\n\n## Uso\n\n### Extrair um único perfil\n\n```bash\npython extract.py\nQual o nome do perfil GitHub:\n```\n---\n\n## Exemplo de Resultado\n\nO arquivo CSV terá colunas como:\n\n| login   | public_repos | followers | following | created_at          | updated_at          | account_age |\n| ------- | ------------ | --------- | --------- | ------------------- | ------------------- | ----------- |\n| octocat | 8            | 5256      | 9         | 2011-01-25T18:44:36Z | 2025-05-02T07:45:05Z | 5211      |\n\n\n---\n\n## Contribuindo\n\n1. Fork este repositório.\n2. Crie uma branch de feature (`git checkout -b feature/minha-feature`).\n3. Implemente as mudanças e escreva testes, se aplicável.\n4. Faça commit e push da sua branch.\n5. Abra um Pull Request descrevendo suas alterações.\n\n---\n\n## Screenshots\n\n![Interfaceweb](https://github.com/user-attachments/assets/9a0708e4-3f5c-440c-8134-7687bcd69956)\n\n![Captura de tela 2025-06-12 152309](https://github.com/user-attachments/assets/da1047ce-caf9-4325-8eb1-7baa30801489)\n\n---\n\n## Autor\n\nFeito por: MatheusDias10 – [LinkedIn](https://www.linkedin.com/in/matheus-dias-71982b333/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatheusdias10%2Fgithub-profile-pipeline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatheusdias10%2Fgithub-profile-pipeline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatheusdias10%2Fgithub-profile-pipeline/lists"}