Skip to content

API feita em Typescript utilizando Node + Fastify, com objetivo de permitir o usuário criar e controlar sua dieta de forma personalizada.

Notifications You must be signed in to change notification settings

kunzeleric/ignite__api-daily-diet

Repository files navigation

Daily Diet API Challenge

Segundo desafio do curso de Node.js da Rocketseat.

Consiste na implantação de uma API que permite o usuário a criar conta, editar seus dados e fazer login para adicionar e controlar suas refeições diárias.

Além disso, o usuário pode também obter métricas de total de calorias, melhor sequência de pratos na dieta, entre outros indicadores.

Tecnologias

  • Node w/ Typescript
  • Fastify
  • Supertest
  • Vitest
  • Knex & SQLite
  • Zod

Regras da aplicação

  • Deve ser possível criar um usuário
  • Deve ser possível identificar o usuário entre as requisições
  • Deve ser possível registrar uma refeição feita, com as seguintes informações:
    • Nome
    • Descrição
    • Data e Hora
    • Está dentro ou não da dieta
    • Quantidade de calorias
    • Tipo de refeição (café da manhã, lanche, almoço, janta)
  • 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
    • Quantidade total de refeições registradas
    • Quantidade total de refeições dentro da dieta
    • Quantidade total de refeições fora da dieta
    • Melhor sequência de refeições dentro da dieta
    • Total de calorias de todas refeições
    • Total de calorias de pratos na dieta
    • Total de calorias de pratos fora da dieta
  • O usuário só pode visualizar, editar e apagar as refeições o qual ele criou

Next Level

  • Documentação em swagger
  • Deve ser possível deletar um usuário
  • Deve ser possível editar um usuário
  • Permitir que os usuários registrem a quantidade de calorias para cada refeição
  • Permitir que os usuários categorizem suas refeições em grupos como café da manhã, almoço, jantar, lanches, etc
  • Implementação de testes de integração
    • Testes das Rotas de Usuários:
      • Deve ser possível criar um usuário
      • Deve ser possível logar um usuário
      • Deve ser possível editar um usuário
      • Não deve ser possível criar um usuário com email duplicado
    • Testes das Rotas de Refeições
      • Deve ser possível cadastrar uma refeição
      • Deve ser possível editar uma refeição
      • Deve ser possível buscar uma refeição por um ID

Rodando localmente

Clone o projeto

  git clone https://link-para-o-projeto

Entre no diretório do projeto

  cd my-project

Instale as dependências

  npm install

Inicie o servidor

  npm run dev

Documentação da API

Documentação feita no Swagger. Para acessar, rode o projeto localmente com npm run dev e acesse as rotas para testar.

Rodando os testes

Para rodar os testes, rode o seguinte comando

  npm run test

Aprendizados

  • Documentar rotas com Swagger integrado ao Fastify
  • Testes de integração com o Vitest e Supertest
  • Aprofundamento no conhecimento do query builder Knex
  • Estruturação de código e tipagem com TypeScript
  • Melhor entendimento de API's e como tratar e verificar dados e devolver respostas ao cliente

Melhorias Futuras

  • Testes unitários
  • Reestruturação para implementação de princípio SOLID
  • Utilização de Token para identificação do usuário.

About

API feita em Typescript utilizando Node + Fastify, com objetivo de permitir o usuário criar e controlar sua dieta de forma personalizada.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published