Desafio 2: FastFeet, o início
⚠️ Etapa 1/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!
“Não espere para plantar, apenas tenha paciência para colher”!
Sobre o desafio | Entrega | Licença
🚀 Sobre o desafio
A aplicação que iremos dar início ao desenvolvimento a partir de agora é um app para uma transportadora fictícia, o FastFeet.
Nesse primeiro desafio vamos criar algumas funcionalidades básicas que aprendemos ao longo das aulas até aqui. Esse projeto será desenvolvido aos poucos até o fim da sua jornada onde você terá uma aplicação completa envolvendo back-end, front-end e mobile, que será utilizada para a certificação do bootcamp, então, bora pro código!
Um pouco sobre as ferramentas
Você deverá criar a aplicação do zero utilizando o Express, além de precisar configurar as seguintes ferramentas:
- Sucrase + Nodemon;
- ESLint + Prettier + EditorConfig;
- Sequelize (Utilize PostgreSQL ou MySQL);
Funcionalidades
Abaixo estão descritas as funcionalidades que você deve adicionar em sua aplicação.
1. Autenticação
Permita que um usuário se autentique em sua aplicação utilizando e-mail e uma senha.
Crie um usuário administrador utilizando a funcionalidade de seeds do sequelize, essa funcionalidade serve para criarmos registros na base de dados de forma automatizada.
Para criar um seed utilize o comando:
yarn sequelize seed:generate --name admin-user
No arquivo gerado na pasta src/database/seeds
adicione o código referente à criação de um usuário administrador:
const bcrypt = require("bcryptjs");
module.exports = {
up: QueryInterface => {
return QueryInterface.bulkInsert(
"users",
[
{
name: "Distribuidora FastFeet",
email: "[email protected]",
password_hash: bcrypt.hashSync("123456", 8),
created_at: new Date(),
updated_at: new Date()
}
],
{}
);
},
down: () => {}
};
Agora execute:
yarn sequelize db:seed:all
Agora você tem um usuário na sua base de dados, utilize esse usuário para todos os logins que você fizer.
- A autenticação deve ser feita utilizando JWT.
- Realize a validação dos dados de entrada;
2. Gestão de destinatários
Você agora precisa permitir que destinatários sejam mantidos (cadastrados/atualizados) na aplicação, e esses devem ter o nome do destinatário e campos de endereço: rua, número, complemento, estado, cidade e CEP.
Utilize uma nova tabela no banco de dados chamada recipients
para guardar informações do destinatário.
O cadastro de destinatários só pode ser feito por administradores autenticados na aplicação.
O destinatário não pode se autenticar no sistema, ou seja, não possui senha.
📅 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