Essa API 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. Ela foi construída em NodeJS usando o Express.
- Express
- Sucrase
- Nodemon
- ESLint
- Prettier
- EditorConfig
- Sequelize
- Autenticação JWT
- Redis
- Multer
- Nodemailer
Abaixo estão descritas as funcionalidades para administradores.
Na aplicação existe um usuário administrador no qual seu login é feito através de email e senha. Esse usuário é responsável por tarefas envolvendo o gerenciamento de destinatarios, encomendas e entregadores. Ao logar na aplicação, é gerado um token que deverá ser utilizado nas demais rotas que precisam de autenticação.
O administrador poderá gerenciar destinatários através do cadastro e atualização dos mesmos. Um destinatário é composto por nome do destinatário e campos de endereço: rua, número, complemento, estado, cidade e CEP. O destinatário não pode se autenticar na aplicação, portanto, não possui senha.
Permite que o administrador cadastre e gerencie entregadores na plataforma. Os campos pertencentes ao entregador são:
- id (id do entregador)
- name (nome do entregador);
- avatar_id (foto do entregador);
- email (email do entregador)
- created_at;
- updated_at;
Nessa funcionalidade é feito um cadastro de encomendas para o 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;
A 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.
A 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.
Abaixo estão descritas as funcionalidades que você deve adicionar em sua aplicação para os entregadores.
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**.
Além disso, é permitido listar as encomendas que já foram entregues por ele, com base em seu ID de cadastro;
O entregador pode alterar o status de retirada, através de uma data de retirada(start_date) e data de entrega(end_date) para as encomendas. O entregador só pode fazer 5 retiradas por dia. Além disso, para finalizar a entrega o entregador deve enviar uma imagem com a assinatura da pessoa que recebeu a encomenda.
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. Os campos que compoem o cadastro de um problema são:
- delivery_id (referência da encomenda);
- description (descrição do problema que o entregador teve);
- created_at;
- updated_at;