Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Task API

API REST simples de gerenciamento de tarefas (to-do list), construída em Node.js + TypeScript, com persistência em SQLite e testes automatizados.

Projeto pessoal criado para praticar Node.js, TypeScript, SQL e testes de API — com apoio de IA generativa durante o desenvolvimento.

Tecnologias

  • Node.js + TypeScript
  • Express — framework HTTP
  • node:sqlite — módulo nativo de SQLite do Node (sem dependências externas/compilação nativa), usado para praticar SQL puro (CREATE TABLE, INSERT, SELECT, UPDATE, DELETE)
  • Vitest + Supertest — testes automatizados de API
  • tsx — execução de TypeScript em desenvolvimento

Estrutura do projeto

src/
  types.ts            # tipos e contratos (Task, inputs)
  db.ts                # conexão SQLite + migração da tabela
  taskRepository.ts    # camada de acesso a dados (SQL puro)
  validation.ts         # validações de entrada
  taskController.ts    # handlers das rotas (regras HTTP)
  routes.ts             # definição das rotas
  app.ts                 # instância do Express (usada também nos testes)
  server.ts             # ponto de entrada (sobe o servidor)
tests/
  tasks.test.ts         # testes de integração de toda a API
postman/
  task-api.postman_collection.json   # coleção para testes manuais

Como rodar

npm install
npm run dev       # http://localhost:3000

Variáveis de ambiente (opcionais):

Variável Padrão Descrição
PORT 3000 Porta do servidor
DB_PATH ./data.db Caminho do arquivo SQLite (:memory: para banco em memória)

Outros comandos:

npm run build      # compila para dist/
npm start          # roda a versão compilada
npm test           # roda a suíte de testes automatizados
npm run typecheck  # checa tipos sem gerar arquivos

Endpoints

Método Rota Descrição
GET /health Health check
GET /api/tasks Lista todas as tarefas (aceita ?status=)
GET /api/tasks/:id Busca uma tarefa por id
POST /api/tasks Cria uma tarefa
PUT /api/tasks/:id Atualiza uma tarefa
DELETE /api/tasks/:id Remove uma tarefa

status aceita: pendente, em_andamento, concluida.

Exemplo — criar tarefa

curl -X POST http://localhost:3000/api/tasks \
  -H "Content-Type: application/json" \
  -d '{"title": "Estudar SQL", "description": "Praticar joins"}'
{
  "id": 1,
  "title": "Estudar SQL",
  "description": "Praticar joins",
  "status": "pendente",
  "created_at": "2026-07-23 23:00:00",
  "updated_at": "2026-07-23 23:00:00"
}

Testes

A suíte em tests/tasks.test.ts cobre, para cada rota, os três tipos de cenário que costumam aparecer em análise de qualidade de software:

  • Caso de sucesso (ex.: criar e listar tarefas)
  • Caso de erro de validação (ex.: criar tarefa sem title, status inválido → 400)
  • Caso de recurso não encontrado / regressão de contrato (ex.: buscar/atualizar/remover id inexistente → 404)
npm test

Testando manualmente (Postman/Insomnia)

Importe postman/task-api.postman_collection.json no Postman ou no Insomnia. A coleção já inclui, além dos casos de sucesso, requisições propositalmente inválidas (sem title, status inválido, id inexistente) para validar o tratamento de erros da API.

Sobre o uso de IA no desenvolvimento

Este projeto foi estruturado com apoio do Claude (Anthropic): definição da arquitetura em camadas (rotas → controller → repositório → banco), revisão de código, e escrita da suíte de testes automatizados. As decisões de escopo, tecnologia e o código final foram revisados e compreendidos por mim.

Possíveis melhorias futuras

  • Paginação na listagem de tarefas
  • Autenticação (JWT)
  • Migração de node:sqlite para PostgreSQL em produção
  • Deploy (Render/Railway) e CI com GitHub Actions rodando npm test a cada push

About

API REST de tarefas em Node.js + TypeScript, com SQLite e testes automatizados. Projeto de estudo com apoio de IA.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages