/ignite-nodejs-2023-desafio02-api-rest-nodejs

Desafio do módulo 2 do Ignite Nodejs da Rocketseat

Primary LanguageTypeScriptMIT LicenseMIT

Desafio 02 - Criando API RESTfull com Node.js

Este desafio faz parte do módulo 2 da trilha de Node.js do Ignite da Rocketseat.

Sobre a aplicação

Com esta aplicação é possível o usuário cadastrar uma refeição informando o seu título, descrição, data e hora e se faz parte da dieta. Além de cadastrar as refeições, é possível listar todas refeições, visualizar uma refeição específica, editar refeições, remover refeições e também visualizar as métricas do usuário como: total de refeições cadastradas, total de refeições fora e dentro da dieta e maior sequência de refeições dentro da dieta.

Requisitos funcionais (RF)

  • Deve ser possível criar um usuário
  • Deve ser possível registrar uma refeição feita
  • Deve ser possível editar uma refeição
  • 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

Regras de Negócio (RN)

  • Deve ser possível identificar o usuário entre as requisições
  • O usuário só pode visualizar, editar e apagar as refeições que ele criou

Rotas da aplicação

  • POST /users: Deve ser possível criar um novo usuário, enviando pela requisição o nome, username, email e senha.

  • POST /meals: Deve ser possível criar uma nova refeição, enviando pela requisição o nome, descrição, data e hora e se está dentro da dieta ou não.

  • GET /meals: Deve ser possível listar todas as refeições cadastradas pelo usuário.

  • GET /meals/:id: Deve retornar a refeição recebendo um id no parâmetro.

  • GET /meals/summary: Deve retornar todas as métricas do usuário, tais como: Total de refeições cadastradas pelo usuário, total de refeições dentro e fora da dieta e sequência de refeições dentro da dieta.

  • PUT /meals/:id: Deve ser possível editar uma refeição cadastrada. O usuário deve passar como parâmetro o id da refeição e no corpo as informações que serão atualizadas.

  • DELETE /meals/:id: Permite apagar refeições do banco de dados.

Como executar a aplicação

Para executar a aplicação siga os seguintes passos:

  • Clone e acesse o repositório:
git clone https://github.com/andersondev96/ignite-nodejs-2023-desafio02-api-rest-nodejs
cd ignite-nodejs-2023-desafio02-api-rest-nodejs
  • Instale as dependências do projeto:
npm install
  • Adicione as seguintes chaves no .env:
NODE_ENV=development
DATABASE_CLIENT=sqlite
DATABASE_URL="./db/app.db"
  • Execute as migrations:
npm run knex -- migrate:latest
  • Execute o projeto com o comando:
npm run dev
  • O servidor irá rodar na porta localhost:3333

Licença

Este projeto está sob a licença MIT.

Autor

Anderson Fernandes Ferreira

instagram email linkedin

Feito com 💚 por Anderson Fernandes 👋 Entre em contato!