Skip to content

DaniloCDev/backend-sellproxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

160 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation


๐Ÿ“Œ SellProxy (Backend)

Este projeto segue uma arquitetura modular inspirada em Clean Architecture, com separaรงรฃo por domรญnios, uso de Orchestrators, DTOs, Repositories, Services e integraรงรฃo com Mercado Pago e DataImpulse.


๐Ÿš€ Tecnologias Utilizadas

Backend

  • Node.js + TypeScript
  • Express
  • Prisma ORM
  • PostgreSQL (via Docker)
  • bcrypt (hash de senha)
  • JWT (autenticaรงรฃo)
  • Zod (validaรงรฃo)
  • Mercado Pago SDK
  • Axios (requests externos)
  • Docker Compose

Arquitetura

โœ” Principais padrรตes usados

  • Modular Monolith
  • Repository Pattern
  • Service Layer
  • Orchestrator Pattern
  • DTO Pattern
  • Dependency Injection (Containers)
  • Global Error Handling
  • Middleware Layer
  • Integration Layer (Mercado Pago / DataImpulse)

๐Ÿงฉ Estrutura Atual do Projeto

/src
 โ”œโ”€โ”€ core
 โ”‚    โ”œโ”€โ”€ middlewares
 โ”‚    โ”‚     โ”œโ”€โ”€ auth.middleware.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ validate.ts
 โ”‚    โ”œโ”€โ”€ errors
 โ”‚          โ”œโ”€โ”€ AppError.ts
 โ”‚          โ”œโ”€โ”€ errorHandler.ts
 โ”‚
 โ”œโ”€โ”€ modules
 โ”‚    โ”œโ”€โ”€ auth
 โ”‚    โ”‚     โ”œโ”€โ”€ AuthController.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ AuthService.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ AuthRepository.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ AuthOrchestrator.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ AuthContainer.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ AuthRoutes.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ dtos/
 โ”‚    โ”‚
 โ”‚    โ”œโ”€โ”€ proxy
 โ”‚    โ”‚     โ”œโ”€โ”€ ProxyController.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ ProxyService.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ ProxyContainer.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ ProxyOrchestrator.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ ProxyRepository.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ ProxyRoutes.ts
 โ”‚    โ”‚
 โ”‚    โ”œโ”€โ”€ payments
 โ”‚    โ”‚     โ”œโ”€โ”€ PaymentController.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ PaymentService.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ PaymentRepository.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ PaymentOrchestrator.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ PaymentRoutes.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ PaymentContainer.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ mercadopago/createPixPayment.ts
 โ”‚    โ”‚
 โ”‚    โ”œโ”€โ”€ logs
 โ”‚    โ”‚      โ”œโ”€โ”€ LogsController.ts
 โ”‚    โ”‚      โ”œโ”€โ”€ LogsService.ts
 โ”‚    โ”‚
 โ”‚    โ”œโ”€โ”€ user
 โ”‚    โ”‚     โ”œโ”€โ”€ UserController.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ UserService.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ UserRepository.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ UserOrchestrator.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ UserContainer.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ UserRoutes.ts
 โ”‚    โ”‚     โ”œโ”€โ”€ dtos/
 โ”‚
 โ”œโ”€โ”€ shared
 โ”‚     โ”œโ”€โ”€ prisma/client.ts
 โ”‚     โ”œโ”€โ”€ utils/
 โ”‚
 โ”œโ”€โ”€ config
 โ”‚     โ”œโ”€โ”€ prisma/client.ts
 โ”‚
 โ”‚
 โ”œโ”€โ”€ server.ts

๐Ÿง  Padrรตes de Arquitetura

โœ… 1. Repository Pattern

Cada mรณdulo tem seu prรณprio repositรณrio:

  • AuthRepository.ts
  • ProxyRepository.ts
  • PaymentRepository.ts

โ†’ Objetivo: Centralizar acesso ao banco e isolar Prisma da regra de negรณcio.


โœ… 2. Service Layer Pattern

Serviรงos contendo apenas lรณgica de negรณcio pura, sem Express, sem banco direto.

โ†’ Exemplo:

  • Autenticaรงรฃo (login)
  • Criar usuรกrio proxy
  • Criar compra PIX
  • Validar cupom
  • Ver histรณrico de compras

โœ… 3. Orchestrator Pattern

foi criado orquestradores para operaรงรตes complexas, como:

๐Ÿ”น AuthOrchestrator

Fluxo do login:

  1. Autentica usuรกrio
  2. Cria usuรกrio no Proxy automaticamente (se precisar)
  3. Gera token
  4. Gera logs

๐Ÿ”น UserOrchestrator

Fluxo do registro:

  1. Registrar usuario usuรกrio
  2. Cria usuรกrio no Proxy automaticamente (se precisar)
  3. Gera token
  4. Gera logs

๐Ÿ”น PaymentOrchestrator

Fluxos:

  • Criar compra (createPurchase)
  • Processar compra via PIX
  • Processar webhook do Mercado Pago
  • Consumir proxyService + paymentService juntos

โ†’ O orquestrador coordena vรกrios serviรงos sem os serviรงos conhecerem entre si.


โš ๏ธ 4. Error Handling Global (AppError + Middleware)

Foi implementado:

AppError

class AppError {
  constructor(
     public message: string,
     public statusCode = 400
  ) {}
}

errorHandler middleware

Captura erros lanรงados no service/orchestrator:

app.use((err, req, res, next) => {
   if (err instanceof AppError) {
      return res.status(err.statusCode).json({ message: err.message });
   }

   return res.status(500).json({ message: "Internal server error" });
});

๐Ÿ‘ฎโ€โ™‚๏ธ 6. Middlewares

foi implementado:

  • authenticateToken โ†’ valida JWT
  • validate() โ†’ valida request body via Zod

๐Ÿงพ 7. DTOs (Data Transfer Objects)

Criados para padronizar body, params e retorno das rotas.

Ex:

  • UserLoginDTO

๐Ÿ“š 8. Logs Centralizados

foi implementado um sistema de logs com:

  • createLog()
  • LogsService
  • LogsController
  • Logs de login, pagamento, webhook, erros, etc.

eles serรฃo gravados em um banco de dados(temporario)


๐Ÿ’ฐ 9. Integraรงรฃo com Mercado Pago

foi implementado:

  • Criar pagamento PIX
  • Buscar pagamento
  • Webhook para confirmaรงรฃo
  • Adicionar GB ao usuรกrio apรณs pagamento aprovado
  • Limpar cooldown apรณs sucesso

๐Ÿ”’ 10. Sistema completo de autenticaรงรฃo

  • Login
  • Criaรงรฃo de cookie seguro
  • Refresh implรญcito
  • Bloqueio de usuรกrio
  • Logs de tentativa de login

๐Ÿงฉ 11. Cupom de Desconto

foi implementado:

  • Validaรงรฃo de cupom
  • Cupom de uso รบnico
  • Cupom com minGb
  • Cupom com validade
  • Cupom por usuรกrio

๐Ÿ“œ Licenรงa

MIT โ€” fique livre para usar e expandir.

About

Sell proxy backend with nodejs/ts

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors