Este é um desafio para que possamos ver as suas habilidades como Backend Developer.
Nesse desafio você deverá desenvolver uma REST API que utilizará o histórico de casos de Covid, disponível no Kaggle. Caso não seja possível fazer o download, utilize o arquivo CSV neste link https://challenges.coode.sh/covid/data/covid-variants.csv.
O projeto a ser desenvolvido por você tem como objetivo exibir o número de casos por país, dia e variante.
[SPOILER] As instruções de entrega e apresentação do challenge estão no final deste Readme (=
- Trabalhar em um repositório em seu usuário ou utilizar o seu github pessoal (não esqueça de colocar no readme a referência a este challenge);
- O projeto back-end deverá ser desenvolvido com uma das tecnologias a seguir: Node.js | C# .NET Core | PHP Laravel | RubyOnRails | Go Lang | Python FastAPI | SpringBoot Kotlin | Rust;
- Criar um banco de dados grátis MongoDB usando Atlas: https://www.mongodb.com/cloud/atlas ou banco de dados grátis MySQL no Heroku: https://elements.heroku.com/addons/jawsdb ou banco de dados grátis Postgres no Heroku: https://elements.heroku.com/addons/heroku-postgresql; (Recomendável usar Drivers oficiais para integração com o DB)
Para a definição do modelo consulte os campos presentes no arquivo a ser importado; você pode ver a estrutura como o exemplo:
{
"location": "string",
"date": "date",
"variant": "string",
"num_sequences": "number",
"perc_sequences": "number",
"num_sequences_total": "number",
}
Nessa etapa você deverá construir uma API Restful com as melhores práticas de desenvolvimento. Para isso você deve executar os passos a seguir:
Obrigatório 1 - Você deverá desenvolver as seguintes rotas:
[GET]/
: Retornar um Status: 200 e uma Mensagem "Backend Challenge 2021 🏅 - Covid Daily Cases"[GET]/cases/:date/count
: Listar todos os registros da base de dados no dia selecionado, agrupados por país e separados por variante.[GET]/cases/:date/cumulative
: Listar todos os registros da base de dados, retornando a soma dos casos registrados de acordo com a data selecionada, agrupados por país e separados por variante.[GET]/dates
: Listar as datas disponíveis no dataset
Obrigatório 2 - Para alimentar o seu banco de dados você deve criar um script para armazenar os dados do arquivo CSV que o Kaggle disponibiliza.
Diferencial 1 - Configurar Docker no Projeto para facilitar o Deploy da equipe de DevOps;
Diferencial 2 - Escrever Unit Tests para os endpoints da API;
Diferencial 3 - Descrever a documentação da API utilizando o conceito de Open API 3.0;
Diferencial 4 - Usar a Kaggle API para baixar os arquivos do dataset. Lembrando que esta biblioteca roda com Python, então será necessário conferir se o ambiente pode executar a biblioteca;
Diferencial 5 - Salvar em cache o resultado dos endpoints, para agilizar a resposta em caso de buscas com parâmetros repetidos
Diferencial 6 - Utilizar aggregate para calcular os dados cumulativos
Diferencial 7 - Publique o projeto em alguma plataforma, como por exemplo a Heroku, Glitch ou outra de sua preferência.
- Deve conter o título do projeto
- Uma descrição sobre o projeto em frase
- Deve conter uma lista com linguagem, framework e/ou tecnologias usadas
- Como instalar e usar o projeto (instruções)
- Não esqueça o .gitignore
- Se está usando github pessoal, referencie que é um challenge by coodesh:
This is a challenge by Coodesh
Avisar sobre a finalização e enviar para correção.
- Confira se você respondeu o Scorecard da Vaga que chegou no seu email;
- Confira se você respondeu o Mapeamento Comportamental que chegou no seu email;
- Acesse: https://coodesh.com/challenges/review;
- Adicione o repositório com a sua solução;
- Grave um vídeo, utilizando o botão na tela de solicitar revisão da Coodesh, com no máximo 5 minutos, com a apresentação do seu projeto. Foque em pontos obrigatórios e diferenciais quando for apresentar.
- Adicione o link da apresentação do seu projeto no README.md.
- Verifique se o Readme está bom e faça o commit final em seu repositório;
- Confira a vaga desejada;
- Envie e aguarde as instruções para seguir no processo. Sucesso e boa sorte. =)
Use o nosso canal no slack: http://bit.ly/32CuOMy para tirar dúvidas sobre o processo ou envie um e-mail para contato@coodesh.com.