Code Monkey home page Code Monkey logo

gabrielalmir / picpay-desafio-backend Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 332 KB

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.

License: MIT License

JavaScript 4.80% TypeScript 95.20%
desafio-picpay nestjs nodejs picpay typescript redis

picpay-desafio-backend's Introduction

Desafio Backend PicPay

Visão Geral

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.

Tecnologias Utilizadas

  • 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.

Configuração do Ambiente

Pré-requisitos

  • Node.js
  • Docker (para executar o Redis e o banco de dados)
  • PostgreSQL (caso não utilize Docker para o banco de dados)

Instalação

  1. Clone o repositório:

    git clone https://github.com/gabrielalmir/desafio-backend-picpay.git
    cd desafio-backend-picpay
  2. Instale as dependências:

    npm install
  3. 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

Executando a Aplicação

  1. Suba os serviços Docker (Redis e PostgreSQL):

    docker-compose up -d
  2. Execute as migrações do Prisma para configurar o banco de dados:

    npm run db:push
  3. Inicie a aplicação:

    npm run start

    A aplicação estará disponível em http://localhost:3000.

Endpoints da API

Usuários

  • POST /wallets
    • Cria um novo usuário.
    • Payload:
      {
        "fullName": "John Doe",
        "cpf": "12345678900",
        "email": "[email protected]",
        "password": "strongpassword",
        "type": "common"
      }

Transações

  • POST /transactions
    • Cria uma nova transação.
    • Payload:
      {
        "value": 100.0,
        "payerId": 1,
        "payeeId": 2
      }

Arquitetura

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.

Contribuição

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/amazing-feature)
  3. Commit suas mudanças (git commit -m 'Add some amazing feature')
  4. Faça o push para a branch (git push origin feature/amazing-feature)
  5. Abra um Pull Request

Licença

Distribuído sob a licença MIT. Veja LICENSE para mais informações.

Contato

Gabriel Almir - LinkedIn - @gabrielalmir

Projeto Link: https://github.com/gabrielalmir/desafio-backend-picpay

picpay-desafio-backend's People

Contributors

gabrielalmir avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.