Este projeto é uma API REST para gerenciamento de tarefas (tasks). Ele permite criar, listar, atualizar, remover, marcar como completa e importar tarefas em massa através de um arquivo CSV.
- 🟢 Node.js: Plataforma para execução do JavaScript no servidor.
- 🟦 TypeScript: Superset do JavaScript com tipagem estática.
- ⚡ Fastify: Framework web de alta performance para Node.js.
- 🗄️ SQLite3: Banco de dados leve e embutido para desenvolvimento.
- 📜 Knex.js: Query builder para interação com o banco de dados.
- 🔑 Dotenv: Gerenciamento de variáveis de ambiente.
- 💎 Zod: Validação de esquemas e dados.
- ✨ ESLint: Linter para garantir a qualidade do código.
- 📂 @fastify/multipart: Plugin para lidar com uploads de arquivos no Fastify.
- 📊 fast-csv: Biblioteca para processamento de arquivos CSV.
- ➕ Criar uma tarefa: Permite registrar novas tarefas.
- 📄 Listar todas as tarefas: Retorna todas as tarefas armazenadas.
- ✏️ Atualizar uma tarefa: Altera os dados de uma tarefa específica.
- ❌ Remover uma tarefa: Deleta uma tarefa existente.
- ✅ Marcar uma tarefa como completa: Atualiza o status da tarefa.
- 📥 Importar tarefas em massa: Permite importar tarefas a partir de um arquivo CSV.
-
Clone o repositório:
git clone https://github.com/joschonarth/task-manager-api.git cd task-manager-api
-
Crie um arquivo
.env
a partir do exemplo:cp .env.example .env
Edite o arquivo
.env
para configurar as variáveis de ambiente necessárias. -
Instale as dependências:
npm install
-
Execute as migrações do banco de dados:
npm run knex migrate:latest
-
Inicie a aplicação:
npm run dev
A API estará disponível em
http://localhost:3333
.
-
Método:
POST
-
URL:
/tasks
-
Corpo da Requisição:
{ "title": "Título da Task", "description": "Descrição detalhada da Task" }
-
Método:
GET
-
URL:
/tasks
-
Resposta:
{ "tasks": [ { "id": "1", "title": "Título da Task", "description": "Descrição da Task", "created_at": "2025-02-12T12:00:00", "updated_at": "2025-02-12T12:10:00", "completed_at": null } ] }
-
Método:
PUT
-
URL:
/tasks/:id
-
Corpo da Requisição:
{ "title": "Novo Título" }
-
Resposta:
{ "id": "1", "title": "Novo Título", "description": "Descrição da Task", "created_at": "2025-02-12T12:00:00", "updated_at": "2025-02-12T12:20:00", "completed_at": null }
-
Método:
DELETE
-
URL:
/tasks/:id
-
Resposta:
{ "message": "Task removed successfully" }
-
Método:
PATCH
-
URL:
/tasks/:id/complete
-
Resposta:
{ "id": "1", "title": "Título da Task", "description": "Descrição da Task", "created_at": "2025-02-12T12:00:00", "updated_at": "2025-02-12T12:10:00", "completed_at": "2025-02-12T12:00:00" }
-
Método:
POST
-
URL:
/tasks/import
-
Corpo da Requisição: Arquivo CSV com as colunas
title
edescription
.Exemplo de CSV:
title,description Task 01,Descrição da Task 01 Task 02,Descrição da Task 02 Task 03,Descrição da Task 03 Task 04,Descrição da Task 04 Task 05,Descrição da Task 05
-
Resposta:
{ "message": "Tasks imported successfully" }
A API permite importar tasks em massa através de um arquivo CSV. Para realizar a importação, envie o arquivo usando o método POST
na rota /tasks/import
, com o arquivo sendo enviado no formato multipart/form-data
.
Enviando o arquivo CSV com Postman:
- Abra o Postman e selecione o método
POST
. - Na URL, insira
http://localhost:3333/tasks/import
. - Selecione a aba
Body
. - Selecione a opção
form-data
. - Adicione um campo com o nome
file
e escolha o tipo File. - Clique em Select Files e escolha um arquivo
.csv
(você pode utilizar o arquivo de exemplotest.csv
). - Clique em Send para enviar a requisição.
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou pull requests com melhorias ou correções. 🚀
Este projeto está licenciado sob a MIT License.