OrderHub é um sistema completo de gerenciamento de pedidos desenvolvido com Spring Boot, integrando pagamentos via Abacate Pay, processamento assíncrono com Kafka e APIs reativas com WebFlux.
src/main/java/com/kipperdev/orderhub/
├── config/ # Configurações (Kafka, Feign, Security, WebFlux)
├── controller/ # Controllers REST e WebFlux
├── dto/ # Data Transfer Objects
├── entity/ # Entidades JPA
├── event/ # Eventos Kafka
├── mapper/ # MapStruct mappers
├── repository/ # Repositórios JPA
├── service/ # Lógica de negócio
├── specification/ # JPA Specifications para filtros
└── OrderhubApplication.java
# Criar pedido
POST /orders
Content-Type: application/json
# Consultar status do pedido
GET /orders/{id}
# Consultar pedidos por email (reativo)
GET /public/orders/customer/{email}/status
# Stream de status em tempo real
GET /public/orders/{id}/status/stream
Accept: text/event-stream
# Listar pedidos com filtros
GET /admin/orders?status=PAID&customerEmail=user@example.com
# Atualizar status do pedido
PUT /admin/orders/{id}/status?status=SHIPPED
# Estatísticas
GET /admin/orders/stats
# Exportar dados
GET /admin/orders/export?format=csv
# Cancelar pedido
POST /admin/orders/{id}/cancel
# Webhook do Abacate Pay
POST /webhook/abacate
Content-Type: application/json
X-Abacate-Signature: {signature}
# Banco de Dados (Produção)
DATABASE_URL=jdbc:postgresql://localhost:5432/orderhub
DATABASE_USERNAME=orderhub
DATABASE_PASSWORD=password
# Kafka
KAFKA_BOOTSTRAP_SERVERS=localhost:9092
# Abacate Pay
ABACATEAPI_TOKEN=your-api-token
ABACATEMOCK_ENABLED=false
ABACATEWEBHOOK_SECRET=your-webhook-secret
ABACATEWEBHOOK_SIGNATURE_ENABLED=true
# Admin
ADMIN_USERNAME=admin
ADMIN_PASSWORD=secure-password
# App
APP_BASE_URL=https://your-domain.com
# Clonar repositório
git clone <repository-url>
cd orderhub
# Executar com Maven
./mvnw spring-boot:run
# Ou com profile específico
./mvnw spring-boot:run -Dspring-boot.run.profiles=prod
# Build
docker build -t orderhub .
# Run
docker run -p 8080:8080 orderhub
# Iniciar infraestrutura Kafka
./scripts/start-kafka-local.sh
# Executar aplicação com Kafka
./mvnw spring-boot:run -Dspring-boot.run.profiles=local-kafka
# Parar infraestrutura Kafka
./scripts/stop-kafka-local.sh
📖 Para setup detalhado do Kafka, veja: docs/KAFKA_LOCAL_SETUP.md
# Executar aplicação sem Kafka (padrão)
./mvnw spring-boot:run
# Ou explicitamente
./mvnw spring-boot:run -Dspring-boot.run.profiles=local
GET /actuator/health
GET /actuator/metrics
URL: http://localhost:8080/h2-console
JDBC URL: jdbc:h2:mem:orderhub
User: sa
Password: (vazio)
orders.created - Pedidos criadospayments.confirmed - Pagamentos confirmadosstock.reserved - Estoque reservadoinvoice.generated - Faturas geradas*.dlt - Dead Letter Topics para falhas{
"orderId": 123,
"customerEmail": "user@example.com",
"customerName": "João Silva",
"totalAmount": 99.90,
"paymentMethod": "PIX",
"createdAt": "2024-01-15T10:30:00",
"items": [
{
"productSku": "PROD-001",
"productName": "Produto Exemplo",
"quantity": 2,
"unitPrice": 49.95,
"totalPrice": 99.90
}
]
}
# Executar todos os testes
./mvnw test
# Testes com profile específico
./mvnw test -Dspring.profiles.active=test
curl -X POST http://localhost:8080/orders \
-H "Content-Type: application/json" \
-d '{
"customer": {
"name": "João Silva",
"email": "joao@example.com",
"phone": "+5511999999999"
},
"items": [
{
"productName": "Produto A",
"productSku": "PROD-A",
"quantity": 2,
"unitPrice": 49.99
}
],
"paymentMethod": "PIX"
}'
curl http://localhost:8080/orders/1
curl -N http://localhost:8080/public/orders/1/status/stream
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Para suporte e dúvidas: - 📧 Email: support@kipperdev.com - 📱 GitHub Issues: Criar Issue - 📖 Documentação: Wiki do Projeto
$ claude mcp add orderhub \
-- python -m otcore.mcp_server <graph>