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.
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.
- ✅ 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
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 testExecutar apenas os testes unitários:
npm run test:unitExecutar apenas os testes de integração:
npm run test:integrationO projeto também foi utilizado como case prático de Quality Assurance, aplicando diferentes níveis de teste ao longo do desenvolvimento.
- 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
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.
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.
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.
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
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=
Execute os scripts disponíveis em:
queries.sql
npm run devO 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.
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
- Docker
- Deploy em cloud
- Documentação OpenAPI (Swagger)
- Cobertura de testes (Coverage)
- Rate Limiting
- Refresh Token
- Logs estruturados
- Monitoramento da aplicação
Desenvolvido por Verônica Silveira.
GitHub: https://github.com/veronicasgc