{"id":15026228,"url":"https://github.com/sabrina-poderis/reddit-api-app","last_synced_at":"2026-02-03T18:03:46.675Z","repository":{"id":155045620,"uuid":"474688679","full_name":"Sabrina-Poderis/Reddit-API-App","owner":"Sabrina-Poderis","description":"O desafio consiste em criar um programa que consulte a api do reddit uma vez por dia, salve as postagens hot do subredit artificial e criar dois endpoints para consulta desses dados","archived":false,"fork":false,"pushed_at":"2022-03-27T22:43:31.000Z","size":89,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-13T02:34:02.230Z","etag":null,"topics":["laravel8x","php73"],"latest_commit_sha":null,"homepage":"","language":"PHP","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/Sabrina-Poderis.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":"2022-03-27T16:06:57.000Z","updated_at":"2022-03-28T15:45:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"80e7c55f-2b02-4956-8f70-da24acf2afa7","html_url":"https://github.com/Sabrina-Poderis/Reddit-API-App","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Sabrina-Poderis/Reddit-API-App","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sabrina-Poderis%2FReddit-API-App","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sabrina-Poderis%2FReddit-API-App/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sabrina-Poderis%2FReddit-API-App/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sabrina-Poderis%2FReddit-API-App/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sabrina-Poderis","download_url":"https://codeload.github.com/Sabrina-Poderis/Reddit-API-App/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sabrina-Poderis%2FReddit-API-App/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263287861,"owners_count":23443085,"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":["laravel8x","php73"],"created_at":"2024-09-24T20:04:07.514Z","updated_at":"2026-02-03T18:03:46.632Z","avatar_url":"https://github.com/Sabrina-Poderis.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Desafio Backend\n\n![PHP Version](https://img.shields.io/badge/7.3-100000?style=for-the-badge\u0026logo=PHP\u0026logoColor=white\u0026labelColor=8780E4\u0026color=FFFFFF)\n![Laravel Version](https://img.shields.io/badge/8.75-100000?style=for-the-badge\u0026logo=Laravel\u0026logoColor=white\u0026labelColor=CA4641\u0026color=FFFFFF)\n\nO desafio consiste em criar um programa que consulte a api do [reddit](https://www.reddit.com/dev/api/) uma vez por dia (deve ser uma tarefa agendada para rodar em um horário específico que você definir).\n\nA sua tarefa diária deve salvar num banco de dados SQL as postagens que estejam HOT do subredit [artificial](https://api.reddit.com/r/artificial/hot). Você deve salvar título da postagem, nome do autor, timestamp da criação, número de \"ups\" e número de comentários, e criar dois endpoints para consulta desses dados (endpoints REST ou usando graphql).\n\nO primeiro endpoint deve receber como parâmetro uma data inicial, uma data final e uma ordem (as ordens possíveis são número de \"ups\" e número de comentários) e deve retornar as postagens criadas dentro desse range seguindo a ordem estipulada (em ordem decrescente).\n\nO segundo endpoint deve receber como parâmetro uma ordem (as ordens possíveis são número de \"ups\" e número de comentários) e deve retornar uma lista de autores\nseguindo a ordem estipulada (em ordem decrescente)\n\nVocê pode utilizar qualquer linguagem para resolver o desafio, mas preferimos que seja em PHP (é a linguagem que mais utilizamos aqui). Além disso, não esqueça de incluir instruções sobre como executar o seu projeto.\n\nO que vamos avaliar:\n- Se atende ao que foi pedido;\n- Arquitetura bem definida;\n- Legibilidade e organização;\n- Falhas de segurança;\n- Tratamento de erros;\n- Quantidade de bugs.\n\nPontos extras:\n- Testes unitários;\n- Uso de container;\n- Documentação;\n- Utilizar framework CakePHP\n\n-----------------------------------\n\n## Instruções para desenvolvimento\n- Instalação do [Xampp/PHP](https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/7.3.33/)\n- Instalação do [Composer](https://getcomposer.org/download/) para utilização do laravel\n\n### Banco de dados\n- Inicializar o MySQL via xampp\n- Criar um novo banco de dados chamado `reddit-api-app`\n- Iniciar o terminal\n- Entrar na pasta do projeto `cd reddit-api-app`\n- Criar as tabelas necessárias `php artisan migrate`\n\n### Inicilização do servidor via terminal (Windows)\n- Iniciar o terminal\n- Entrar na pasta do htdocs `cd C:\\xampp\\htdocs`\n- Clonar o projeto `git clone https://github.com/Sabrina-Poderis/Reddit-API-App.git`\n- Entrar na pasta do projeto `cd reddit-api-app`\n- Instalar o composer `composer install`\n- Criar o .env `cp .env.example .env`\n- Gerar a chave do servidor artisan `php artisan key:generate`\n- Inicializar o servidor `php artisan serve`\n- Inicializar a fila que executará a consulta da API `php artisan schedule:work`\n\n## Principais arquivos do projeto\n- [Rotas e validação de parâmetros GET](routes/web.php)\n- [Model das postagens que estejam HOT do subredit](app/Models/HotPost.php)\n- [Repositório das postagens](app/Repositories/HotPostRepository.php)\n- [Controller dos endpoins](app/Http/Controllers/HotPostController.php)\n- [Definição do agendamento da tarefa de consulta a API](app/Console/Kernel.php)\n- [Seeder que consulta a API e alimenta o banco](database/seeders/HotPostsTableSeeder.php)\n\n## Endpoints\n\n### Created posts\n`http://127.0.0.1:8000/created-posts/{initial_date}/{final_date}/{order}`\n\u003e Retorna as postagens criadas dentro desse range seguindo a ordem estipulada (em ordem decrescente)\n\nParâmetros de entrada:\n- initial_date: datetime string `yyyy-mm-dd`\n- final_date: datetime string `yyyy-mm-dd`\n- order: `num_comments` ou `ups` \n\nExemplo de saída:\n\n```\n[\n    {\"id\"             :16,\n     \"title\"          : \"my meme generating AI just came up with this (not technically AI)\",\n     \"author\"         : \"snoggel\",\n     \"ups\"            : 173,\n     \"num_comments\"   : 8,\n     \"post_created_at\": \"2022-03-25 06:53:29\",\n     \"created_at\"     : \"2022-03-27T19:16:02.000000Z\",\n     \"updated_at\"     : \"2022-03-27T19:16:02.000000Z\"\n    },\n    \n    {\"id\"             :3,\n     \"title\"          : \"\\ud83d\\udc49 Impressed With AlphaFold? Checkout This Protein Structure Prediction Model (FastFold) That Reduces AlphaFold\\u2019s Training Time From 11 Days To 67 Hours\",\n     \"author\"         : \"No_Coffee_4638\",\n     \"ups\"            : 38,\n     \"num_comments\"   : 2,\n     \"post_created_at\": \"2022-03-27 04:29:04\",\n     \"created_at\"     : \"2022-03-27T19:16:02.000000Z\",\n     \"updated_at\"     : \"2022-03-27T19:16:02.000000Z\"\n    },\n]\n```\n\ncURL:\n```\n    curl http://127.0.0.1:8000/created-posts/2022-03-01/2022-03-28/ups\n    curl http://127.0.0.1:8000/created-posts/2022-03-23/2022-03-25/num_comments\n    curl http://127.0.0.1:8000/created-posts/2022-03-23/2022-03-24/num_comments\n    curl http://127.0.0.1:8000/created-posts/2022-03-28/2022-03-28/ups\n```\n\n### Authors\n`http://127.0.0.1:8000/authors/{order}`\n\u003e Retorna uma lista de autores seguindo a ordem estipulada (em ordem decrescente)\n\nParâmetros de entrada:\n- order: `num_comments` ou `ups` \n\nExemplo de saída:\n```\n[\n    {\"author\":\"snoggel\"},\n    {\"author\":\"CyberByte\"},\n    {\"author\":\"bigshinna\"},\n    {\"author\":\"No_Coffee_4638\"}\n]\n```\n\ncURL:\n```\n    curl http://127.0.0.1:8000/authors/ups\n    curl http://127.0.0.1:8000/authors/num_comments\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsabrina-poderis%2Freddit-api-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsabrina-poderis%2Freddit-api-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsabrina-poderis%2Freddit-api-app/lists"}