项目作者: rocketseat-education

项目描述 :
Desafio do segundo módulo do Bootcamp GoStack 🚀👨🏻‍🚀
高级语言:
项目地址: git://github.com/rocketseat-education/bootcamp-gostack-desafio-02.git
创建时间: 2019-06-20T13:38:39Z
项目社区:https://github.com/rocketseat-education/bootcamp-gostack-desafio-02

开源协议:MIT License

下载



Fastfeet


Desafio 2: FastFeet, o início


:warning: Etapa 1/4 do Desafio Final :warning:

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”!


GitHub language count


Made by Rocketseat


License


Stargazers


Sobre o desafio |
Entrega |
Licença

:rocket: 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:

  1. 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:

  1. const bcrypt = require("bcryptjs");
  2. module.exports = {
  3. up: QueryInterface => {
  4. return QueryInterface.bulkInsert(
  5. "users",
  6. [
  7. {
  8. name: "Distribuidora FastFeet",
  9. email: "admin@fastfeet.com",
  10. password_hash: bcrypt.hashSync("123456", 8),
  11. created_at: new Date(),
  12. updated_at: new Date()
  13. }
  14. ],
  15. {}
  16. );
  17. },
  18. down: () => {}
  19. };

Agora execute:

  1. 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.

:memo: Licença

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


Feito com ♥ by Rocketseat :wave: Entre na nossa comunidade!