Projeto criado para meu portfólio e para o curso gratuito de Nest JS no meu canal do Youtube. Nele iremos abordar os seguintes recursos:
- CRUD de tarefas (Controllers, Decorators, Services, Modules)
- Validação de DTO com class-validator
- Variáveis de ambiente com ConfigService
- Autenticação (JwtService, App guard)
- Password hash
- Banco de dados - TODO
Esse projeto foi desenvolvido utilizando a seguinte versão do node:
- Clone o repositório:
git clone git@github.com:deyvissonbrenoveras/task-management-api.git
- Navegue até o diretório do projeto:
cd task-management-api
- Instale as dependências:
npm install
- Crie copie o arquivo .env.example e renomeie para .env, preenchendo todas a variáveis.
- Inicialize o container do banco de dados com:
docker-compose up -d
- Execute as migrations com:
npm run migration:run
Criar uma migration:
npm run migration:create -name=nome-da-migration
Executar as migrations:
npm run migration:run
Reverter as migrations:
npm run migration:revert
O task-management-api expõe um endpoint para cadastro, atualização, busca e exclusão de tarefas. também foi desenvolvido um endpoint para criação de usuários e um endpoint de autenticação, onde é possível realizar o login passando um usuário e senha.
Copie os Curls abaixo e cole no seu testador de apis favorito, como Insomnia ou Postman.
curl --request POST \
--url http://localhost:3000/users \
--header 'Content-Type: application/json' \
--data ' {
"username": "username",
"password": "password"
}'
curl --request POST \
--url http://localhost:3000/auth/login \
--header 'Content-Type: application/json' \
--data ' {
"username": "username",
"password": "password"
}'
curl --request POST \
--url http://localhost:3000/task \
--header 'Authorization: Bearer token' \
--header 'Content-Type: application/json' \
--data ' {
"title":"title",
"description": "description",
"expirationDate": "2024-01-01"
}'
curl --request PUT \
--url http://localhost:3000/task \
--header 'Authorization: Bearer token' \
--header 'Content-Type: application/json' \
--data ' {
"id": "uuid here",
"title":"updated title",
"description": "updated description",
"status": "IN_PROGRESS",
"expirationDate": "2024-01-04"
}'
curl --request GET \
--url http://localhost:3000/task/1 \
--header 'Authorization: Bearer token'
curl --request GET \
--url 'http://localhost:3000/task?title=task%203&status=IN_PROGRESS' \
--header 'Authorization: Bearer token'
curl --request DELETE \
--url http://localhost:3000/task/uuid-here \
--header 'Authorization: Bearer token'