Este projeto implementa uma API REST simples para gerenciamento de tarefas (CRUD), utilizando Node.js com TypeScript, Express como framework web, e PostgreSQL como banco de dados. A aplicação é conteinerizada com Docker para facilitar o desenvolvimento e a implantação.
- Backend: Node.js, TypeScript, Express
- Banco de Dados: PostgreSQL
- Containerização: Docker, Docker Compose
- Controle de Versão: Git
- Testes: Jest, Supertest
- Validação: Zod
- Qualidade de Código: ESLint, Prettier
- Criar Tarefa (
POST /api/tasks): Adiciona uma nova tarefa à lista. - Listar Tarefas (
GET /api/tasks): Recupera todas as tarefas existentes. - Buscar Tarefa por ID (
GET /api/tasks/:id): Retorna detalhes de uma tarefa específica. - Atualizar Tarefa (
PUT /api/tasks/:id): Modifica os dados de uma tarefa existente (título, descrição, status). - Deletar Tarefa (
DELETE /api/tasks/:id): Remove uma tarefa da lista.
Siga os comandos abaixo para configurar e rodar a aplicação em seu ambiente de desenvolvimento.
Certifique-se de ter as seguintes ferramentas instaladas em sua máquina:
- Node.js (versão 18.x ou superior, inclui
npm) - Docker Desktop (ou Docker Engine e Docker Compose) - Garanta que o Docker Desktop esteja rodando e com o ícone verde/branco antes de começar.
- Git
- Um editor de código como VS Code (recomendado)
Abra seu terminal (PowerShell, Git Bash, WSL, etc.) e execute:
git clone [https://github.com/Guimrl/todo-list-api.git](https://github.com/Guimrl/todo-list-api.git)
cd todo-list-apidocker-compose up -d dbnpm installnpm run devAqui estão os endpoints que você pode testar:
-
POST /api/tasks-
Descrição: Cria uma nova tarefa.
-
Body (JSON):
{ "title": "Minha primeira tarefa", "description": "Detalhes da minha tarefa inicial." } -
Resposta Esperada: Status
201 Createde o objeto da tarefa criada (comidecreated_at).
-
-
GET /api/tasks- Descrição: Lista todas as tarefas.
- Resposta Esperada: Status
200 OKe um array JSON contendo as tarefas.
-
GET /api/tasks/:id- Descrição: Busca uma tarefa específica pelo seu ID.
- Parâmetro de Rota:
id(ID da tarefa). - Resposta Esperada: Status
200 OKe o objeto da tarefa correspondente, ou404 Not Found.
-
PUT /api/tasks/:id-
Descrição: Atualiza uma tarefa existente.
-
Parâmetro de Rota:
id(ID da tarefa a ser atualizada). -
Body (JSON): (Campos
title,description,completedsão opcionais, mas pelo menos um deve ser enviado){ "title": "Tarefa Atualizada", "description": "Nova descrição", "completed": true } -
Resposta Esperada: Status
200 OKe o objeto da tarefa atualizada.
-
-
DELETE /api/tasks/:id- Descrição: Deleta uma tarefa pelo seu ID.
- Parâmetro de Rota:
id(ID da tarefa a ser deletada). - Resposta Esperada: Status
204 No Content.