All Projects → rocketseat-education → Bootcamp Gostack Desafio 03

rocketseat-education / Bootcamp Gostack Desafio 03

Licence: mit
Desafio do terceiro módulo do Bootcamp GoStack 🚀👨🏻‍🚀

Projects that are alternatives of or similar to Bootcamp Gostack Desafio 03

Mlkatas
A series of self-correcting challenges for practicing your Machine Learning and Deep Learning skills
Stars: ✭ 58 (-58.57%)
Mutual labels:  challenge
Front End Challenge
Challenge for those seeking a role as a front-end developer @amarofashion
Stars: ✭ 88 (-37.14%)
Mutual labels:  challenge
Apply Everywhere
Increase your chances of getting an offer by applying everywhere!
Stars: ✭ 126 (-10%)
Mutual labels:  challenge
Owasp Workshop Android Pentest
Learning Penetration Testing of Android Applications
Stars: ✭ 60 (-57.14%)
Mutual labels:  challenge
Didi challenge ros
Roslaunch to visualize a rosbag file from Udacity (DiDi Challenge)
Stars: ✭ 69 (-50.71%)
Mutual labels:  challenge
Chingu Fcc Speedrun Challenge
Challenge for the Chingu Cohorts
Stars: ✭ 94 (-32.86%)
Mutual labels:  challenge
Flutter ui challenge todo
A showcase flutter todo application.
Stars: ✭ 57 (-59.29%)
Mutual labels:  challenge
Xview Yolov3
xView 2018 Object Detection Challenge: YOLOv3 Training and Inference.
Stars: ✭ 133 (-5%)
Mutual labels:  challenge
Bughunt
A weekly challenge where we share some code and you find a bug in it.
Stars: ✭ 68 (-51.43%)
Mutual labels:  challenge
Jeopardy Dockerfiles
🇨🇳 🏁 🚩 Dockerfiles of CTF Challenges running on SniperOJ
Stars: ✭ 114 (-18.57%)
Mutual labels:  challenge
Didn
Pytorch Implementation of "Deep Iterative Down-Up CNN for Image Denoising".
Stars: ✭ 61 (-56.43%)
Mutual labels:  challenge
Javascript30
Participating in 30 Day Vanilla JS Challenges by @wesbos
Stars: ✭ 67 (-52.14%)
Mutual labels:  challenge
Dailycodingproblem
Stars: ✭ 113 (-19.29%)
Mutual labels:  challenge
Bootcamp Launchbase Desafios 02
Desafios do segundo módulo do Bootcamp Launchbase 🚀👨🏻‍🚀
Stars: ✭ 58 (-58.57%)
Mutual labels:  challenge
Google Foobar Help
Guidance on how to tackle some of the foobar challenges.
Stars: ✭ 127 (-9.29%)
Mutual labels:  challenge
Pathwar
☠️ The Pathwar Project ☠️
Stars: ✭ 58 (-58.57%)
Mutual labels:  challenge
60 days rl challenge
60_Days_RL_Challenge中文版
Stars: ✭ 92 (-34.29%)
Mutual labels:  challenge
27daysofcode
A repo with small projects
Stars: ✭ 140 (+0%)
Mutual labels:  challenge
Datascicomp
A collection of popular Data Science Challenges/Competitions || Countdown timers to keep track of the entry deadlines.
Stars: ✭ 1,636 (+1068.57%)
Mutual labels:  challenge
Cinc Challenge2017
ECG classification from short single lead segments (Computing in Cardiology Challenge 2017 entry)
Stars: ✭ 112 (-20%)
Mutual labels:  challenge

Fastfeet

Desafio 3: FastFeet, continuando a aplicação

⚠️ Etapa 2/4 do Desafio Final ⚠️

Esse desafio faz parte do Desafio Final, que é uma aplicação completa (Back-end, Front-end e Mobile) que é avaliada para emissão do Certificado do Bootcamp GoStack, por isso é fundamental que ele seja feito com muito empenho!

“Faça seu melhor, mas sempre com prazo de entrega”!

GitHub language count Made by Rocketseat License Stargazers

Sobre o desafio   |    Entrega   |    Licença

🚀 Sobre o desafio

Durante esse desafio vamos aprimorar a aplicação FastFeet que demos início no desafio anterior implementando funcionalidades que aprendemos durante as aulas até agora.

Funcionalidades do administrador

Abaixo estão descritas as funcionalidades que você deve adicionar em sua aplicação para administradores.

1. Gestão de entregadores

Permita que o administrador possa cadastrar entregadores para a plataforma, o entregador deve possuir os seguintes campos:

  • id (id do entregador)
  • name (nome do entregador);
  • avatar_id (foto do entregador);
  • email (email do entregador)
  • created_at;
  • updated_at;

Crie rotas para listagem/cadastro/atualização/remoção de entregadores;

Obs.: Essa funcionalidade é para administradores autenticados na aplicação.

2. Gestão de encomendas

Apesar do entregador estar cadastrado, ele não é independente dentro da plataforma, e você deve cadastrar encomendas para os entregadores.

Nessa funcionalidade criaremos um cadastro de encomendas por entregador, a encomenda possui os campos:

  • id (id da entrega)
  • recipient_id (referência ao destinatário);
  • deliveryman_id (referência ao entregador);
  • signature_id (referência à uma assinatura do destinatário, que será uma imagem);
  • product (nome do produto a ser entregue);
  • canceled_at (data de cancelamento, se cancelada);
  • start_date (data de retirada do produto);
  • end_date (data final da entrega);
  • created_at;
  • updated_at;

data de início deve ser cadastrada assim que for feita a retirada do produto pelo entregador, e as retiradas só podem ser feitas entre as 08:00 e 18:00h.

data de término da entrega deve ser cadastrada quando o entregador finalizar a entrega:

Os campos recipient_id e deliveryman_id devem ser cadastrados no momento que for cadastrada a encomenda.

Quando a encomenda é cadastrada para um entregador, o entregador recebe um e-mail com detalhes da encomenda, com nome do produto e uma mensagem informando-o que o produto já está disponível para a retirada.

Crie rotas para listagem/cadastro/atualização/remoção de encomendas;

Obs.: Essa funcionalidade é para administradores autenticados na aplicação.

Funcionalidades do entregador

Abaixo estão descritas as funcionalidades que você deve adicionar em sua aplicação para os entregadores.

1. Visualizar encomendas

Para que o entregador possa visualizar suas encomendas, ele deverá informar apenas seu ID de cadastro (ID do entregador no banco de dados). Essa funcionalidade deve retornar as encomendas atribuidas a ele, que não estejam entregues ou canceladas;

Permita também que ele liste apenas as encomendas que já foram entregues por ele, com base em seu ID de cadastro;

Exemplo de requisição: GET https://fastfeet.com/deliveryman/1/deliveries

2. Alterar status de encomendas

Você deve permitir que o entregador tenha rotas para incluir uma data de retirada (start_date) e data de entrega (end_date) para as encomendas. O entregador só pode fazer 5 retiradas por dia.

Obs.: Para a funcionalidade de finalizar a entrega, você deverá permitir o envio de uma imagem que irá preencher o campo signature_id da tabela de encomendas.

3. Cadastrar problemas nas entregas

O entregador nem sempre conseguirá entregar as encomendas com sucesso, algumas vezes o destinatário pode estar ausente, ou o próprio entregador poderá ter algum problema com seu veículo na hora de entregar.

A tabela delivery_problems deve conter os seguintes campos:

  • delivery_id (referência da encomenda);
  • description (descrição do problema que o entregador teve);
  • created_at;
  • updated_at;

Crie uma rota para a distribuidora listar todas as entregas com algum problema;

Crie uma rota para listar todos os problemas de uma encomenda baseado no ID da encomenda.

Exemplo de requisição: GET https://fastfeet.com/delivery/2/problems

Crie uma rota para o entregador cadastrar problemas na entrega apenas informando seu ID de cadastro (ID da encomenda no banco de dados);

Exemplo de requisição: POST https://fastfeet.com/delivery/3/problems

Crie uma rota para a distribuidora cancelar uma entrega baseado no ID do problema. Esse cancelamento pode acontecer devido a gravidade do problema da entrega, por exemplo, em caso de perda da encomenda.

Exemplo de requisição: DELETE https://fastfeet.com/problem/1/cancel-delivery

Quando uma encomenda for cancelada, o entregador deve receber um e-mail informando-o sobre o cancelamento.

📅 Entrega

Esse desafio não precisa ser entregue e não receberá correção. Além disso, o código fonte não está disponível por fazer parte do desafio final, que será corrigido para certificação do bootcamp. Após concluir o desafio, adicionar esse código ao seu Github é uma boa forma de demonstrar seus conhecimentos para oportunidades futuras.

📝 Licença

Esse projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.


Feito com ♥ by Rocketseat 👋 Entre na nossa comunidade!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].