Gateway feito em GraphQL para abstração da camada Rest para o front-end.
Instalando as dependências
yarn install
Executando o APP
yarn start
- Typescript como linguagem base.
- GraphQL utilizado para implementação do GraphQL.
- Apollo Server uilizado para criação do servidor GraphQL.
- Axios utilizado para as chamadas HTTP da API REST.
Foi utilizado clean-architecture para desacoplar as regras de negócios e chamadas para a API Rest das libraries utilizadas na camada de GraphQL, facilitando mudanças no futuro.
Aqui onde concentramos nossa camada de negócios e deve ser livre de dependências externas.
Possui a representação das nossas entidades de negócios.
Interface que abstrai a manipulação (Busca, Inclusão, Alteração e Remoção) de dados, seja em banco, outro serviço ou arquivo. Essa camada deve ser implementada na camada de gateway mantendo a inversão de dependência.
É nessa camada onde implementamos as comunicações externas com aplicações Rest.
Interface de abstração do protocolo HTTP para que não fiquemos presos a implementações específicas como Axios ou Fetch.
Implementação da interface IHttpClient utilizando o Axios.
Implementação da Interface Repository da camada domain abstraindo a utilização de Rest para a camada de GraphQL.
Fábrica de componentes das camadas gateway ou domain. Deve retornar sempre Interfaces para componentes do gateway, facilitando a mudança de qualquer componente dessa camada.
Essa camada é onde implementamos tudo relacionado a GraphQL.
Camada onde implementamos nossas Queries Resolvers ou Mutation Resolvers utilizando diretamente os RestRepository.
Camada onde definimos nossos types de input ou output.