{"id":19655726,"url":"https://github.com/ilsonlasmar/inovamind","last_synced_at":"2025-09-12T18:33:16.247Z","repository":{"id":143811496,"uuid":"144932954","full_name":"ilsonlasmar/inovamind","owner":"ilsonlasmar","description":"Desafio Inovamind - Crawler em Ruby on Rails com Sidekiq + Redis","archived":false,"fork":false,"pushed_at":"2018-08-16T13:09:10.000Z","size":116,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-10T00:35:49.342Z","etag":null,"topics":["crawler","rails5","sidekiq"],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/ilsonlasmar.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":"2018-08-16T03:40:00.000Z","updated_at":"2022-02-28T01:04:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"2efcd61d-365d-4445-8e3b-74f2a8b9cafc","html_url":"https://github.com/ilsonlasmar/inovamind","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilsonlasmar%2Finovamind","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilsonlasmar%2Finovamind/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilsonlasmar%2Finovamind/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilsonlasmar%2Finovamind/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ilsonlasmar","download_url":"https://codeload.github.com/ilsonlasmar/inovamind/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240964338,"owners_count":19885730,"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":["crawler","rails5","sidekiq"],"created_at":"2024-11-11T15:23:28.694Z","updated_at":"2025-02-27T02:18:10.510Z","avatar_url":"https://github.com/ilsonlasmar.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Inovamind\nProjeto exemplo de um Web crawler que capta informações do site http://quotes.toscrape.com/\n\nA aplicação Inovamind foi elaborada pensando no trabalho massivo do crawler em extrair informações de um determinado website. Pensando nisso foi utilizado o Sidekiq + Redis para execução do crawler em background e assim salvando as informações no MongoDB. Em toda nova consulta é gerado um Job para o Sidekiq executar em background a tarefa.\n\nAo salvar as informações extraidas no website tive a preocupação de checar e atualizar os registros já existentes, assim não criando registros duplicados na base de dados. Abordando ainda desempenho, foi utilizado serialização de objetos através da Gem Fast JSON API da Netflix.\nMais sobre performance da Gem Fast Json API: https://github.com/Netflix/fast_jsonapi/blob/master/performance_methodology.md\n\nA API da aplicação foi elaborada para ser versionada caso aja a necessidade, com a utilização das Constraints. É passado a versão via cabeçalho e a aplicação redireciona para o consumo versionado solicitado.\n\nA Autenticação é via JWT, onde é gerado um token e é feito a verificação sempre que necessário de áreas que precisam de autenticação para acesso. \n\nNa View foi utilizado React com o auxilio do Webpacker do Rails, foi escolhido React.js pela facilidade de manipulação da DOM e elaboração de requisições via Axios.\n\n\n\n## Dependencies\n* Rails 5.2\n* Webpacker - React\n* Sidekiq\n* Redis\n* Fast Json Api / Netflix\n* Json Web Token - JWT\n* HTTParty\n* MongoDB\n\n## Requirements\n**O Projeto é todo executado via Docker.**\n\n- Docker\n- Docker Compose\n\n## Installing and Setting\nÉ necessário o download das imagens utilizadas no projeto Inovamind e configuração inicial do mesmo.\n\n### 1° Step\nPara clonar a aplicação, execute:\n\n```git\ngit clone https://github.com/ilsonlasmar/inovamind.git\n```\n\n* `cd inovamind/`\n* `docker-compose build`\n* `docker-compose run --rm web bash -c \"bundle exec rails db:create \u0026\u0026 rails db:seed\"`\n* `docker-compose run --rm web bash -c \"rm -rf node_modules/ \u0026\u0026 yarn install\"`\n\n### 2° Step - Let's Go!\n#### Linux\n* `sudo chown -R $USER:$USER .`\n* `docker-compose up --build`\n* `browser: http://localhost:3000`\n#### Others\n* `docker-compose up --build`\n* `browser: http://localhost:3000`\n\n\n\n\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filsonlasmar%2Finovamind","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Filsonlasmar%2Finovamind","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filsonlasmar%2Finovamind/lists"}