oms

OMS — Order Management System

Spec-driven, event-sourced order management ecosystem for e-commerce fulfillment. The Order Intake bounded context handles order creation, confirmation, and lifecycle management.

Get Started View API Reference


Key Features

📦 Order Intake Bounded Context

Complete order lifecycle management from creation through fulfillment.

Capabilities:

🏗 Architecture

🎯 Domain-Driven Design


Quick Example

Create an Order

curl -X POST http://localhost:8080/v1/orders \
  -H "Content-Type: application/json" \
  -d '{
    "customer": {
      "firstName": "John",
      "lastName": "Doe",
      "email": "john@example.com",
      "phone": "+1-555-0123"
    },
    "shippingAddress": {
      "street": "123 Main St",
      "city": "San Francisco",
      "state": "CA",
      "postalCode": "94105",
      "country": "US"
    },
    "lines": [
      {
        "sku": "WIDGET-001",
        "productName": "Premium Widget",
        "quantity": 2,
        "unitPrice": {
          "amount": "29.99",
          "currencyCode": "USD"
        }
      }
    ]
  }'

Confirm the Order

curl -X POST http://localhost:8080/v1/orders/{orderId}/confirm

Result: Order transitions to CONFIRMED status and order.confirmed event published to Kafka.


Order State Machine

DRAFT → CONFIRMED → SHIPPED → DELIVERED
  ↓         ↓
CANCELLED  CANCELLED

States:


Event Catalog

Event Kafka Topic Trigger
order.created oms.orders.created Order created
order.confirmed oms.orders.confirmed Order confirmed
order.cancelled oms.orders.cancelled Order cancelled
order.shipped oms.orders.shipped Shipment created
order.delivered oms.orders.delivered Delivery confirmed
order.status_changed oms.orders.status-changed Any status change

Documentation

Getting Started

Architecture

Domain

Events


Part of OMS Ecosystem

Service Purpose Repository
Order Intake Order creation & management mcp-log/oms
Planning Fulfillment planning mcp-log/planning
Fulfillment Pick, pack, ship future
Shipping Carrier integration future

Each bounded context is independently deployable with its own database and event stream.