Skip to content

budproj/task-management-microservice

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 [email protected]: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:https://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 [email protected]: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:https://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:https://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 [email protected]: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