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.
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.
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.
- Clone o projeto
git clone git@github.com:GabrielGaspar447/Mamboo-Kanban-API.git- Entre no diretório do projeto
cd Mamboo-Kanban-API- Suba a orquestração de containers
docker-compose up --build -d- A aplicação estará pronta para uso quando a saída no seu terminal ficar assim
Creating mk_db ... done
Creating mk_api ... done- A aplicação poderá ser acessada através de
http://localhost:3001- Para encerrar a aplicação basta executar o comando
docker-compose down --rmi local --volumes --remove-orphansCaso 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.
- Clone o projeto
git clone git@github.com:GabrielGaspar447/Mamboo-Kanban-API.git- Entre no diretório do projeto
cd Mamboo-Kanban-API- Instale as dependências
npm install- 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)>- Rode a aplicação
npm start- 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>- A aplicação poderá ser acessada através de
http://localhost:<porta utilizada no .env>- Para encerrar a aplicação basta pressionar
Ctrl + Cno terminal
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.
- Clone o projeto
git clone git@github.com:GabrielGaspar447/Mamboo-Kanban-API.git- Entre no diretório do projeto
cd Mamboo-Kanban-API- Instale as dependências
npm install- Rode os testes
npm test- Node.js
- TypeScript
- Express
- MongoDB
- Mongoose
- Docker
- Jest
- Swagger
- ESLint
- Arquitetura em Camadas
- TDD
- REST
- OOP
- SOLID
- CI/CD
- Dotenv
- Express-Async-Errors
- Joi
- Mongoose-Paginate-V2
- MongoDB-Memory-Server
- Supertest
- Husky
- Lint-Staged
- Git-Commit-Msg-Linter
