Daily Diet app.
- Deve ser possível se cadastrar;
- Deve ser possível se autenticar;
- Deve ser possível obter o perfil de um usuário logado;
- Deve ser possível registrar uma refeição feita, com as seguintes informações; As refeições devem ser relacionadas a um usuário. - [x] Nome - [x] Descrição - [x] Data e Hora - [x] Está dentro ou não da dieta
- Deve ser possível editar uma refeição, podendo alterar todos os dados acima;
- Deve ser possível apagar uma refeição;
- Deve ser possível listar todas as refeições de um usuário;
- Deve ser possível visualizar uma única refeição;
- Deve ser possível recuperar as métricas de um usuário; - [x] Quantidade total de refeições registradas - [x] Quantidade total de refeições dentro da dieta - [x] Quantidade total de refeições fora da dieta - [/] Melhor sequência por dia de refeições dentro da dieta
- [/] O usuário só pode visualizar, editar e apagar as refeições o qual ele criou;
- O usuário não deve poder se cadastrar com um e-mail duplicado;
- A senha do usuário precisa estar criptografada;
- Os dados da aplicação precisam estar persistidos em um banco PostgreSQL;
- Todas listas de dados precisam estar paginadas com 20 itens por página;
- O usuário deve ser identificado por um JWT (JSON Web Token);
POST /users
Parâmetro | Tipo | Descrição |
---|---|---|
name |
Body - String |
Obrigatório. Nome do usuário. |
email |
Body - String |
Obrigatório. Email do usuário. |
password |
Body - String |
Obrigatório. Senha do usuário. Mínimo 6 caracteres. |
POST /session
Parâmetro | Tipo | Descrição |
---|---|---|
email |
Body - String |
Obrigatório. Email do usuário. |
password |
Body - String |
Obrigatório. Senha do usuário. |
PATCH /token/refresh
Parâmetro | Tipo | Descrição |
---|---|---|
refreshToken |
Cookie - String |
Obrigatório. Refresh token do usuário. |
GET /me
Parâmetro | Tipo | Descrição |
---|---|---|
accessToken |
Cookie - String |
Obrigatório. Access token do usuário. |
GET /snacks/get-all-user-snack/:userId
Parâmetro | Tipo | Descrição |
---|---|---|
accessToken |
Cookie - String |
Obrigatório. Access token do usuário. |
id |
Query - Number |
Obrigatório. Id do usuário. |
GET /snacks/get-user-metrics/:userId
Parâmetro | Tipo | Descrição |
---|---|---|
accessToken |
Cookie - String |
Obrigatório. Access token do usuário. |
id |
Query - Number |
Obrigatório. Id do usuário. |
GET /snacks/get-only-snack/:snackId
Parâmetro | Tipo | Descrição |
---|---|---|
accessToken |
Cookie - String |
Obrigatório. Access token do usuário. |
id |
Query - Number |
Obrigatório. Id do lanche. |
POST /snacks
Parâmetro | Tipo | Descrição |
---|---|---|
accessToken |
Cookie - String |
Obrigatório. Access token do usuário. |
name |
Body - String |
Obrigatório. Nome do lanche. |
description |
Body - String |
Obrigatório Descricão do lanche. |
insideDiet |
Body - Boolean |
Obrigatório Esta dentro da dieta?. |
put /snacks/edit/:snackId
Parâmetro | Tipo | Descrição |
---|---|---|
accessToken |
Cookie - String |
Obrigatório. Access token do usuário. |
name |
Body - String |
Nome do lanche. |
description |
Body - String |
Descricão do lanche. |
insideDiet |
Body - Boolean |
Esta dentro da dieta?. |
id |
Query - Number |
Obrigatório. Id do lanche. |
DELETE /snacks/delete/:snackId
Parâmetro | Tipo | Descrição |
---|---|---|
accessToken |
Cookie - String |
Obrigatório. Access token do usuário. |
id |
Query - Number |
Obrigatório. Id do lanche. |
Back-end: Node, Fastify, Vitest, zod, potergress, Prisma, bycript, supertest
-
Clone o projeto
git clone https://github.com/Guilherme-Santos08/daily-diet-api-solid.git
-
Entre no diretório do projeto
cd ignite-node/daily-diet-api-solid
-
Configuração do docker
docker compose up -d
-
Instale as dependências
npm install
-
Inicie o servidor
npm run start:dev
-
Rodar os testes unitários
npm run test # ou npm run test:watch
-
Rodar os testes e2e
npm run test:e2e #ou npm run test:e2e:watch
-
Rodar testes usando uma UI
npm run test:ui
npm run test:coverage
Crie um arquivo .env com as variaveis do .env.example