Skip to content

budproj/task-management-microservice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kanban API

Esta aplicação foi desenvolvida como teste técnico do processo seletivo para a vaga de desenvolvedor backend na empresa Mamboo.

Trata-se de uma API de tarefas de uma aplicação de quadro Kanban com 7 endpoints onde é possível realizar operações CRUD em um banco de dados MongoDB.

Abaixo você encontra instruções sobre como consultar a documentação da API, como rodar a aplicação, testes da aplicação, tecnologias utilizadas e um diagrama da arquitetura implementada.

Documentação da API

A documentação de operação da API foi feita utilizando Swagger e seguindo a OAS3 (OpenAPI Specification 3.0), e pode ser consultada de forma interativa através dos endpoints /docs/pt e /docs/en em português e inglês respectivamente.

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 localmente

A execução da aplicação de forma local pode ser realizada de duas formas: Docker ou Node.

Docker

Para rodar a API localmente utilizando Docker, certifique-se de ter o Docker e o Docker-Compose instalados em sua máquina.

Obs: Docker e Docker-Compose utilizados no desenvolvimento e execução deste projeto estavam nas versões 20.10.13 e 1.29.2 respectivamente.

  1. Clone o projeto
  git clone git@github.com:GabrielGaspar447/Mamboo-Kanban-API.git
  1. Entre no diretório do projeto
  cd Mamboo-Kanban-API
  1. Suba a orquestração de containers
  docker-compose up --build -d
  1. A aplicação estará pronta para uso quando a saída no seu terminal ficar assim
  Creating mk_db ... done
  Creating mk_api ... done
  1. A aplicação poderá ser acessada através de
  http://localhost:3001
  1. Para encerrar a aplicação basta executar o comando
  docker-compose down --rmi local --volumes --remove-orphans

Caso a saída no seu terminal após o passo 4 seja um erro contendo a mensagem Ports are not available, abra o arquivo docker-compose.yml e siga as instruções para alterar a porta 3001 para outra que esteja disponível em sua máquina. Após realizar a alteração salve o arquivo e execute o passo 4 novamente.

Node

Para rodar a API localmente utilizando Node, certifique-se de ter o Node instalado em sua máquina e um banco de dados MongoDB disponível para ser utilizado.

Obs: Node e MongoDB utilizados no desenvolvimento e execução deste projeto estavam nas versões 16.13.0 e 5.0.7 respectivamente.

  1. Clone o projeto
  git clone git@github.com:GabrielGaspar447/Mamboo-Kanban-API.git
  1. Entre no diretório do projeto
  cd Mamboo-Kanban-API
  1. Instale as dependências
  npm install
  1. Configure na raiz da aplicação um arquivo .env com as seguintes variáveis de ambiente
  PORT=<Porta onde a aplicação irá rodar (Padrão: 3001)>
  MONGO_URI=<URI de acesso ao MongoDB (Padrão: mongodb://localhost:27017/mamboo-kanban-api)>
  1. Rode a aplicação
  npm start
  1. A aplicação estará pronta para uso quando a saída no seu terminal ficar assim
  Database connection established
  Database seed with 28 random tasks (Aparece apenas na primeira vez)
  Server is running on port <porta utilizada no .env>
  1. A aplicação poderá ser acessada através de
  http://localhost:<porta utilizada no .env>
  1. Para encerrar a aplicação basta pressionar Ctrl + C no terminal

Testes

Esta aplicação conta com 37 suítes de teste com mais de 180 testes, sendo eles unitários e de integração, provendo uma cobertura de 100% em todos os arquivos testáveis. Este desenvolvimento orientado a testes combinado aos git hooks utlizando Husky e CI/CD utilizando GitHub Actions garantem alta confiabilidade da aplicação.

Rodando os testes

Para rodar os testes, certifique-se de ter o Node instalado em sua máquina. Não é necessário um banco de dados MongoDB disponível, os testes de integração são executados utilizando MongoDB-Memory-Server.

Obs: Node utilizado no desenvolvimento e execução dos testes deste projeto estava na versão 16.13.0.

  1. Clone o projeto
  git clone git@github.com:GabrielGaspar447/Mamboo-Kanban-API.git
  1. Entre no diretório do projeto
  cd Mamboo-Kanban-API
  1. Instale as dependências
  npm install
  1. Rode os testes
  npm test

Arquitetura

Diagrama da arquitetura

Conhecimentos aplicados

Stacks e bibliotecas principais

  • Node.js
  • TypeScript
  • Express
  • MongoDB
  • Mongoose
  • Docker
  • Jest
  • Swagger
  • ESLint

Paradigmas

  • Arquitetura em Camadas
  • TDD
  • REST
  • OOP
  • SOLID
  • CI/CD

Outras bibliotecas

  • Dotenv
  • Express-Async-Errors
  • Joi
  • Mongoose-Paginate-V2
  • MongoDB-Memory-Server
  • Supertest
  • Husky
  • Lint-Staged
  • Git-Commit-Msg-Linter