Este projeto é uma solução para o desafio técnico de backend do PicPay. A aplicação simula uma plataforma de pagamentos onde usuários podem realizar transferências entre si. O projeto é desenvolvido utilizando Node.js com o framework NestJS, Prisma como ORM, e Redis para mensageria usando Bull.
- Node.js: Ambiente de execução JavaScript no lado do servidor.
- NestJS: Framework para construção de aplicações Node.js escaláveis e de fácil manutenção.
- Prisma: ORM para TypeScript e Node.js que facilita o acesso ao banco de dados.
- Redis: Plataforma de mensageria open-source usando Bull para gerenciar filas.
- Zod: Biblioteca para validação de esquemas.
- Node.js
- Docker (para executar o Redis e o banco de dados)
- PostgreSQL (caso não utilize Docker para o banco de dados)
-
Clone o repositório:
git clone https://github.com/gabrielalmir/desafio-backend-picpay.git cd desafio-backend-picpay
-
Instale as dependências:
npm install
-
Configure as variáveis de ambiente:
Crie um arquivo
.env
na raiz do projeto e defina as seguintes variáveis:PORT=3000 NODE_ENV=development DATABASE_URL=postgresql://username:password@localhost:5432/mydatabase AUTHORIZATION_SERVICE_URL=https://util.devi.tools/api/v2/authorize NOTIFICATION_SERVICE_URL=https://util.devi.tools/api/v1/notify
-
Suba os serviços Docker (Redis e PostgreSQL):
docker-compose up -d
-
Execute as migrações do Prisma para configurar o banco de dados:
npm run db:push
-
Inicie a aplicação:
npm run start
A aplicação estará disponível em
http://localhost:3000
.
- POST /wallets
- Cria um novo usuário.
- Payload:
{ "fullName": "John Doe", "cpf": "12345678900", "email": "john.doe@example.com", "password": "strongpassword", "type": "common" }
- POST /transactions
- Cria uma nova transação.
- Payload:
{ "value": 100.0, "payerId": 1, "payeeId": 2 }
A aplicação segue os princípios de arquitetura limpa, separando as responsabilidades em diferentes módulos. Utilizamos Prisma como ORM para facilitar o acesso ao banco de dados e Kafka para mensageria entre serviços.
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/amazing-feature
) - Commit suas mudanças (
git commit -m 'Add some amazing feature'
) - Faça o push para a branch (
git push origin feature/amazing-feature
) - Abra um Pull Request
Distribuído sob a licença MIT. Veja LICENSE
para mais informações.
Gabriel Almir - LinkedIn - @gabrielalmir
Projeto Link: https://github.com/gabrielalmir/desafio-backend-picpay