Task API — API REST com Node.js e TypeScript

server

Sobre o projeto

A Task API é uma API REST desenvolvida para gerenciamento de tarefas, usuários e autenticação, utilizando uma arquitetura em camadas com separação clara entre rotas, controllers, services e persistência de dados. O projeto implementa autenticação baseada em JWT com access tokens e refresh tokens, armazenamento seguro dos refresh tokens utilizando hash SHA-256, cookies HttpOnly, controle de acesso baseado em papéis (RBAC), isolamento de dados entre usuários e gerenciamento de usuários por administradores. A aplicação utiliza Node.js, TypeScript, Fastify, Prisma e PostgreSQL, com validação de dados através do Zod, tratamento centralizado de erros e uma suíte de testes automatizados com Jest. A infraestrutura do banco de dados é executada através de Docker Compose, enquanto as migrations e o gerenciamento da persistência são realizados com Prisma. A versão atual conta com 15 suítes de testes e 96 testes automatizados, todos passando, cobrindo autenticação, autorização, regras de negócio, tarefas, usuários, administração, segurança e tratamento de erros.

Tecnologias utilizadas

  • Docker
  • Fastify
  • JWT
  • Node.js
  • PostgreSQL
  • Prisma
  • Typescript

Desafios técnicos

Arquitetura, segurança e consistência

A estruturação da aplicação exigiu uma separação clara entre rotas, controllers, services e persistência, mantendo as regras de negócio organizadas e independentes da camada HTTP.

A autenticação trouxe desafios relacionados ao ciclo de vida dos tokens, enquanto o isolamento de dados e o RBAC exigiram regras específicas para proteger recursos e operações administrativas.

Por fim, a integração entre Jest, TypeScript e Prisma exigiu uma estratégia de testes com mocks, complementada por testes manuais dos principais fluxos da API.

Captura de tela de 2026-09-04 17-15-53

Aprendizados

O projeto permitiu colocar em prática conceitos de construção de APIs REST, arquitetura em camadas, separação de responsabilidades, organização modular e aplicação de regras de negócio.

Durante o desenvolvimento, pude trabalhar de forma mais aprofundada com autenticação e autorização, incluindo JWT, access e refresh tokens, hashing, cookies HttpOnly, RBAC e isolamento de dados.

A implementação dos testes e o uso de Prisma, PostgreSQL, migrations, relacionamentos e Docker também contribuíram para ampliar a experiência prática com diferentes aspectos do desenvolvimento backend.

Captura de tela de 2026-09-04 17-15-53