Skip to content

Objetivo Geral: Desenvolver uma mini API de gestão de vouchers (cupons) que permita criar e resgatar vouchers promocionais. O desafio foca em modelar o domínio de vouchers seguindo princípios de Domain-Driven Design (DDD), expondo endpoints HTTP para criação e utilização de cupons, documentados no Swagger

Notifications You must be signed in to change notification settings

jobnow/api-voucher

Repository files navigation

API de Gestão de Vouchers

Mini API para criação e resgate de vouchers promocionais, seguindo princípios de Domain-Driven Design (DDD) e boas práticas com NestJS.

Sumário

Funcionalidades

  • Criar voucher promocional (código único, valor, tipo, expiração opcional)
  • Resgatar voucher (impede múltiplos usos, valida expiração e existência)

Como rodar o projeto

cd api-voucher
npm install
npm run start:dev

A API estará disponível em http://localhost:3000.

Testes

Unitários (Vitest)

npx vitest run

E2E (Jest)

npm run test:e2e

Documentação Swagger

Acesse a documentação interativa em: http://localhost:3000/swagger

Decisões de Arquitetura

  • DDD: Separação clara em camadas: Domain (entidade, repositório), Application (use-cases), Infrastructure (repositório in-memory), Interface (controllers, DTOs, módulo).
  • Validação: Uso de class-validator nos DTOs para garantir integridade dos dados de entrada.
  • Swagger: Documentação automática dos endpoints com exemplos e schemas.
  • Testes: Unitários para lógica de domínio e use-cases (Vitest). E2E para endpoints reais (Jest/Supertest).
  • Persistência: Implementação in-memory para simplificação, facilmente substituível por banco real.
  • Tratamento de erros: Respostas HTTP adequadas (400, 404) para falhas de negócio.

Estrutura de Pastas

src/
  domain/           # Entidade Voucher e interface do repositório
  application/      # Use-cases (criação e resgate)
  infrastructure/   # Repositório in-memory
  vouchers/         # Controller, DTOs, módulo

Exemplos de Requisições

Criar voucher

POST /vouchers
{
  "code": "PROMO10",
  "value": 10,
  "type": "fixed",
  "expiresAt": "2024-12-31T23:59:59.000Z"
}

Resgatar voucher

POST /vouchers/PROMO10/redeem

Projeto desenvolvido para avaliação técnica. Dúvidas ou sugestões, fique à vontade para entrar em contato.

About

Objetivo Geral: Desenvolver uma mini API de gestão de vouchers (cupons) que permita criar e resgatar vouchers promocionais. O desafio foca em modelar o domínio de vouchers seguindo princípios de Domain-Driven Design (DDD), expondo endpoints HTTP para criação e utilização de cupons, documentados no Swagger

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published