👤 Cauã Soares
💼 https://www.linkedin.com/in/ocauasoares/
🚀 https://api-desafio-backend-picpay.onrender.com/
Essa API RESTful foi desenvolvida baseada em um desafio técnico de backend da empresa PicPay.
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:
- NodeJS
- NestJS
- Typescript
- Docker
- PostgreSQL
- Prisma
- bcrypt
- class-validator (validação dos DTOs)
- passport
- JWT
- Axios
- Jest
- Swagger (para documentação)
- Clean Code
- SOLID
- Clean Architecture
- Banco de dados usado no Docker
- 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
- 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 feita com a ferramenta Swagger na rota /docs
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
Foi desenvolvido testes para praticamente 100% das funcionalidades desse projeto.
Pode-se executar os testes com o comando:
npm test