Skip to content

Latest commit

 

History

History
140 lines (89 loc) · 4.26 KB

README.md

File metadata and controls

140 lines (89 loc) · 4.26 KB

API Desafio Backend PicPay

NPM

Autor

👤 Cauã Soares

💼 https://www.linkedin.com/in/ocauasoares/

Sobre o projeto

Deploy na plataforma Render:

🚀 https://api-desafio-backend-picpay.onrender.com/

Essa API RESTful foi desenvolvida baseada em um desafio técnico de backend da empresa PicPay.

Estrutura do projeto

Estrutura do projeto

O projeto foi desenvolvido seguindo o Clean Architecture (Arquitetura Limpa), ou seja, o seu desenvolvimento feito desacoplado, separado por camadas, com o objetivo de facilitar a leitura do código, da escalabilidade, manutenção e a utilização de testes.

As funcionalidades centrais da aplicação, como cadastro ou login, por exemplo, foram dividas em módulos próprios do NestJS, com seus respectivos use-cases, services, controllers e repositórios, que dependem de uma interface.

Um exemplo a seguir dessa arquitetura, da funcionalidade de fazer transferências:

Use-cases e módulos

Use-cases e módulos

Use-cases e módulos transfer

Service

Service

Controller

Controller

Repositório

Repositório

Implementação do Repositório

Implementação do Repositório

Injeção de Dependência do Repositório

Injeção de Dependência do Repositório

Principais tecnologias e bibliotecas utilizadas

  • NodeJS
  • NestJS
  • Typescript
  • Docker
  • PostgreSQL
  • Prisma
  • bcrypt
  • class-validator (validação dos DTOs)
  • passport
  • JWT
  • Axios
  • Jest
  • Swagger (para documentação)

Características e funcionalidades do projeto:

Estrutural 🛠️

  • Clean Code
  • SOLID
  • Clean Architecture
  • Banco de dados usado no Docker

Rotas e validação 🔒

  • DTOs validados com os tipos corretos para a requisição
  • Rota de cadastramento e de login
  • No sistema podem ser cadastrado contas de usuários e de lojistas
  • Rota /me para conferir as atuais informações do usuário autenticado com um token JWT
  • Rota protegida para realizar uma transferência bancária para um usuário válido

Funcionalidades 🎯

  • Usuários podem realizar transferências para outros usuários e para lojistas
  • Lojistas podem apenas receber transferências, não podem enviar dinheiro para nenhuma conta
  • Usuários só podem realizar transferências com saldo positivo
  • Consulta à uma API externa de autorização antes de finalizar a transferência
  • Consulta à uma API externa de notificação para a conta recebedora da transferência

Documentação

Documentação feita com a ferramenta Swagger na rota /docs

Documentação

Executar o projeto localmente

Pré-requisitos: Typescript, NodeJS, Docker

# clonar o repositório
git clone https://github.com/ocsoares/API-Desafio-Backend-PicPay

# instalar as bibliotecas
npm install

# criar um arquivo .env na pasta raíz do projeto

# configurar esse .env baseado no arquivo .env.example

# transpilar os arquivos do projeto para .js
npm run build

# iniciar o container do docker
docker-compose up -d

# executar o projeto
npm start

Testes

Foi desenvolvido testes para praticamente 100% das funcionalidades desse projeto. Testes

Pode-se executar os testes com o comando:

npm test