Esse projeto foi desenvolvido para uma vaga de Back End na empresa Beon Tecnologia.
A proposta era desenvolver uma aplicação Back End para enviar atividades agendadas para computação em Nuvem. Essa aplicação deve ter a possibilidade de utilizar criação, leitura, atualização, e remoção de uma ou mais atividades.
Foi proposto que o desafio técnico fosse disponibilizado no Github e fosse trabalhado com boas práticas, tendo como enfâse especial os seguintes itens:
- Separação de responsabilidades
- Clareza e leitura do código
- Organização da arquitetura do projeto
- Detalhes de workflow do projeto
Os Dados deve ser recebido em formato JSON
da seguinte forma:
{
"nome": "segunda tarefa",
"data_de_execucao": "2022-06-22",
"situacao": "pendente",
"prioridade": "baixa",
"data_de_conclusao": "2022-06-30"
}
E será armazenado no banco de dados no formato JSON
, dessa maneira:
{
"_id": "62b3c85555a1cb218e5bce6c",
"nome": "segunda tarefa",
"data_de_execucao": "2022-06-22T00:00:00.000Z",
"situacao": "pendente",
"prioridade": "baixa",
"data_de_conclusao": "2022-06-30T00:00:00.000Z",
"__v": 0
}
Os dados podem ser armazenados e manipulados através dos Métodos:
- Create
- Read
- Update (PATCH)
- Delete
Foi proposto o uso de Node.js, AWS, Lambda, Redis, além do uso do Framework Serverless. E para pontuação extra foi solicitado o uso do Typescript e Docker para gerenciar os recursos. Mas devido a dificuldades de acesso e o prazo, foi decidido a não utilização de AWS, Lambda, Redis como o Serverless. Como alternativa foi utilizado o Nest.js e uma tentativa de utilizar o MongoDB Atlas, que foi logo descartada também por apresentar erro ao tentar acessar. Com o uso do Nest.js, consequentemente foi utilizado Typescript e o desenvolvimento da aplicação correu sem muitos problemas, exceto após o deploy feito no Heroku.
Nest.js
Node.js
Typescript
Jest
Mongoose
MongoDB
Heroku
O desenvolvimento da aplicação foi feito no VSCODE
, e o projeto teve que ser reiniciado após constatar que não seria possível trabalhar com AWS
dentro do prazo estabelecido. Após isso foi implementado uma nova aplicação utilizando Nest.js
de forma simples. Foi utilizado o POSTMAN
para testar se a a aplicação estava populando corretamente e o MongoDB Compass
para visualizar o banco de dados. Logo após foi feito o Deploy no Heroku e mais tarde alguns testes utilizando Jest.
Pre-requisitos para rodar o projeto:
mongoDB
Node.js
Copie o ssh do projeto [email protected]:edermotasantos/nestjs-app.git
-
Abra um terminal no seu computador e utilize os comandos a baixo na ordem que são apresentados:
git clone [email protected]:edermotasantos/nestjs-app.git
cd nestjs-app
yarn install
yarn run start
-
Para testar, basta ditarar o comando:
-
yarn run test
Localmente foi utilizado um arquivo .env
(não enviado para o github) para as configurações locais, mas as funções estão configuradas para que também possa ser utilizadas sem esse arquivo.
A API consta com 2 rotas:
/tasks
[POST
] Insere uma atividade/tasks
[GET
] Pegar a lista de atividades/tasks/:id
[GET
] Pega uma atividade/tasks/:id
[PATCH
] Atualiza uma atividade/tasks/:id
[DELETE
] Deleta uma atividade
Foram implementados testes para a criação e atualização das atividades. Ainda serão desenvolvidos testes para a remoção e a listagem de todas as atividades.
Apesar do deploy ter sido feito sem nenhum contratempo, não consegui acesso ao App através do link abaixo. No terminal apresentou um erro no Port, mas que aparentemente estava solucionado. Como não consegui resolver, segui para outros terminar outros requisitos.
Para acesso ao App: https://nestjs-app-heroku.herokuapp.com/ Heroku git url: https://git.heroku.com/nestjs-app-heroku.git
Foi utilizado o MongoDB
pela fácil inserção e extração de dados.
- Implementação de mais Testes
- Implementação de
Token
de acesso elogin