Uma API RESTful desenvolvida em Node.js com TypeScript para gerenciamento de transações financeiras, implementando controle de sessão por cookies e operações CRUD completas.
- Node.js - Runtime JavaScript
- TypeScript - Superset tipado do JavaScript
- Fastify - Framework web rápido e eficiente
- Knex.js - Query builder para SQL
- SQLite - Banco de dados leve e eficiente
- Zod - Validação de esquemas TypeScript-first
- @fastify/cookie - Gerenciamento de cookies
- dotenv - Gerenciamento de variáveis de ambiente
- Vitest - Framework de testes unitários
- Supertest - Testes de integração para APIs HTTP
- TSX - Executor TypeScript para desenvolvimento
- TSUP - Bundler TypeScript ultrarrápido
- ✅ Criação de transações - Cadastro de receitas e despesas
- ✅ Listagem de transações - Visualização de todas as transações do usuário
- ✅ Busca por ID - Consulta de transação específica
- ✅ Resumo financeiro - Cálculo automático do saldo total
- ✅ Controle de sessão - Isolamento de dados por usuário via cookies
- ✅ Validação de dados - Validação robusta com Zod
- ✅ Migrations - Controle de versão do banco de dados
- ✅ Testes automatizados - Cobertura completa com testes de integração
- Node.js (versão 18 ou superior)
- npm ou yarn
- Clone o repositório
git clone <url-do-repositorio>
cd api-rest-02- Instale as dependências
npm install- Configure as variáveis de ambiente
# Crie um arquivo .env na raiz do projeto
cp .env.example .env- Execute as migrations
npm run knex migrate:latest- Inicie o servidor de desenvolvimento
npm run dev- Para produção
# Build da aplicação
npm run build
# Inicia o servidor
npm startnpm test- Arquitetura RESTful: Implementação de uma API seguindo os princípios REST com endpoints bem estruturados
- TypeScript Avançado: Uso de tipos genéricos, interfaces e tipagem estrita para maior segurança
- Fastify Framework: Domínio de um framework alternativo ao Express, focado em performance
- Query Builder: Utilização do Knex.js para abstrair queries SQL de forma type-safe
- Controle de Sessão: Implementação de autenticação stateless usando cookies HTTP
- Migrations: Versionamento e evolução de esquemas de banco de dados
- Testes de Integração: Desenvolvimento de testes automatizados com Vitest e Supertest
-
Configuração de Módulos ES:
- Problema: Conflito entre CommonJS e ES Modules no build
- Solução: Configuração adequada do
package.jsoncom"type": "module"e ajuste dos scripts de build
-
Isolamento de Dados por Sessão:
- Problema: Garantir que cada usuário acesse apenas suas próprias transações
- Solução: Implementação de middleware personalizado para validação de sessionId
-
Tipagem com Knex.js:
- Problema: Falta de tipagem automática nas queries do banco
- Solução: Criação de arquivo de declaração de tipos customizado (
knex.d.ts)
-
Testes com Estado Compartilhado:
- Problema: Interferência entre testes devido ao banco compartilhado
- Solução: Reset completo do banco antes de cada teste usando migrations
- Desenvolvimento de APIs RESTful robustas e escaláveis
- Implementação de autenticação e autorização em aplicações Node.js
- Trabalho com bancos de dados relacionais usando Query Builders
- Criação de testes automatizados para APIs
- Configuração de ambientes de desenvolvimento profissionais
- Uso de ferramentas modernas do ecossistema TypeScript/Node.js