A documentação de operação da API foi feita utilizando Swagger, e pode ser consultada de forma interativa através da primeira rota da api: http://localhost:3001/, enquanto os demais endpoint são contidos no : http://localhost:3001/todos/
Além de explicar e exemplificar a utilização da API, as páginas ainda permitem testar os endpoints diretamente pela interface gráfica da documentação.
A execução da aplicação com Docker versão 20.10.21 ou Node.
Obs: você precisa ter o docker, npm/yarn e git na sua máquina para conseguir proseguir
Docker
- Clone o projeto
git clone git@github.com:RoyMusthang/mamboo-todo.git- Entre no diretório do projeto
cd mamboo-todo- Suba a orquestração de containers
npm run compose:up- A aplicação poderá ser acessada através de
http://localhost:3001/todos- Para encerrar a aplicação basta executar o comando
npm run compose:downObs: para rodar a aplicação dessa forma você precisar ter node, git, npm/yarn e mongodb na sua maquina
Node
- Clone o projeto
git clone git@github.com:RoyMusthang/mamboo-todo.git- Entre no diretório do projeto
cd mamboo-todo- Instale as dependências
npm install- Rode a aplicação
npm start- A aplicação poderá ser acessada através de
http://localhost:3001/todos- Node.js
- TypeScript
- Express
- MongoDB
- Mongoose
- Docker
A estrutura que optei por aplicar tem com base a ideia de isolar a aplicação em três partes:
tem como objetivo isolar a ponta de conexão da aplicação, no caso foi utilizado express como framework http, mas posso substituir por outro como koajs ou até mesmo módulo http interno do nodejs, também deixa aberto para usar um ejs para construir uma aplicação monolítica ou um grpc para migrar para um micro serviço
tem como objetivo isolar a principal parte da aplicação para que ela não seja dependente de framework, construída com orientação a objeto, está feita com uma arquitetura de camadas sendo elas:
controllers: A camada de entrada que é usada para receber os dados providos do express, esta camada é responsável pela validação dos dados do usuário, tem como auxiliar a validators useCases:A camada de entrada que é usada para receber os dados providos do controller, esta camada é responsável pela aplicação das regras de negócio e tem como auxiliar a errors
Models:A camada de entrada que é usada para receber os dados providos do useCase, esta camada é responsável comunicação com o banco de dados
Factories:Usado para instanciar todo a parte de oop e exportar como elemento simplificado para ser usado pelo express já que o framework não é muito bom lidando com oop
tem como objetivo isolar a tipo de banco da aplicação, no caso foi utilizado mongoDB, mas pode ser trocado por qualquer sql, graphql, grpc ou até mesmo outra api
