A API segue as orientações básicas do desafio. Procurei seguir as orientações do ExpressJS tanto na parte de segurança quanto na parte do deploy. Isso se traduziu em Rate Limiting, Logs espalhados pela aplicação, Error Handling generalizado e outros ajustes menores.
Para além do pedido, a rota de listagem das tarefas (GET /tasks
) retorna os dados "paginados", sendo possível verificar tais dados a partir dos headers X-Total-Count
(número total de items, no caso tarefas) e X-Total-Pages
.
A validação dos dados é feita com Class Validator a partir de middlewares, impedindo que a requisição chegue nas camadas seguintes (regras de negócio) caso algo não esteja de acordo.
Este desafio foi feito após o Desafio 2, parte do código foi reaproveitado.
- Primeiro clone o projeto:
git clone https://github.com/RenanGalvao/code-challenge-prounion-1.git
- Acesse a pasta clonada
code-challenge-prounion-1
- Navegue até a pasta
backend
- Crie uma cópia do arquivo
.env.example
com o nome de.env
- Instale os pacotes necessários
npm install
- Suba o servidor
npm run dev
- URL de acesso:
http://localhost:3000
Inicie o projeto a partir do arquivo docker-compose.yml
da pasta raiz.
GET /tasks
retorna a lista de tarefas cadastradas, aceita parâmetros de pesquisapage
eitemsPerPage
, sendo ambos valores númericos.GET /tasks/:id
retorna dados da tarefa associado ao id.POST /tasks
cria uma nova tarefa e retorna seus dados, espera um JSON com as chavesdescription
edone
.PUT /tasks/:id
atualiza e retorna os dados da tarefa associada ao id, o JSON esperado contém as mesmas chaves que o da criação.DELETE /tasks/:id
remove a tarefa associada ao id.GET /health
utilizada para verificar a saúde da API, retorna ouptime
da aplicação.