Git Product home page Git Product logo

daily-diet-api-solid's Introduction

App

Daily Diet app.

RFs (Requisitos funcionais)

  • 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;

RNs (Regras de negócio)

  • O usuário não deve poder se cadastrar com um e-mail duplicado;

RNFs (Requisitos não-funcionais)

  • 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);

Documentação da API

Registra o usuário

  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.

Autentica o usuário

  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.

Realiza refresh do access token

  PATCH /token/refresh
Parâmetro Tipo Descrição
refreshToken Cookie - String Obrigatório. Refresh token do usuário.

Todas as rotas abaixo precisam que o usuário autentique

Retorna o perfil do usuário

  GET /me
Parâmetro Tipo Descrição
accessToken Cookie - String Obrigatório. Access token do usuário.

Retorna todos os lanches 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.

Retorna todas metricas 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.

Retorna um lanche específico

  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.

Cria um novo 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?.

Editar informação do lance

  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.

Deletar um Lanche específico

  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.

Stack utilizada

Back-end: Node, Fastify, Vitest, zod, potergress, Prisma, bycript, supertest

Rodando localmente

  • 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

daily-diet-api-solid's People

Contributors

guilherme-santos08 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.