Skip to content

RoyMusthang/todo-api

Repository files navigation

Todo List

Documentação

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.

Rodando Aplicaçã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
  1. Clone o projeto
  git clone git@github.com:RoyMusthang/mamboo-todo.git
  1. Entre no diretório do projeto
  cd mamboo-todo
  1. Suba a orquestração de containers
  npm run compose:up
  1. A aplicação poderá ser acessada através de
  http://localhost:3001/todos
  1. Para encerrar a aplicação basta executar o comando
  npm run compose:down

Obs: para rodar a aplicação dessa forma você precisar ter node, git, npm/yarn e mongodb na sua maquina

Node
  1. Clone o projeto
    git clone git@github.com:RoyMusthang/mamboo-todo.git
  1. Entre no diretório do projeto
  cd mamboo-todo
  1. Instale as dependências
  npm install
  1. Rode a aplicação
  npm start
  1. A aplicação poderá ser acessada através de
  http://localhost:3001/todos

Stacks utilizadas

  • Node.js
  • TypeScript
  • Express
  • MongoDB
  • Mongoose
  • Docker

Arquitetura

Diagrama da arquitetura

A estrutura que optei por aplicar tem com base a ideia de isolar a aplicação em três partes:

api

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

app

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

db

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published