{"id":25457290,"url":"https://github.com/charlie5dh/github_repos_manager","last_synced_at":"2026-04-09T21:04:06.312Z","repository":{"id":277896126,"uuid":"933445797","full_name":"Charlie5DH/Github_Repos_Manager","owner":"Charlie5DH","description":"Github repo manager","archived":false,"fork":false,"pushed_at":"2025-02-16T21:13:02.000Z","size":11,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-16T21:26:05.412Z","etag":null,"topics":["github","mariadb","rabbitmq","typescript","websockets"],"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/Charlie5DH.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}},"created_at":"2025-02-16T00:57:58.000Z","updated_at":"2025-02-16T21:13:05.000Z","dependencies_parsed_at":"2025-02-16T21:36:12.720Z","dependency_job_id":null,"html_url":"https://github.com/Charlie5DH/Github_Repos_Manager","commit_stats":null,"previous_names":["charlie5dh/github_repos_manager"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Charlie5DH%2FGithub_Repos_Manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Charlie5DH%2FGithub_Repos_Manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Charlie5DH%2FGithub_Repos_Manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Charlie5DH%2FGithub_Repos_Manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Charlie5DH","download_url":"https://codeload.github.com/Charlie5DH/Github_Repos_Manager/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239394714,"owners_count":19631122,"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":["github","mariadb","rabbitmq","typescript","websockets"],"created_at":"2025-02-18T02:16:56.761Z","updated_at":"2025-11-03T13:03:08.468Z","avatar_url":"https://github.com/Charlie5DH.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gerenciamento de Repositórios do GitHub\n\nImagine criar uma plataforma que permita aos usuários pesquisar e gerenciar facilmente os repositórios do GitHub. Este desafio envolve a criação de um aplicativo web com duas telas distintas e um backend para processamento de dados em segundo plano, afim de atestar o conhecimento em jobs em segundo plano utilizando fila, banco de dados e api rest.\n\n## Requisitos:\n\n### Tela 1: Pesquisa e Exportação\n\nDeve fornecer uma barra de pesquisa que permite aos usuários buscar por um usuário do GitHub.\nAo selecionar um usuário, deve exibir todos os seus repositórios.\nDeve incluir um botão para exportar todos os repositórios do usuário no formato CSV.\n\n### Tela 2: Importação e Visualização\n\nDeve conter um botão para importar os repositórios exportados da tela anterior.\nDeve exibir uma tabela com os repositórios importados, incluindo o nome do repositório, o nome do proprietário e a quantidade de estrelas do repositório.\nDeve persistir os dados importados no banco de dados.\n\n## Backend:\n\nProcessar os dados importados usando jobs em segundo plano e uma fila com RabbitMQ.\nNotificar o frontend quando o processamento estiver completo.\nRecursos Adicionais Desejáveis:\nImplementar filtros para os campos da tabela, permitindo aos usuários refinar sua visualização.\nDeploy\nFaça um passo a passo do processo de execução do projeto, lembrando da obrigatoriedade do uso de Docker\n\n## Tecnologias Obrigatorias:\n\n- Typescript\n- Docker\n- MariaDB\n- React\n- RabbitMQ\n\n## Solução\n\n- Rodar script em Scripts/start.hs com o comando build `sh ./Scripts/start.sh build` ou alternativamente rodar `docker compose up -d --build`\n- Accessar localhost:3000\n- Backend: http://localhost:8000/docs (documentação interativa do FastAPI).\n\n### Fluxo de Uso\n- Tela de Pesquisa (frontend):\n-   Pesquise por um usuário do GitHub e visualize seus repositórios.\n-   Clique em “Exportar CSV” para baixar CSV.\n-   Na tela MyRepos, importar arquivo baixado\n\n- Backend:\n-  Recebe o CSV e a envia à fila RabbitMQ com um delay de 5 segundos para simular processamento.\n\n- Worker:\n-  Consome a fila, processa e grava dados no MariaDB.\n-  Notifica o Backend (via /api/notify).\n\nO Frontend exibe um toast (via shadcn) com a mensagem e o horário do processamento.\n\n\n\n![image](https://github.com/user-attachments/assets/7d390322-0cce-44dc-b7b7-d6088b3b89f2)\n![image](https://github.com/user-attachments/assets/b0678f69-1634-41f7-b815-3d2d9c487b49)\n![image](https://github.com/user-attachments/assets/702c032c-fedc-4669-8b32-8c5c6e33415a)\n![image](https://github.com/user-attachments/assets/01ab35d8-c61c-4dd9-b6a0-1cc4de56e9dd)\n![image](https://github.com/user-attachments/assets/12c4dd09-67a4-4b25-9bdb-c0891d339507)\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcharlie5dh%2Fgithub_repos_manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcharlie5dh%2Fgithub_repos_manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcharlie5dh%2Fgithub_repos_manager/lists"}