Giter Club home page Giter Club logo

mandacaru-api's Introduction

Mandacaru API

Sistema para suporte à avaliação do consumo alimentar e cálculo de receitas foi desenvolvido para ser um sistema que apoie pesquisadores da área de nutrição na obtenção de dados de consumo alimentar mais acurados, além de ser ferramenta para registrar e calcular as informações obtidas pela aplicação de inquéritos dietéticos na prática profissional do nutricionista.

Tecnologias

Documentação

Documentação da API

Executar a aplicação localmente

Clone o projeto

  git clone [email protected]:OSANES-Mandacaru/mandacaru-api.git

Entre para o diretório do projeto

  cd mandacaru-api
  • Use o arquivo .env.examples para configurar suas credenciais

Instale as dependências

  yarn install

Inicie o servidor

  yarn start:dev

Estrutura

  • @src = ./src
  • @auth = ./src/modules/auth

1 - @src

  • index.ts: ponto de entrada
  • server.ts: configuração do servidor
  • DefaultRoute.ts: rota default que redireciona para a documentação

1.1 - @src/docs

Neste diretório ficam os contratos, protocolos de cada entidade e a documentação do swagger


1.2 - @src/types

Diretório destinado a tipagem para uso do supertest e contrato para o request


1.3 - @src/errors

Neste diretório ficam os tratamentos de erros genéricos


1.4 - @src/infra

Neste diretório ficam as funções relacionadas as libs e ao banco

Exemplo:

  • UUID.ts - gerar UUID ou validar
  • typeormManagers.ts - instanciar manipuladores do typeorm
  • userManagers.ts - representação dos manipuladores para usuário

"Manipuladores" são funções do typeorm que permitem acessar e fazer manipulações no banco de dados


1.5 - @src/middlewares

Neste diretório ficam os middlewares que podem ser acessados por qualquer camada do projeto

Exemplo:

  • validateIdParams.ts - valida o uuid vindo do request params
  • beginInstances - inicializa as instâncias do services

1.6 - @src/modules

Neste diretório fica toda regra de negocio, entidades e suas dependências, e tudo divido em camadas.


2 - @auth

Esta é a camada de autorização, responsável pelas entidades de Address, Admin, Subject e User.

2.1 - @auth/controllers

Por conta da abstração do overnightjs, os controllers sobrescrevem as rotas, portanto, nesse diretório ficam as rotas e os controllers para suas entidades especificas.

Exemplos:

  • UserController.ts:

    • @Controller('user'):
      • Nível: class
      • Descrição: define a classe inteira como uma rota para o endpoint de /user
    • @Post(''):
      • Nível: method
      • Descrição: define o método da classe como um método de requisição HTTP do tipo POST
      • Endpoint: como o parâmetro passado foi uma string vazia, seu endpoint continua sendo apenas /user
    • @Middleware(createUser)
      • Nível: method
      • Descrição: executa os middlewares fornecidos, que nesse exemplo em especifico é o middleware para validar os dados de criação do usuário
  • SubjectController.ts:

    • @Controller('subject'):
      • Nível: class
      • Descrição: define a classe inteira como uma rota para o endpoint de /subject
    • @Get(':id'):
      • Nível: method
      • Descrição: define o método da classe como um método de requisição HTTP do tipo GET
      • Endpoint: /subject/:id e como o parâmetro é do tipo
      • Observação: como o parâmetro é do tipo ":(alguma coisa)" isso indica que é possível resgatar o valor do parâmetro através do request.params
    • @Middleware([validateIdParams, authUser...
      • Nível: method
      • Descrição: executa os middlewares fornecidos

2.2 - @auth/entities

Neste diretório ficam as implementações de cada entidade junto com suas especificações


2.3 - @auth/errors

Neste diretório ficam os tratamentos de erros específicos para cada entidade


2.4 - @auth/clients

Neste diretório ficam as consultas de api's externas

Exemplo:

  • ViaCep - API para validar CEP

2.5 - @auth/formatting

Neste diretório ficam as funções para formatar os dados antes de retornar ao usuário.


2.6 - @auth/middlewares

Neste diretório ficam os middlewares de validação de dados e entidades


2.7 - @auth/services

Neste diretório ficam services que são responsáveis pelas execução da regra de negocio


Autores

mandacaru-api's People

Contributors

iago-f-s-e avatar

Watchers

 avatar  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.