An open API service indexing awesome lists of open source software.

https://github.com/orodrigogo/backend-gympoint

Segundo Desafio do primeiro módulo do Bootcamp GoStack.
https://github.com/orodrigogo/backend-gympoint

Last synced: 8 months ago
JSON representation

Segundo Desafio do primeiro módulo do Bootcamp GoStack.

Awesome Lists containing this project

README

          


Desafio 2: Projeto Gympoint

“Desafio realizado no treinamento imersivo GoStack - Rodrigo Gonçalves Santana”!

## :rocket: Requisitos do desafio

A aplicação que iremos dar início ao desenvolvimento a partir de agora é um app gerenciador de academia, o **Gympoint**.

### Um pouco sobre as ferramentas

Você deverá criar a aplicação do zero utilizando o [Express](https://expressjs.com/), 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](https://sequelize.org/master/manual/migrations.html#creating-first-seed), essa funcionalidade serve para criarmos registros na base de dados de forma automatizada.

Para criar um seed utilize o comando:

```js
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:

```js
const bcrypt = require("bcryptjs");

module.exports = {
up: QueryInterface => {
return QueryInterface.bulkInsert(
"users",
[
{
name: "Administrador",
email: "admin@gympoint.com",
password_hash: bcrypt.hashSync("123456", 8),
created_at: new Date(),
updated_at: new Date()
}
],
{}
);
},

down: () => {}
};
```

Executar:

```js
yarn sequelize db:seed:all
```

Agora você tem um usuário na sua base de dados, utilize esse usuário para todos logins daqui pra frente.

- A autenticação deve ser feita utilizando JWT.
- Realize a validação dos dados de entrada;

#### 2. Cadastro de alunos

Permita que alunos sejam mantidos (cadastrados/atualizados) na aplicação utilizando nome, email, idade, peso e altura.

Utilize uma nova tabela no banco de dados chamada `students`.

O cadastro de alunos só pode ser feito por usuários autenticados na aplicação.