Skip to content

Backend de controlo financeiro pessoal. Calcula saldos e gere transações com testes E2E integrados.

Notifications You must be signed in to change notification settings

melloxyz/api-rest-finance

Repository files navigation

API REST - Sistema de Transações Financeiras

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.

TypeScript Node.js Fastify SQLite

🚀 Tecnologias Utilizadas

Backend

  • 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

Validação e Utilitários

  • Zod - Validação de esquemas TypeScript-first
  • @fastify/cookie - Gerenciamento de cookies
  • dotenv - Gerenciamento de variáveis de ambiente

Desenvolvimento e Testes

  • Vitest - Framework de testes unitários
  • Supertest - Testes de integração para APIs HTTP
  • TSX - Executor TypeScript para desenvolvimento
  • TSUP - Bundler TypeScript ultrarrápido

⚡ Funcionalidades

  • 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

🛠️ Como Executar o Projeto

Pré-requisitos

  • Node.js (versão 18 ou superior)
  • npm ou yarn

Instalação

  1. Clone o repositório
git clone <url-do-repositorio>
cd api-rest-02
  1. Instale as dependências
npm install
  1. Configure as variáveis de ambiente
# Crie um arquivo .env na raiz do projeto
cp .env.example .env
  1. Execute as migrations
npm run knex migrate:latest
  1. Inicie o servidor de desenvolvimento
npm run dev
  1. Para produção
# Build da aplicação
npm run build

# Inicia o servidor
npm start

Executar Testes

npm test

📚 Aprendizados e Desafios

🎯 Principais Aprendizados

  • 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

🚧 Desafios Enfrentados

  1. Configuração de Módulos ES:

    • Problema: Conflito entre CommonJS e ES Modules no build
    • Solução: Configuração adequada do package.json com "type": "module" e ajuste dos scripts de build
  2. 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
  3. 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)
  4. 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

💡 Competências Desenvolvidas

  • 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

About

Backend de controlo financeiro pessoal. Calcula saldos e gere transações com testes E2E integrados.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published