Skip to content

Latest commit

 

History

47 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

💳 NG Cash API

Backend de uma API REST para gerenciamento de contas digitais, autenticação de usuários e transferências financeiras entre contas.

Desenvolvido com TypeScript, arquitetura em camadas, testes automatizados e integração contínua utilizando GitHub Actions.


🚀 Sobre o projeto

O NG Cash é uma API que simula um sistema bancário simplificado, permitindo que usuários realizem cadastro, autenticação, consulta de saldo e transferências financeiras entre contas.

Durante o desenvolvimento foram aplicados conceitos de arquitetura em camadas, autenticação JWT, testes automatizados e integração contínua, buscando aproximar o projeto de um ambiente profissional.


⚙️ Tecnologias utilizadas


📌 Funcionalidades

  • ✅ Cadastro de usuários
  • ✅ Criação automática de conta bancária
  • ✅ Login com autenticação JWT
  • ✅ Consulta de saldo
  • ✅ Transferências entre contas (Cash In / Cash Out)
  • ✅ Histórico completo de transações
  • ✅ Busca de transações por data
  • ✅ Validações de regras de negócio
  • ✅ Tratamento centralizado de erros

🧪 Testes automatizados

O projeto possui:

  • ✅ Testes unitários utilizando Jest
  • ✅ Testes de integração utilizando Supertest
  • ✅ Helpers para criação dinâmica de usuários de teste
  • ✅ Helpers para criação dinâmica de transações
  • ✅ Testes independentes de dados previamente existentes no banco
  • ✅ Encerramento automático das conexões com PostgreSQL após a execução dos testes

Executar todos os testes:

npm test

Executar apenas os testes unitários:

npm run test:unit

Executar apenas os testes de integração:

npm run test:integration

🔎 Quality Assurance

O projeto também foi utilizado como case prático de Quality Assurance, aplicando diferentes níveis de teste ao longo do desenvolvimento.

Estratégia de testes

  • Testes manuais de API utilizando Postman
  • Testes unitários utilizando Jest
  • Testes de integração utilizando Jest + Supertest
  • Identificação, análise e documentação de defeitos
  • Validação de regras de negócio e autenticação
  • Testes de cenários positivos e negativos
  • Gerenciamento das atividades e defeitos utilizando Jira
  • Documentação do processo de QA utilizando Confluence

Defeitos identificados

Durante a execução dos testes foram identificados defeitos relacionados a:

  • Falhas de autenticação e autorização
  • Exposição de informações internas do banco de dados
  • Validações de regras de negócio
  • Tratamento inadequado de exceções
  • Mensagens de erro inconsistentes
  • Falhas de controle de acesso entre contas

Os defeitos foram documentados e rastreados durante o processo de testes.

Gestão de testes

O processo de QA foi organizado utilizando Jira, com Epics, Stories, Subtasks, Sprints e registro de defeitos.

A documentação dos testes, evidências, análises e retrospectivas foi organizada no Confluence.

🔄 Integração Contínua (CI)

O projeto utiliza GitHub Actions para automatizar o processo de integração contínua.

A cada push para o repositório, a pipeline executa automaticamente:

  • instalação das dependências
  • build da aplicação
  • execução dos testes automatizados

Essa abordagem garante que o projeto permaneça funcional independentemente do ambiente onde for executado.


📚 Documentação da API

A documentação completa da API, contendo exemplos de requisição e resposta, está disponível no Postman:

👉https://documenter.getpostman.com/view/21025086/2s8Yt1qozv


👨‍💻 Como rodar o projeto

Clone o repositório: git clone https://github.com/veronicasgc/NG_Cash

Instale dependências: npm install


### Configure o arquivo .env

```env
DB_USERNAME=
DB_DATABASE=
DB_HOSTNAME=
DB_PASSWORD=
DB_PORT=5432

JWT_KEY=

Crie as tabelas

Execute os scripts disponíveis em:

queries.sql

Execute a aplicação

npm run dev

🏗 Arquitetura

O projeto foi desenvolvido utilizando arquitetura em camadas.

src
│
├── business
│
├── controller
│
├── data
│
├── error
│
├── model
│
├── router
│
├── services
│
└── tests
    ├── helpers
    ├── integration
    └── unit

Cada camada possui uma responsabilidade específica:

  • Controller: recebe as requisições HTTP e envia as respostas.
  • Business: concentra toda a regra de negócio.
  • Data: comunicação com o banco de dados.
  • Services: autenticação JWT, criptografia e serviços auxiliares.
  • Error: tratamento centralizado das exceções.
  • Tests: testes unitários, integração e helpers reutilizáveis.

📚 Principais aprendizados

Durante o desenvolvimento deste projeto foram aprofundados conhecimentos em:

  • Arquitetura em camadas
  • TypeScript
  • PostgreSQL
  • Knex
  • Express
  • Autenticação JWT
  • Criptografia com Bcrypt
  • Testes unitários com Jest
  • Testes de integração com Supertest
  • Criação dinâmica de dados para testes
  • Isolamento de testes
  • GitHub Actions
  • Integração Contínua (CI)
  • Encerramento correto das conexões com banco de dados

🚀 Melhorias futuras

  • Docker
  • Deploy em cloud
  • Documentação OpenAPI (Swagger)
  • Cobertura de testes (Coverage)
  • Rate Limiting
  • Refresh Token
  • Logs estruturados
  • Monitoramento da aplicação

👩‍💻 Desenvolvedora

Desenvolvido por Verônica Silveira.

GitHub: https://github.com/veronicasgc

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages