Desafios Técnicos para Candidatos Technical Code Challenges

Desafio Java - Sistema de Gestão de Pedidos B2B Java Challenge - B2B Order Management System

Contexto

Você foi designado para desenvolver um microserviço crítico para um sistema B2B de gestão de pedidos. Este microserviço será responsável por receber, processar e gerenciar pedidos de parceiros comerciais, com potencial para milhares de requisições simultâneas.

Requisitos Funcionais

  1. Criar uma API REST para gerenciamento de pedidos com os seguintes endpoints:
    • Cadastro de pedidos
    • Consulta de pedidos (por ID, por período, por status)
    • Atualização de status de pedidos
    • Cancelamento de pedidos
  2. Cada pedido deve conter:
    • ID único
    • ID do parceiro
    • Lista de itens (produto, quantidade, preço unitário)
    • Valor total
    • Status (PENDENTE, APROVADO, EM_PROCESSAMENTO, ENVIADO, ENTREGUE, CANCELADO)
    • Data de criação
    • Data de última atualização
  3. Implementar um sistema de créditos para parceiros:
    • Cada parceiro possui um limite de crédito
    • Ao criar um pedido, o sistema deve verificar se o parceiro possui crédito suficiente
    • Ao aprovar um pedido, o sistema deve debitar o valor do crédito do parceiro
  4. Implementar um mecanismo de notificação para mudanças de status de pedidos (simular integração com sistema de mensageria)

Requisitos Técnicos

  • Utilizar Java 17+ e Spring Boot
  • Banco de dados à sua escolha (PostgreSQL ou MongoDB)
  • Documentação da API (Swagger/OpenAPI)
  • Containerização com Docker e docker-compose para execução do projeto
  • Testes automatizados

Entrega

  • Código fonte em repositório Git público
  • README com instruções detalhadas para execução do projeto
  • Docker-compose funcional que permita executar a aplicação com um único comando

Observações

  • O projeto deve ser desenvolvido considerando cenários de alta concorrência
  • A solução deve ser escalável e performática
  • Não é necessário desenvolver interface de usuário, apenas a API REST

Boa sorte!

Context

You have been assigned to develop a critical microservice for a B2B order management system. This microservice will be responsible for receiving, processing, and managing orders from business partners, with the potential for thousands of simultaneous requests.

Functional Requirements

  1. Create a REST API for order management with the following endpoints:
    • Order creation
    • Order queries (by ID, by period, by status)
    • Order status updates
    • Order cancellation
  2. Each order must contain:
    • Unique ID
    • Partner ID
    • List of items (product, quantity, unit price)
    • Total value
    • Status (PENDING, APPROVED, PROCESSING, SHIPPED, DELIVERED, CANCELED)
    • Creation date
    • Last update date
  3. Implement a credit system for partners:
    • Each partner has a credit limit
    • When creating an order, the system must verify if the partner has sufficient credit
    • When approving an order, the system must debit the value from the partner's credit
  4. Implement a notification mechanism for order status changes (simulate integration with a messaging system)

Technical Requirements

  • Use Java 17+ and Spring Boot
  • Database of your choice (PostgreSQL or MongoDB)
  • API documentation (Swagger/OpenAPI)
  • Containerization with Docker and docker-compose for project execution
  • Automated tests

Delivery

  • Source code in a public Git repository
  • README with detailed instructions for running the project
  • Functional docker-compose that allows running the application with a single command

Notes

  • The project should be developed considering high concurrency scenarios
  • The solution must be scalable and performant
  • It is not necessary to develop a user interface, only the REST API

Good luck!

Desafio Kotlin - Sistema de Gestão de Créditos para Parceiros Kotlin Challenge - Partner Credit Management System

Contexto

Sua missão é desenvolver um microserviço responsável pela gestão de créditos de parceiros em uma plataforma B2B. Este sistema será utilizado por milhares de parceiros simultaneamente para reportar vendas e consumir créditos, sendo crítico para a operação do negócio.

Requisitos Funcionais

  1. API REST para gestão de créditos com os seguintes endpoints:
    • Consulta de saldo de créditos por parceiro
    • Adição de créditos para parceiros
    • Consumo de créditos (com validação de saldo)
    • Histórico de transações por parceiro
  2. Sistema de transações com:
    • ID único
    • Tipo (CRÉDITO ou DÉBITO)
    • Valor
    • ID do parceiro
    • Motivo/descrição
    • Data e hora
    • Status (PENDENTE, CONCLUÍDA, FALHA)
  3. Implementar mecanismo de conciliação de transações:
    • Transações podem ficar pendentes por problemas de comunicação
    • O sistema deve ter um processo para verificar e resolver transações pendentes
    • Implementar idempotência para evitar duplicidade de transações
  4. Integração com sistema de notificação:
    • Ao processar transações significativas, notificar um serviço externo (simular com mensageria)

Requisitos Técnicos

  • Utilizar Kotlin e Spring Boot
  • Banco de dados à sua escolha (PostgreSQL ou MongoDB)
  • Documentação da API (Swagger/OpenAPI)
  • Containerização com Docker e docker-compose
  • Testes automatizados

Entrega

  • Código fonte em repositório Git público
  • README com instruções detalhadas para execução do projeto
  • Docker-compose funcional que permita executar a aplicação com um único comando

Observações

  • O sistema deve ser projetado para alta concorrência e evitar race conditions
  • Considere mecanismos de cache para melhorar a performance
  • Implemente tratamento adequado de erros e retry mechanisms
  • Não é necessário desenvolver interface de usuário, apenas a API REST

Boa sorte!

Context

Your mission is to develop a microservice responsible for managing partner credits in a B2B platform. This system will be used by thousands of partners simultaneously to report sales and consume credits, being critical to the business operation.

Functional Requirements

  1. REST API for credit management with the following endpoints:
    • Query credit balance by partner
    • Add credits for partners
    • Consume credits (with balance validation)
    • Transaction history by partner
  2. Transaction system with:
    • Unique ID
    • Type (CREDIT or DEBIT)
    • Value
    • Partner ID
    • Reason/description
    • Date and time
    • Status (PENDING, COMPLETED, FAILED)
  3. Implement transaction reconciliation mechanism:
    • Transactions may remain pending due to communication issues
    • The system must have a process to verify and resolve pending transactions
    • Implement idempotency to avoid transaction duplication
  4. Integration with notification system:
    • When processing significant transactions, notify an external service (simulate with messaging)

Technical Requirements

  • Use Kotlin and Spring Boot
  • Database of your choice (PostgreSQL or MongoDB)
  • API documentation (Swagger/OpenAPI)
  • Containerization with Docker and docker-compose
  • Automated tests

Delivery

  • Source code in a public Git repository
  • README with detailed instructions for running the project
  • Functional docker-compose that allows running the application with a single command

Notes

  • The system should be designed for high concurrency and avoid race conditions
  • Consider caching mechanisms to improve performance
  • Implement proper error handling and retry mechanisms
  • It is not necessary to develop a user interface, only the REST API

Good luck!

Desafio Node.js/TypeScript - Sistema de Orquestração de Eventos B2B Node.js/TypeScript Challenge - B2B Event Orchestration System

Contexto

Você foi designado para desenvolver um microserviço crítico que atua como orquestrador de eventos em uma plataforma B2B. Este serviço receberá eventos de parceiros comerciais, validará, processará e distribuirá para outros microserviços, lidando com milhares de eventos simultâneos.

Requisitos Funcionais

  1. API REST para recebimento e processamento de eventos:
    • Endpoint para receber eventos de parceiros
    • Consulta de status de processamento de eventos
    • Reprocessamento de eventos com falha
    • Estatísticas de processamento
  2. Cada evento deve conter:
    • ID único
    • Tipo de evento (VENDA, DEVOLUÇÃO, ATUALIZAÇÃO_ESTOQUE, etc.)
    • Dados do evento (payload JSON)
    • Origem (ID do parceiro)
    • Timestamp
    • Status de processamento
  3. Implementar fluxo de processamento:
    • Validação do evento (formato, campos obrigatórios, regras de negócio)
    • Enriquecimento de dados (adicionar informações relevantes)
    • Distribuição para serviços downstream (simular com filas de mensagens)
    • Persistência do histórico de processamento
  4. Sistema de retry e dead-letter:
    • Implementar mecanismo de retry para eventos com falha
    • Após N tentativas, mover para uma fila de dead-letter
    • Permitir reprocessamento manual de eventos na dead-letter

Requisitos Técnicos

  • Utilizar Node.js com TypeScript
  • Banco de dados à sua escolha (PostgreSQL ou MongoDB)
  • Documentação da API (Swagger/OpenAPI)
  • Containerização com Docker e docker-compose
  • Testes automatizados

Entrega

  • Código fonte em repositório Git público
  • README com instruções detalhadas para execução do projeto
  • Docker-compose funcional que permita executar a aplicação com um único comando

Observações

  • O sistema deve ser projetado para alta concorrência
  • Implementar mecanismos de rate limiting para proteger a API
  • Considerar aspectos de observabilidade (logs estruturados, métricas)
  • Implementar idempotência para garantir processamento único de eventos
  • Não é necessário desenvolver interface de usuário, apenas a API REST

Boa sorte!

Context

You have been assigned to develop a critical microservice that acts as an event orchestrator in a B2B platform. This service will receive events from business partners, validate, process, and distribute them to other microservices, handling thousands of simultaneous events.

Functional Requirements

  1. REST API for receiving and processing events:
    • Endpoint to receive events from partners
    • Query event processing status
    • Reprocess failed events
    • Processing statistics
  2. Each event must contain:
    • Unique ID
    • Event type (SALE, RETURN, INVENTORY_UPDATE, etc.)
    • Event data (JSON payload)
    • Source (Partner ID)
    • Timestamp
    • Processing status
  3. Implement processing flow:
    • Event validation (format, required fields, business rules)
    • Data enrichment (add relevant information)
    • Distribution to downstream services (simulate with message queues)
    • Persistence of processing history
  4. Retry and dead-letter system:
    • Implement retry mechanism for failed events
    • After N attempts, move to a dead-letter queue
    • Allow manual reprocessing of events in the dead-letter queue

Technical Requirements

  • Use Node.js with TypeScript
  • Database of your choice (PostgreSQL or MongoDB)
  • API documentation (Swagger/OpenAPI)
  • Containerization with Docker and docker-compose
  • Automated tests

Delivery

  • Source code in a public Git repository
  • README with detailed instructions for running the project
  • Functional docker-compose that allows running the application with a single command

Notes

  • The system should be designed for high concurrency
  • Implement rate limiting mechanisms to protect the API
  • Consider observability aspects (structured logs, metrics)
  • Implement idempotency to ensure unique event processing
  • It is not necessary to develop a user interface, only the REST API

Good luck!

Dicas para se destacar Tips to Stand Out