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-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.
- 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 + C
no 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