@eventcatalog/create-eventcatalog 4.3.3 → 4.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (458) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +1 -1
  3. package/templates/default/README-template.md +3 -2
  4. package/templates/default/_data/visualizer-layouts/domains-systems-context/catalog/1.0.0.json +31 -0
  5. package/templates/default/_data/visualizer-layouts/domains-systems-context/customer/1.0.0.json +23 -0
  6. package/templates/default/_data/visualizer-layouts/system-context-map/system-context-map/1.0.0.json +91 -0
  7. package/templates/default/_data/visualizer-layouts/systems-context/customer-management-system/1.0.0.json +23 -0
  8. package/templates/default/components/footer.astro +0 -1
  9. package/templates/default/domains/Catalog/entities/category/index.mdx +36 -0
  10. package/templates/default/domains/Catalog/entities/product/index.mdx +37 -0
  11. package/templates/default/domains/Catalog/entities/product-variant/index.mdx +35 -0
  12. package/templates/default/domains/Catalog/entities/search-document/index.mdx +35 -0
  13. package/templates/default/domains/Catalog/index.mdx +65 -0
  14. package/templates/default/domains/Catalog/systems/product-catalog-system/adrs/adr-001-use-transactional-outbox/index.mdx +43 -0
  15. package/templates/default/domains/Catalog/systems/product-catalog-system/adrs/adr-002-postgres-as-system-of-record/index.mdx +40 -0
  16. package/templates/default/domains/Catalog/systems/product-catalog-system/adrs/adr-003-offload-async-work-to-worker/index.mdx +41 -0
  17. package/templates/default/domains/Catalog/systems/product-catalog-system/containers/product-database/index.mdx +45 -0
  18. package/templates/default/domains/Catalog/systems/product-catalog-system/containers/product-database/schema.sql +33 -0
  19. package/templates/default/domains/Catalog/systems/product-catalog-system/index.mdx +72 -0
  20. package/templates/default/domains/Catalog/systems/product-catalog-system/services/ProductAPI/commands/CreateProduct/index.mdx +32 -0
  21. package/templates/default/domains/Catalog/systems/product-catalog-system/services/ProductAPI/commands/CreateProduct/schema.json +41 -0
  22. package/templates/default/domains/Catalog/systems/product-catalog-system/services/ProductAPI/commands/DeleteProduct/index.mdx +32 -0
  23. package/templates/default/domains/Catalog/systems/product-catalog-system/services/ProductAPI/commands/DeleteProduct/schema.json +19 -0
  24. package/templates/default/domains/Catalog/systems/product-catalog-system/services/ProductAPI/commands/UpdateProduct/index.mdx +32 -0
  25. package/templates/default/domains/Catalog/systems/product-catalog-system/services/ProductAPI/commands/UpdateProduct/schema.json +42 -0
  26. package/templates/default/domains/Catalog/systems/product-catalog-system/services/ProductAPI/events/ProductCreated/index.mdx +29 -0
  27. package/templates/default/domains/Catalog/systems/product-catalog-system/services/ProductAPI/events/ProductCreated/schema.json +62 -0
  28. package/templates/default/domains/Catalog/systems/product-catalog-system/services/ProductAPI/events/ProductDeleted/index.mdx +29 -0
  29. package/templates/default/domains/Catalog/systems/product-catalog-system/services/ProductAPI/events/ProductDeleted/schema.json +29 -0
  30. package/templates/default/domains/Catalog/systems/product-catalog-system/services/ProductAPI/events/ProductUpdated/index.mdx +29 -0
  31. package/templates/default/domains/Catalog/systems/product-catalog-system/services/ProductAPI/events/ProductUpdated/schema.json +55 -0
  32. package/templates/default/domains/Catalog/systems/product-catalog-system/services/ProductAPI/index.mdx +69 -0
  33. package/templates/default/domains/Catalog/systems/product-catalog-system/services/ProductAPI/openapi.yml +219 -0
  34. package/templates/default/domains/Catalog/systems/product-catalog-system/services/ProductAPI/queries/GetProduct/index.mdx +32 -0
  35. package/templates/default/domains/Catalog/systems/product-catalog-system/services/ProductAPI/queries/GetProduct/schema.json +56 -0
  36. package/templates/default/domains/Catalog/systems/product-catalog-system/services/ProductSearchPublisher/index.mdx +56 -0
  37. package/templates/default/domains/Catalog/systems/product-catalog-system/services/ProductWorker/index.mdx +48 -0
  38. package/templates/default/domains/Catalog/systems/search-system/containers/search-index/index.mdx +39 -0
  39. package/templates/default/domains/Catalog/systems/search-system/flows/ProductSearchIndexing/index.mdx +130 -0
  40. package/templates/default/domains/Catalog/systems/search-system/index.mdx +66 -0
  41. package/templates/default/domains/Catalog/systems/search-system/services/SearchAPI/index.mdx +44 -0
  42. package/templates/default/domains/Catalog/systems/search-system/services/SearchAPI/openapi.yml +138 -0
  43. package/templates/default/domains/Catalog/systems/search-system/services/SearchAPI/queries/SearchProducts/index.mdx +32 -0
  44. package/templates/default/domains/Catalog/systems/search-system/services/SearchAPI/queries/SearchProducts/schema.json +108 -0
  45. package/templates/default/domains/Catalog/systems/search-system/services/SearchIndexer/index.mdx +54 -0
  46. package/templates/default/domains/Catalog/ubiquitous-language.mdx +54 -0
  47. package/templates/default/domains/Customer/entities/authentication-session/index.mdx +35 -0
  48. package/templates/default/domains/Customer/entities/customer-account/index.mdx +36 -0
  49. package/templates/default/domains/Customer/entities/customer-address/index.mdx +35 -0
  50. package/templates/default/domains/Customer/entities/customer-profile/index.mdx +33 -0
  51. package/templates/default/domains/Customer/index.mdx +67 -0
  52. package/templates/default/domains/Customer/systems/customer-management-system/containers/customer-database/index.mdx +43 -0
  53. package/templates/default/domains/Customer/systems/customer-management-system/containers/customer-database/schema.sql +14 -0
  54. package/templates/default/domains/Customer/systems/customer-management-system/index.mdx +60 -0
  55. package/templates/default/domains/Customer/systems/customer-management-system/services/CustomerAPI/commands/RegisterCustomer/index.mdx +32 -0
  56. package/templates/default/domains/Customer/systems/customer-management-system/services/CustomerAPI/commands/RegisterCustomer/schema.json +24 -0
  57. package/templates/default/domains/Customer/systems/customer-management-system/services/CustomerAPI/commands/UpdateCustomer/index.mdx +32 -0
  58. package/templates/default/domains/Customer/systems/customer-management-system/services/CustomerAPI/commands/UpdateCustomer/schema.json +29 -0
  59. package/templates/default/domains/Customer/systems/customer-management-system/services/CustomerAPI/events/CustomerRegistered/index.mdx +29 -0
  60. package/templates/default/domains/Customer/systems/customer-management-system/services/CustomerAPI/events/CustomerRegistered/schema.json +45 -0
  61. package/templates/default/domains/Customer/systems/customer-management-system/services/CustomerAPI/events/CustomerUpdated/index.mdx +29 -0
  62. package/templates/default/domains/Customer/systems/customer-management-system/services/CustomerAPI/events/CustomerUpdated/schema.json +42 -0
  63. package/templates/default/domains/Customer/systems/customer-management-system/services/CustomerAPI/index.mdx +72 -0
  64. package/templates/default/domains/Customer/systems/customer-management-system/services/CustomerAPI/openapi.yml +164 -0
  65. package/templates/default/domains/Customer/systems/customer-management-system/services/CustomerAPI/queries/GetCustomer/index.mdx +32 -0
  66. package/templates/default/domains/Customer/systems/customer-management-system/services/CustomerAPI/queries/GetCustomer/schema.json +47 -0
  67. package/templates/default/domains/Customer/systems/identity-provider/containers/user-directory/index.mdx +36 -0
  68. package/templates/default/domains/Customer/systems/identity-provider/index.mdx +54 -0
  69. package/templates/default/domains/Customer/systems/identity-provider/services/OAuthAPI/commands/AuthenticateCustomer/index.mdx +32 -0
  70. package/templates/default/domains/Customer/systems/identity-provider/services/OAuthAPI/commands/AuthenticateCustomer/schema.json +41 -0
  71. package/templates/default/domains/Customer/systems/identity-provider/services/OAuthAPI/events/CustomerAuthenticated/index.mdx +29 -0
  72. package/templates/default/domains/Customer/systems/identity-provider/services/OAuthAPI/events/CustomerAuthenticated/schema.json +33 -0
  73. package/templates/default/domains/Customer/systems/identity-provider/services/OAuthAPI/index.mdx +59 -0
  74. package/templates/default/domains/Customer/ubiquitous-language.mdx +48 -0
  75. package/templates/default/domains/Fulfilment/entities/inventory-reservation/index.mdx +39 -0
  76. package/templates/default/domains/Fulfilment/entities/shipment/index.mdx +36 -0
  77. package/templates/default/domains/Fulfilment/entities/stock-item/index.mdx +36 -0
  78. package/templates/default/domains/Fulfilment/entities/warehouse-pick/index.mdx +35 -0
  79. package/templates/default/domains/Fulfilment/index.mdx +83 -0
  80. package/templates/default/domains/Fulfilment/systems/carrier/index.mdx +52 -0
  81. package/templates/default/domains/Fulfilment/systems/carrier/services/CarrierShippingAPI/index.mdx +40 -0
  82. package/templates/default/domains/Fulfilment/systems/carrier/services/CarrierTrackingAPI/events/ShipmentCreated/index.mdx +29 -0
  83. package/templates/default/domains/Fulfilment/systems/carrier/services/CarrierTrackingAPI/events/ShipmentCreated/schema.json +15 -0
  84. package/templates/default/domains/Fulfilment/systems/carrier/services/CarrierTrackingAPI/events/ShipmentDelivered/index.mdx +29 -0
  85. package/templates/default/domains/Fulfilment/systems/carrier/services/CarrierTrackingAPI/events/ShipmentDelivered/schema.json +13 -0
  86. package/templates/default/domains/Fulfilment/systems/carrier/services/CarrierTrackingAPI/events/ShipmentFailed/index.mdx +29 -0
  87. package/templates/default/domains/Fulfilment/systems/carrier/services/CarrierTrackingAPI/events/ShipmentFailed/schema.json +16 -0
  88. package/templates/default/domains/Fulfilment/systems/carrier/services/CarrierTrackingAPI/index.mdx +44 -0
  89. package/templates/default/domains/Fulfilment/systems/inventory-system/containers/inventory-database/index.mdx +35 -0
  90. package/templates/default/domains/Fulfilment/systems/inventory-system/containers/inventory-database/schema.sql +26 -0
  91. package/templates/default/domains/Fulfilment/systems/inventory-system/index.mdx +49 -0
  92. package/templates/default/domains/Fulfilment/systems/inventory-system/services/InventoryService/commands/ReleaseInventory/index.mdx +32 -0
  93. package/templates/default/domains/Fulfilment/systems/inventory-system/services/InventoryService/commands/ReleaseInventory/schema.json +14 -0
  94. package/templates/default/domains/Fulfilment/systems/inventory-system/services/InventoryService/events/InventoryReserved/index.mdx +29 -0
  95. package/templates/default/domains/Fulfilment/systems/inventory-system/services/InventoryService/events/InventoryReserved/schema.json +24 -0
  96. package/templates/default/domains/Fulfilment/systems/inventory-system/services/InventoryService/events/InventoryUnavailable/index.mdx +29 -0
  97. package/templates/default/domains/Fulfilment/systems/inventory-system/services/InventoryService/events/InventoryUnavailable/schema.json +24 -0
  98. package/templates/default/domains/Fulfilment/systems/inventory-system/services/InventoryService/index.mdx +67 -0
  99. package/templates/default/domains/Fulfilment/systems/inventory-system/services/InventoryService/queries/GetStockLevel/index.mdx +32 -0
  100. package/templates/default/domains/Fulfilment/systems/inventory-system/services/InventoryService/queries/GetStockLevel/schema.json +25 -0
  101. package/templates/default/domains/Fulfilment/systems/shipping-system/index.mdx +47 -0
  102. package/templates/default/domains/Fulfilment/systems/shipping-system/services/CarrierAdapter/commands/CreateShipment/index.mdx +32 -0
  103. package/templates/default/domains/Fulfilment/systems/shipping-system/services/CarrierAdapter/commands/CreateShipment/schema.json +26 -0
  104. package/templates/default/domains/Fulfilment/systems/shipping-system/services/CarrierAdapter/index.mdx +40 -0
  105. package/templates/default/domains/Fulfilment/systems/shipping-system/services/ShippingAPI/index.mdx +40 -0
  106. package/templates/default/domains/Fulfilment/systems/warehouse-system/containers/warehouse-database/index.mdx +35 -0
  107. package/templates/default/domains/Fulfilment/systems/warehouse-system/containers/warehouse-database/schema.sql +21 -0
  108. package/templates/default/domains/Fulfilment/systems/warehouse-system/index.mdx +53 -0
  109. package/templates/default/domains/Fulfilment/systems/warehouse-system/services/PickingWorker/events/OrderPacked/index.mdx +29 -0
  110. package/templates/default/domains/Fulfilment/systems/warehouse-system/services/PickingWorker/events/OrderPacked/schema.json +13 -0
  111. package/templates/default/domains/Fulfilment/systems/warehouse-system/services/PickingWorker/index.mdx +44 -0
  112. package/templates/default/domains/Fulfilment/systems/warehouse-system/services/WarehouseService/events/OrderReadyForShipping/index.mdx +29 -0
  113. package/templates/default/domains/Fulfilment/systems/warehouse-system/services/WarehouseService/events/OrderReadyForShipping/schema.json +23 -0
  114. package/templates/default/domains/Fulfilment/systems/warehouse-system/services/WarehouseService/index.mdx +53 -0
  115. package/templates/default/domains/Fulfilment/ubiquitous-language.mdx +44 -0
  116. package/templates/default/domains/Ordering/entities/checkout-session/index.mdx +36 -0
  117. package/templates/default/domains/Ordering/entities/order/index.mdx +36 -0
  118. package/templates/default/domains/Ordering/entities/order-line/index.mdx +38 -0
  119. package/templates/default/domains/Ordering/entities/order-status-history/index.mdx +35 -0
  120. package/templates/default/domains/Ordering/flows/PlaceAnOrder/index.mdx +158 -0
  121. package/templates/default/domains/Ordering/index.mdx +70 -0
  122. package/templates/default/domains/Ordering/systems/checkout-system/flows/CheckoutSaga/index.mdx +101 -0
  123. package/templates/default/domains/Ordering/systems/checkout-system/index.mdx +57 -0
  124. package/templates/default/domains/Ordering/systems/checkout-system/services/CheckoutAPI/index.mdx +53 -0
  125. package/templates/default/domains/Ordering/systems/checkout-system/services/CheckoutOrchestrator/commands/AuthorizePayment/index.mdx +32 -0
  126. package/templates/default/domains/Ordering/systems/checkout-system/services/CheckoutOrchestrator/commands/AuthorizePayment/schema.json +29 -0
  127. package/templates/default/domains/Ordering/systems/checkout-system/services/CheckoutOrchestrator/commands/ReserveInventory/index.mdx +32 -0
  128. package/templates/default/domains/Ordering/systems/checkout-system/services/CheckoutOrchestrator/commands/ReserveInventory/schema.json +37 -0
  129. package/templates/default/domains/Ordering/systems/checkout-system/services/CheckoutOrchestrator/index.mdx +59 -0
  130. package/templates/default/domains/Ordering/systems/order-management-system/containers/order-database/index.mdx +39 -0
  131. package/templates/default/domains/Ordering/systems/order-management-system/containers/order-database/schema.sql +24 -0
  132. package/templates/default/domains/Ordering/systems/order-management-system/flows/OrderCancellation/index.mdx +105 -0
  133. package/templates/default/domains/Ordering/systems/order-management-system/index.mdx +53 -0
  134. package/templates/default/domains/Ordering/systems/order-management-system/services/OrderService/asyncapi.yml +233 -0
  135. package/templates/default/domains/Ordering/systems/order-management-system/services/OrderService/commands/CancelOrder/index.mdx +32 -0
  136. package/templates/default/domains/Ordering/systems/order-management-system/services/OrderService/commands/CancelOrder/schema.json +19 -0
  137. package/templates/default/domains/Ordering/systems/order-management-system/services/OrderService/commands/CreateOrder/index.mdx +32 -0
  138. package/templates/default/domains/Ordering/systems/order-management-system/services/OrderService/commands/CreateOrder/schema.json +55 -0
  139. package/templates/default/domains/Ordering/systems/order-management-system/services/OrderService/events/OrderCancelled/index.mdx +29 -0
  140. package/templates/default/domains/Ordering/systems/order-management-system/services/OrderService/events/OrderCancelled/schema.json +25 -0
  141. package/templates/default/domains/Ordering/systems/order-management-system/services/OrderService/events/OrderCompleted/index.mdx +29 -0
  142. package/templates/default/domains/Ordering/systems/order-management-system/services/OrderService/events/OrderCompleted/schema.json +21 -0
  143. package/templates/default/domains/Ordering/systems/order-management-system/services/OrderService/events/OrderCreated/index.mdx +29 -0
  144. package/templates/default/domains/Ordering/systems/order-management-system/services/OrderService/events/OrderCreated/schema.json +29 -0
  145. package/templates/default/domains/Ordering/systems/order-management-system/services/OrderService/index.mdx +74 -0
  146. package/templates/default/domains/Ordering/systems/order-management-system/services/OrderService/queries/GetOrder/index.mdx +32 -0
  147. package/templates/default/domains/Ordering/systems/order-management-system/services/OrderService/queries/GetOrder/schema.json +64 -0
  148. package/templates/default/domains/Ordering/ubiquitous-language.mdx +53 -0
  149. package/templates/default/domains/Payments/entities/fraud-check/index.mdx +39 -0
  150. package/templates/default/domains/Payments/entities/payment/index.mdx +36 -0
  151. package/templates/default/domains/Payments/entities/payment-authorization/index.mdx +35 -0
  152. package/templates/default/domains/Payments/entities/refund/index.mdx +36 -0
  153. package/templates/default/domains/Payments/index.mdx +69 -0
  154. package/templates/default/domains/Payments/systems/fraud-detection/index.mdx +49 -0
  155. package/templates/default/domains/Payments/systems/fraud-detection/services/FraudAPI/events/FraudCheckFailed/index.mdx +29 -0
  156. package/templates/default/domains/Payments/systems/fraud-detection/services/FraudAPI/events/FraudCheckFailed/schema.json +22 -0
  157. package/templates/default/domains/Payments/systems/fraud-detection/services/FraudAPI/events/FraudCheckPassed/index.mdx +29 -0
  158. package/templates/default/domains/Payments/systems/fraud-detection/services/FraudAPI/events/FraudCheckPassed/schema.json +18 -0
  159. package/templates/default/domains/Payments/systems/fraud-detection/services/FraudAPI/index.mdx +51 -0
  160. package/templates/default/domains/Payments/systems/payment-processing-system/containers/payment-database/index.mdx +39 -0
  161. package/templates/default/domains/Payments/systems/payment-processing-system/containers/payment-database/schema.sql +25 -0
  162. package/templates/default/domains/Payments/systems/payment-processing-system/index.mdx +53 -0
  163. package/templates/default/domains/Payments/systems/payment-processing-system/services/PaymentAPI/index.mdx +51 -0
  164. package/templates/default/domains/Payments/systems/payment-processing-system/services/PaymentWorker/events/PaymentRequested/index.mdx +29 -0
  165. package/templates/default/domains/Payments/systems/payment-processing-system/services/PaymentWorker/events/PaymentRequested/schema.json +19 -0
  166. package/templates/default/domains/Payments/systems/payment-processing-system/services/PaymentWorker/events/RefundRequested/index.mdx +29 -0
  167. package/templates/default/domains/Payments/systems/payment-processing-system/services/PaymentWorker/events/RefundRequested/schema.json +20 -0
  168. package/templates/default/domains/Payments/systems/payment-processing-system/services/PaymentWorker/index.mdx +66 -0
  169. package/templates/default/domains/Payments/systems/stripe/index.mdx +52 -0
  170. package/templates/default/domains/Payments/systems/stripe/services/StripePaymentsAPI/index.mdx +42 -0
  171. package/templates/default/domains/Payments/systems/stripe/services/StripeWebhookEndpoint/events/PaymentFailed/index.mdx +29 -0
  172. package/templates/default/domains/Payments/systems/stripe/services/StripeWebhookEndpoint/events/PaymentFailed/schema.json +16 -0
  173. package/templates/default/domains/Payments/systems/stripe/services/StripeWebhookEndpoint/events/PaymentSucceeded/index.mdx +29 -0
  174. package/templates/default/domains/Payments/systems/stripe/services/StripeWebhookEndpoint/events/PaymentSucceeded/schema.json +15 -0
  175. package/templates/default/domains/Payments/systems/stripe/services/StripeWebhookEndpoint/events/RefundProcessed/index.mdx +29 -0
  176. package/templates/default/domains/Payments/systems/stripe/services/StripeWebhookEndpoint/events/RefundProcessed/schema.json +14 -0
  177. package/templates/default/domains/Payments/systems/stripe/services/StripeWebhookEndpoint/index.mdx +44 -0
  178. package/templates/default/domains/Payments/ubiquitous-language.mdx +41 -0
  179. package/templates/default/domains/Reviews/asyncapi.yml +181 -0
  180. package/templates/default/domains/Reviews/containers/rating-cache/index.mdx +29 -0
  181. package/templates/default/domains/Reviews/containers/review-database/index.mdx +33 -0
  182. package/templates/default/domains/Reviews/entities/moderation-decision/index.mdx +38 -0
  183. package/templates/default/domains/Reviews/entities/rating-summary/index.mdx +35 -0
  184. package/templates/default/domains/Reviews/entities/review/index.mdx +63 -0
  185. package/templates/default/domains/Reviews/entities/review-flag/index.mdx +35 -0
  186. package/templates/default/domains/Reviews/entities/review-vote/index.mdx +38 -0
  187. package/templates/default/domains/Reviews/flows/review-submission/index.mdx +120 -0
  188. package/templates/default/domains/Reviews/index.mdx +93 -0
  189. package/templates/default/domains/Reviews/openapi.yml +209 -0
  190. package/templates/default/domains/Reviews/services/RatingAggregator/events/rating-updated/index.mdx +29 -0
  191. package/templates/default/domains/Reviews/services/RatingAggregator/events/rating-updated/schema.json +12 -0
  192. package/templates/default/domains/Reviews/services/RatingAggregator/index.mdx +47 -0
  193. package/templates/default/domains/Reviews/services/ReviewAPI/commands/flag-review/index.mdx +29 -0
  194. package/templates/default/domains/Reviews/services/ReviewAPI/commands/flag-review/schema.json +13 -0
  195. package/templates/default/domains/Reviews/services/ReviewAPI/commands/submit-review/index.mdx +29 -0
  196. package/templates/default/domains/Reviews/services/ReviewAPI/commands/submit-review/schema.json +15 -0
  197. package/templates/default/domains/Reviews/services/ReviewAPI/commands/vote-review-helpful/index.mdx +29 -0
  198. package/templates/default/domains/Reviews/services/ReviewAPI/commands/vote-review-helpful/schema.json +12 -0
  199. package/templates/default/domains/Reviews/services/ReviewAPI/events/review-flagged/index.mdx +29 -0
  200. package/templates/default/domains/Reviews/services/ReviewAPI/events/review-flagged/schema.json +13 -0
  201. package/templates/default/domains/Reviews/services/ReviewAPI/events/review-helpful-voted/index.mdx +29 -0
  202. package/templates/default/domains/Reviews/services/ReviewAPI/events/review-helpful-voted/schema.json +12 -0
  203. package/templates/default/domains/Reviews/services/ReviewAPI/events/review-submitted/index.mdx +29 -0
  204. package/templates/default/domains/Reviews/services/ReviewAPI/events/review-submitted/schema.json +15 -0
  205. package/templates/default/domains/Reviews/services/ReviewAPI/index.mdx +58 -0
  206. package/templates/default/domains/Reviews/services/ReviewAPI/queries/get-product-reviews/index.mdx +24 -0
  207. package/templates/default/domains/Reviews/services/ReviewAPI/queries/get-product-reviews/schema.json +12 -0
  208. package/templates/default/domains/Reviews/services/ReviewModerationWorker/events/review-published/index.mdx +29 -0
  209. package/templates/default/domains/Reviews/services/ReviewModerationWorker/events/review-published/schema.json +13 -0
  210. package/templates/default/domains/Reviews/services/ReviewModerationWorker/events/review-rejected/index.mdx +29 -0
  211. package/templates/default/domains/Reviews/services/ReviewModerationWorker/events/review-rejected/schema.json +12 -0
  212. package/templates/default/domains/Reviews/services/ReviewModerationWorker/index.mdx +50 -0
  213. package/templates/default/domains/Shopping/entities/cart/index.mdx +40 -0
  214. package/templates/default/domains/Shopping/entities/cart-item/index.mdx +38 -0
  215. package/templates/default/domains/Shopping/entities/discount/index.mdx +35 -0
  216. package/templates/default/domains/Shopping/entities/promotion/index.mdx +40 -0
  217. package/templates/default/domains/Shopping/index.mdx +67 -0
  218. package/templates/default/domains/Shopping/systems/cart-system/containers/cart-database/index.mdx +39 -0
  219. package/templates/default/domains/Shopping/systems/cart-system/containers/cart-database/schema.sql +22 -0
  220. package/templates/default/domains/Shopping/systems/cart-system/index.mdx +53 -0
  221. package/templates/default/domains/Shopping/systems/cart-system/services/CartAPI/commands/AddItemToCart/index.mdx +32 -0
  222. package/templates/default/domains/Shopping/systems/cart-system/services/CartAPI/commands/AddItemToCart/schema.json +25 -0
  223. package/templates/default/domains/Shopping/systems/cart-system/services/CartAPI/commands/CheckoutCart/index.mdx +32 -0
  224. package/templates/default/domains/Shopping/systems/cart-system/services/CartAPI/commands/CheckoutCart/schema.json +23 -0
  225. package/templates/default/domains/Shopping/systems/cart-system/services/CartAPI/commands/RemoveItemFromCart/index.mdx +32 -0
  226. package/templates/default/domains/Shopping/systems/cart-system/services/CartAPI/commands/RemoveItemFromCart/schema.json +24 -0
  227. package/templates/default/domains/Shopping/systems/cart-system/services/CartAPI/events/CartCheckedOut/index.mdx +29 -0
  228. package/templates/default/domains/Shopping/systems/cart-system/services/CartAPI/events/CartCheckedOut/schema.json +62 -0
  229. package/templates/default/domains/Shopping/systems/cart-system/services/CartAPI/index.mdx +72 -0
  230. package/templates/default/domains/Shopping/systems/cart-system/services/CartAPI/openapi.yml +200 -0
  231. package/templates/default/domains/Shopping/systems/promotion-system/containers/promotion-database/index.mdx +40 -0
  232. package/templates/default/domains/Shopping/systems/promotion-system/containers/promotion-database/schema.sql +21 -0
  233. package/templates/default/domains/Shopping/systems/promotion-system/index.mdx +48 -0
  234. package/templates/default/domains/Shopping/systems/promotion-system/services/PromotionService/commands/CalculateDiscount/index.mdx +32 -0
  235. package/templates/default/domains/Shopping/systems/promotion-system/services/PromotionService/commands/CalculateDiscount/schema.json +53 -0
  236. package/templates/default/domains/Shopping/systems/promotion-system/services/PromotionService/events/DiscountCalculated/index.mdx +29 -0
  237. package/templates/default/domains/Shopping/systems/promotion-system/services/PromotionService/events/DiscountCalculated/schema.json +37 -0
  238. package/templates/default/domains/Shopping/systems/promotion-system/services/PromotionService/index.mdx +59 -0
  239. package/templates/default/domains/Shopping/ubiquitous-language.mdx +48 -0
  240. package/templates/default/eventcatalog.config.js +13 -0
  241. package/templates/default/pages/homepage.astro +109 -0
  242. package/templates/default/public/icons/analytics/clickhouse.svg +1 -0
  243. package/templates/default/public/icons/cache/redis.svg +1 -0
  244. package/templates/default/public/icons/database/postgresql.svg +1 -0
  245. package/templates/default/public/icons/languages/go.svg +1 -0
  246. package/templates/default/public/icons/languages/java.svg +1 -0
  247. package/templates/default/public/icons/languages/nodejs.svg +1 -0
  248. package/templates/default/public/icons/payments/stripe.svg +1 -0
  249. package/templates/default/teams/customer-platform.mdx +18 -0
  250. package/templates/default/teams/fulfilment-platform.mdx +20 -0
  251. package/templates/default/teams/ordering-platform.mdx +18 -0
  252. package/templates/default/teams/payments-platform.mdx +18 -0
  253. package/templates/default/teams/product-platform.mdx +20 -0
  254. package/templates/default/teams/reviews-platform.mdx +20 -0
  255. package/templates/default/teams/search-platform.mdx +19 -0
  256. package/templates/default/teams/shopping-platform.mdx +18 -0
  257. package/templates/default/users/dboyne.mdx +1 -1
  258. package/templates/default/channels/inventory.{env}.events/index.mdx +0 -159
  259. package/templates/default/channels/orders.{env}.events/index.mdx +0 -85
  260. package/templates/default/channels/payment.{env}.events/index.mdx +0 -89
  261. package/templates/default/domains/E-Commerce/index.mdx +0 -140
  262. package/templates/default/domains/E-Commerce/ubiquitous-language.mdx +0 -87
  263. package/templates/default/domains/Orders/changelog.mdx +0 -7
  264. package/templates/default/domains/Orders/entities/CartItem/index.mdx +0 -124
  265. package/templates/default/domains/Orders/entities/Customer/index.mdx +0 -59
  266. package/templates/default/domains/Orders/entities/Order/index.mdx +0 -98
  267. package/templates/default/domains/Orders/entities/OrderItem/index.mdx +0 -62
  268. package/templates/default/domains/Orders/entities/ShoppingCart/index.mdx +0 -151
  269. package/templates/default/domains/Orders/index.mdx +0 -117
  270. package/templates/default/domains/Orders/services/InventoryService/changelog.mdx +0 -7
  271. package/templates/default/domains/Orders/services/InventoryService/channels/inventory-dlq/index.mdx +0 -13
  272. package/templates/default/domains/Orders/services/InventoryService/channels/inventory-queue/index.mdx +0 -13
  273. package/templates/default/domains/Orders/services/InventoryService/commands/AddInventory/index.mdx +0 -45
  274. package/templates/default/domains/Orders/services/InventoryService/commands/AddInventory/schema.json +0 -28
  275. package/templates/default/domains/Orders/services/InventoryService/commands/PlaceOrder/index.mdx +0 -34
  276. package/templates/default/domains/Orders/services/InventoryService/commands/PlaceOrder/schema.json +0 -124
  277. package/templates/default/domains/Orders/services/InventoryService/commands/UpdateInventory/index.mdx +0 -47
  278. package/templates/default/domains/Orders/services/InventoryService/commands/UpdateInventory/schema.json +0 -28
  279. package/templates/default/domains/Orders/services/InventoryService/events/InventoryAdjusted/changelog.mdx +0 -67
  280. package/templates/default/domains/Orders/services/InventoryService/events/InventoryAdjusted/examples/examples.config.yaml +0 -15
  281. package/templates/default/domains/Orders/services/InventoryService/events/InventoryAdjusted/examples/stock-decrease.json +0 -23
  282. package/templates/default/domains/Orders/services/InventoryService/events/InventoryAdjusted/examples/stock-increase.json +0 -23
  283. package/templates/default/domains/Orders/services/InventoryService/events/InventoryAdjusted/index.mdx +0 -124
  284. package/templates/default/domains/Orders/services/InventoryService/events/InventoryAdjusted/schema.avro +0 -13
  285. package/templates/default/domains/Orders/services/InventoryService/events/InventoryAdjusted/schema.json +0 -35
  286. package/templates/default/domains/Orders/services/InventoryService/events/InventoryAdjusted/versioned/0.0.1/changelog.mdx +0 -26
  287. package/templates/default/domains/Orders/services/InventoryService/events/InventoryAdjusted/versioned/0.0.1/index.mdx +0 -23
  288. package/templates/default/domains/Orders/services/InventoryService/events/InventoryAdjusted/versioned/0.0.1/schema.avro +0 -9
  289. package/templates/default/domains/Orders/services/InventoryService/events/InventoryAdjusted/versioned/0.0.1/schema.json +0 -36
  290. package/templates/default/domains/Orders/services/InventoryService/events/InventoryAdjusted/versioned/1.0.0/changelog.mdx +0 -26
  291. package/templates/default/domains/Orders/services/InventoryService/events/InventoryAdjusted/versioned/1.0.0/index.mdx +0 -108
  292. package/templates/default/domains/Orders/services/InventoryService/events/InventoryAdjusted/versioned/1.0.0/schema.avro +0 -10
  293. package/templates/default/domains/Orders/services/InventoryService/events/InventoryAdjusted/versioned/1.0.0/schema.json +0 -36
  294. package/templates/default/domains/Orders/services/InventoryService/events/OutOfStock/examples/examples.config.yaml +0 -7
  295. package/templates/default/domains/Orders/services/InventoryService/events/OutOfStock/examples/product-depleted.json +0 -19
  296. package/templates/default/domains/Orders/services/InventoryService/events/OutOfStock/index.mdx +0 -102
  297. package/templates/default/domains/Orders/services/InventoryService/events/OutOfStock/schema.json +0 -28
  298. package/templates/default/domains/Orders/services/InventoryService/events/OutOfStock/versioned/0.0.1/index.mdx +0 -98
  299. package/templates/default/domains/Orders/services/InventoryService/events/OutOfStock/versioned/0.0.1/schema.json +0 -28
  300. package/templates/default/domains/Orders/services/InventoryService/index.mdx +0 -120
  301. package/templates/default/domains/Orders/services/InventoryService/queries/GetInventoryList/index.mdx +0 -22
  302. package/templates/default/domains/Orders/services/InventoryService/queries/GetInventoryList/schema.json +0 -52
  303. package/templates/default/domains/Orders/services/InventoryService/queries/GetInventoryStatus/index.mdx +0 -40
  304. package/templates/default/domains/Orders/services/InventoryService/queries/GetInventoryStatus/schema.json +0 -27
  305. package/templates/default/domains/Orders/services/InventoryService/versioned/0.0.1/index.mdx +0 -52
  306. package/templates/default/domains/Orders/services/NotificationService/index.mdx +0 -82
  307. package/templates/default/domains/Orders/services/NotificationService/queries/GetNotificationDetails/index.mdx +0 -26
  308. package/templates/default/domains/Orders/services/NotificationService/queries/GetNotificationDetails/schema.json +0 -55
  309. package/templates/default/domains/Orders/services/NotificationService/queries/GetUserNotifications/index.mdx +0 -26
  310. package/templates/default/domains/Orders/services/NotificationService/queries/GetUserNotifications/schema.json +0 -46
  311. package/templates/default/domains/Orders/services/OrdersService/changelog.mdx +0 -3
  312. package/templates/default/domains/Orders/services/OrdersService/events/OrderAmended/examples/address-change.json +0 -36
  313. package/templates/default/domains/Orders/services/OrdersService/events/OrderAmended/examples/examples.config.yaml +0 -15
  314. package/templates/default/domains/Orders/services/OrdersService/events/OrderAmended/examples/quantity-change.json +0 -29
  315. package/templates/default/domains/Orders/services/OrdersService/events/OrderAmended/index.mdx +0 -58
  316. package/templates/default/domains/Orders/services/OrdersService/events/OrderAmended/schema.avro +0 -75
  317. package/templates/default/domains/Orders/services/OrdersService/events/OrderAmended/schema.json +0 -70
  318. package/templates/default/domains/Orders/services/OrdersService/events/OrderCancelled/examples/customer-request.json +0 -34
  319. package/templates/default/domains/Orders/services/OrdersService/events/OrderCancelled/examples/examples.config.yaml +0 -15
  320. package/templates/default/domains/Orders/services/OrdersService/events/OrderCancelled/examples/out-of-stock.json +0 -28
  321. package/templates/default/domains/Orders/services/OrdersService/events/OrderCancelled/index.mdx +0 -54
  322. package/templates/default/domains/Orders/services/OrdersService/events/OrderCancelled/schema.json +0 -71
  323. package/templates/default/domains/Orders/services/OrdersService/events/OrderConfirmed/examples/examples.config.yaml +0 -15
  324. package/templates/default/domains/Orders/services/OrdersService/events/OrderConfirmed/examples/gift-order.json +0 -38
  325. package/templates/default/domains/Orders/services/OrdersService/events/OrderConfirmed/examples/standard-order.json +0 -42
  326. package/templates/default/domains/Orders/services/OrdersService/events/OrderConfirmed/index.mdx +0 -55
  327. package/templates/default/domains/Orders/services/OrdersService/events/OrderConfirmed/schema.json +0 -66
  328. package/templates/default/domains/Orders/services/OrdersService/index.mdx +0 -81
  329. package/templates/default/domains/Orders/services/OrdersService/openapi.yml +0 -185
  330. package/templates/default/domains/Orders/services/OrdersService/order-service-asyncapi.yaml +0 -148
  331. package/templates/default/domains/Orders/services/OrdersService/queries/GetOrder/index.mdx +0 -26
  332. package/templates/default/domains/Orders/services/OrdersService/versioned/0.0.2/changelog.mdx +0 -3
  333. package/templates/default/domains/Orders/services/OrdersService/versioned/0.0.2/index.mdx +0 -40
  334. package/templates/default/domains/Orders/services/OrdersService/versioned/0.0.2/openapi.yml +0 -96
  335. package/templates/default/domains/Orders/services/OrdersService/versioned/0.0.2/order-service-asyncapi.yaml +0 -148
  336. package/templates/default/domains/Orders/services/ShippingService/commands/CancelShipment/index.mdx +0 -22
  337. package/templates/default/domains/Orders/services/ShippingService/commands/CancelShipment/schema.json +0 -13
  338. package/templates/default/domains/Orders/services/ShippingService/commands/CreateReturnLabel/index.mdx +0 -22
  339. package/templates/default/domains/Orders/services/ShippingService/commands/CreateReturnLabel/schema.json +0 -19
  340. package/templates/default/domains/Orders/services/ShippingService/commands/CreateShipment/index.mdx +0 -22
  341. package/templates/default/domains/Orders/services/ShippingService/commands/CreateShipment/schema.json +0 -62
  342. package/templates/default/domains/Orders/services/ShippingService/commands/UpdateShipmentStatus/index.mdx +0 -22
  343. package/templates/default/domains/Orders/services/ShippingService/commands/UpdateShipmentStatus/schema.json +0 -29
  344. package/templates/default/domains/Orders/services/ShippingService/events/DeliveryFailed/examples/address-not-found.json +0 -23
  345. package/templates/default/domains/Orders/services/ShippingService/events/DeliveryFailed/examples/customer-unavailable.json +0 -40
  346. package/templates/default/domains/Orders/services/ShippingService/events/DeliveryFailed/examples/damaged-in-transit.json +0 -33
  347. package/templates/default/domains/Orders/services/ShippingService/events/DeliveryFailed/examples/examples.config.yaml +0 -23
  348. package/templates/default/domains/Orders/services/ShippingService/events/DeliveryFailed/index.mdx +0 -22
  349. package/templates/default/domains/Orders/services/ShippingService/events/DeliveryFailed/schema.json +0 -17
  350. package/templates/default/domains/Orders/services/ShippingService/events/ReturnInitiated/examples/defective-item.json +0 -33
  351. package/templates/default/domains/Orders/services/ShippingService/events/ReturnInitiated/examples/examples.config.yaml +0 -15
  352. package/templates/default/domains/Orders/services/ShippingService/events/ReturnInitiated/examples/wrong-item.json +0 -51
  353. package/templates/default/domains/Orders/services/ShippingService/events/ReturnInitiated/index.mdx +0 -22
  354. package/templates/default/domains/Orders/services/ShippingService/events/ReturnInitiated/schema.json +0 -17
  355. package/templates/default/domains/Orders/services/ShippingService/events/ShipmentCreated/examples/examples.config.yaml +0 -15
  356. package/templates/default/domains/Orders/services/ShippingService/events/ShipmentCreated/examples/multi-package.json +0 -76
  357. package/templates/default/domains/Orders/services/ShippingService/events/ShipmentCreated/examples/single-package.json +0 -51
  358. package/templates/default/domains/Orders/services/ShippingService/events/ShipmentCreated/index.mdx +0 -22
  359. package/templates/default/domains/Orders/services/ShippingService/events/ShipmentCreated/schema.json +0 -64
  360. package/templates/default/domains/Orders/services/ShippingService/events/ShipmentDelivered/examples/examples.config.yaml +0 -15
  361. package/templates/default/domains/Orders/services/ShippingService/events/ShipmentDelivered/examples/front-door-delivery.json +0 -30
  362. package/templates/default/domains/Orders/services/ShippingService/events/ShipmentDelivered/examples/signed-delivery.json +0 -31
  363. package/templates/default/domains/Orders/services/ShippingService/events/ShipmentDelivered/index.mdx +0 -22
  364. package/templates/default/domains/Orders/services/ShippingService/events/ShipmentDelivered/schema.json +0 -17
  365. package/templates/default/domains/Orders/services/ShippingService/events/ShipmentDispatched/examples/examples.config.yaml +0 -15
  366. package/templates/default/domains/Orders/services/ShippingService/events/ShipmentDispatched/examples/express-shipping.json +0 -33
  367. package/templates/default/domains/Orders/services/ShippingService/events/ShipmentDispatched/examples/standard-shipping.json +0 -32
  368. package/templates/default/domains/Orders/services/ShippingService/events/ShipmentDispatched/index.mdx +0 -22
  369. package/templates/default/domains/Orders/services/ShippingService/events/ShipmentDispatched/schema.json +0 -17
  370. package/templates/default/domains/Orders/services/ShippingService/events/ShipmentInTransit/examples/domestic-transit.json +0 -48
  371. package/templates/default/domains/Orders/services/ShippingService/events/ShipmentInTransit/examples/examples.config.yaml +0 -15
  372. package/templates/default/domains/Orders/services/ShippingService/events/ShipmentInTransit/examples/international-transit.json +0 -61
  373. package/templates/default/domains/Orders/services/ShippingService/events/ShipmentInTransit/index.mdx +0 -22
  374. package/templates/default/domains/Orders/services/ShippingService/events/ShipmentInTransit/schema.json +0 -17
  375. package/templates/default/domains/Orders/services/ShippingService/index.mdx +0 -61
  376. package/templates/default/domains/Orders/ubiquitous-language.mdx +0 -127
  377. package/templates/default/domains/Orders/versioned/0.0.1/index.mdx +0 -21
  378. package/templates/default/domains/Orders/versioned/0.0.2/index.mdx +0 -50
  379. package/templates/default/domains/Payment/entities/Address/index.mdx +0 -165
  380. package/templates/default/domains/Payment/entities/Invoice/index.mdx +0 -92
  381. package/templates/default/domains/Payment/entities/Payment/index.mdx +0 -140
  382. package/templates/default/domains/Payment/entities/PaymentMethod/index.mdx +0 -80
  383. package/templates/default/domains/Payment/entities/Transaction/index.mdx +0 -80
  384. package/templates/default/domains/Payment/flows/PaymentProcessed/index.mdx +0 -82
  385. package/templates/default/domains/Payment/index.mdx +0 -40
  386. package/templates/default/domains/Payment/services/FraudDetectionService/events/FraudCheckCompleted/examples/check-flagged.json +0 -50
  387. package/templates/default/domains/Payment/services/FraudDetectionService/events/FraudCheckCompleted/examples/check-passed.json +0 -45
  388. package/templates/default/domains/Payment/services/FraudDetectionService/events/FraudCheckCompleted/examples/examples.config.yaml +0 -15
  389. package/templates/default/domains/Payment/services/FraudDetectionService/events/FraudCheckCompleted/index.mdx +0 -50
  390. package/templates/default/domains/Payment/services/FraudDetectionService/events/FraudCheckCompleted/schema.json +0 -44
  391. package/templates/default/domains/Payment/services/FraudDetectionService/index.mdx +0 -62
  392. package/templates/default/domains/Payment/services/PaymentGatewayService/commands/ProcessPayment/index.mdx +0 -75
  393. package/templates/default/domains/Payment/services/PaymentGatewayService/commands/ProcessPayment/schema.json +0 -58
  394. package/templates/default/domains/Payment/services/PaymentGatewayService/events/PaymentFailed/examples/card-declined.json +0 -38
  395. package/templates/default/domains/Payment/services/PaymentGatewayService/events/PaymentFailed/examples/examples.config.yaml +0 -23
  396. package/templates/default/domains/Payment/services/PaymentGatewayService/events/PaymentFailed/examples/expired-card.json +0 -38
  397. package/templates/default/domains/Payment/services/PaymentGatewayService/events/PaymentFailed/examples/insufficient-funds.json +0 -38
  398. package/templates/default/domains/Payment/services/PaymentGatewayService/events/PaymentFailed/index.mdx +0 -64
  399. package/templates/default/domains/Payment/services/PaymentGatewayService/events/PaymentFailed/schema.json +0 -68
  400. package/templates/default/domains/Payment/services/PaymentGatewayService/index.mdx +0 -71
  401. package/templates/default/domains/Payment/services/PaymentService/events/PaymentInitiated/examples/examples.config.yaml +0 -15
  402. package/templates/default/domains/Payment/services/PaymentService/events/PaymentInitiated/examples/express-checkout.json +0 -45
  403. package/templates/default/domains/Payment/services/PaymentService/events/PaymentInitiated/examples/standard-checkout.json +0 -52
  404. package/templates/default/domains/Payment/services/PaymentService/events/PaymentInitiated/index.mdx +0 -37
  405. package/templates/default/domains/Payment/services/PaymentService/events/PaymentInitiated/schema.json +0 -31
  406. package/templates/default/domains/Payment/services/PaymentService/events/PaymentProcessed/examples/examples.config.yaml +0 -15
  407. package/templates/default/domains/Payment/services/PaymentService/events/PaymentProcessed/examples/international-payment.json +0 -48
  408. package/templates/default/domains/Payment/services/PaymentService/events/PaymentProcessed/examples/successful-payment.json +0 -48
  409. package/templates/default/domains/Payment/services/PaymentService/events/PaymentProcessed/index.mdx +0 -43
  410. package/templates/default/domains/Payment/services/PaymentService/events/PaymentProcessed/schema.json +0 -54
  411. package/templates/default/domains/Payment/services/PaymentService/events/PaymentProcessed/versioned/0.0.1/index.mdx +0 -43
  412. package/templates/default/domains/Payment/services/PaymentService/events/PaymentProcessed/versioned/0.0.1/schema.json +0 -54
  413. package/templates/default/domains/Payment/services/PaymentService/index.mdx +0 -41
  414. package/templates/default/domains/Payment/services/PaymentService/queries/GetPaymentStatus/index.mdx +0 -26
  415. package/templates/default/domains/Payment/services/PaymentService/queries/GetPaymentStatus/schema.json +0 -39
  416. package/templates/default/domains/Payment/ubiquitous-language.mdx +0 -96
  417. package/templates/default/domains/ProductCatalog/entities/Category/index.mdx +0 -127
  418. package/templates/default/domains/ProductCatalog/entities/Inventory/index.mdx +0 -119
  419. package/templates/default/domains/ProductCatalog/entities/Product/index.mdx +0 -118
  420. package/templates/default/domains/ProductCatalog/entities/Review/index.mdx +0 -157
  421. package/templates/default/domains/ProductCatalog/index.mdx +0 -73
  422. package/templates/default/domains/ProductCatalog/ubiquitous-language.mdx +0 -88
  423. package/templates/default/domains/Subscriptions/entities/BillingProfile/index.mdx +0 -71
  424. package/templates/default/domains/Subscriptions/entities/SubscriptionPeriod/index.mdx +0 -76
  425. package/templates/default/domains/Subscriptions/flows/CancelSubscription/SubscriptionRenewed/index.mdx +0 -300
  426. package/templates/default/domains/Subscriptions/flows/CancelSubscription/index.mdx +0 -69
  427. package/templates/default/domains/Subscriptions/flows/CancelSubscription/versioned/0.0.1/index.mdx +0 -51
  428. package/templates/default/domains/Subscriptions/index.mdx +0 -35
  429. package/templates/default/domains/Subscriptions/services/BillingService/events/SubscriptionPaymentDue/examples/examples.config.yaml +0 -7
  430. package/templates/default/domains/Subscriptions/services/BillingService/events/SubscriptionPaymentDue/examples/upcoming-renewal.json +0 -28
  431. package/templates/default/domains/Subscriptions/services/BillingService/events/SubscriptionPaymentDue/index.mdx +0 -63
  432. package/templates/default/domains/Subscriptions/services/BillingService/events/SubscriptionPaymentDue/schema.json +0 -54
  433. package/templates/default/domains/Subscriptions/services/BillingService/index.mdx +0 -83
  434. package/templates/default/domains/Subscriptions/services/PlanManagementService/index.mdx +0 -83
  435. package/templates/default/domains/Subscriptions/services/SubscriptionService/commands/CancelSubscription/index.mdx +0 -26
  436. package/templates/default/domains/Subscriptions/services/SubscriptionService/commands/CancelSubscription/schema.json +0 -30
  437. package/templates/default/domains/Subscriptions/services/SubscriptionService/commands/SubscribeUser/index.mdx +0 -26
  438. package/templates/default/domains/Subscriptions/services/SubscriptionService/commands/SubscribeUser/schema.json +0 -31
  439. package/templates/default/domains/Subscriptions/services/SubscriptionService/events/UserSubscriptionCancelled/examples/examples.config.yaml +0 -15
  440. package/templates/default/domains/Subscriptions/services/SubscriptionService/events/UserSubscriptionCancelled/examples/payment-failure.json +0 -25
  441. package/templates/default/domains/Subscriptions/services/SubscriptionService/events/UserSubscriptionCancelled/examples/voluntary-cancellation.json +0 -23
  442. package/templates/default/domains/Subscriptions/services/SubscriptionService/events/UserSubscriptionCancelled/index.mdx +0 -26
  443. package/templates/default/domains/Subscriptions/services/SubscriptionService/events/UserSubscriptionCancelled/schema.json +0 -35
  444. package/templates/default/domains/Subscriptions/services/SubscriptionService/events/UserSubscriptionStarted/examples/annual-plan.json +0 -26
  445. package/templates/default/domains/Subscriptions/services/SubscriptionService/events/UserSubscriptionStarted/examples/examples.config.yaml +0 -15
  446. package/templates/default/domains/Subscriptions/services/SubscriptionService/events/UserSubscriptionStarted/examples/monthly-plan.json +0 -25
  447. package/templates/default/domains/Subscriptions/services/SubscriptionService/events/UserSubscriptionStarted/index.mdx +0 -26
  448. package/templates/default/domains/Subscriptions/services/SubscriptionService/events/UserSubscriptionStarted/schema.json +0 -36
  449. package/templates/default/domains/Subscriptions/services/SubscriptionService/index.mdx +0 -62
  450. package/templates/default/domains/Subscriptions/services/SubscriptionService/queries/GetSubscriptionStatus/index.mdx +0 -26
  451. package/templates/default/domains/Subscriptions/services/SubscriptionService/queries/GetSubscriptionStatus/schema.json +0 -54
  452. package/templates/default/domains/Subscriptions/services/SubscriptionService/queries/GetSubscriptionStatus/versioned/0.0.1/index.mdx +0 -26
  453. package/templates/default/domains/Subscriptions/services/SubscriptionService/queries/GetSubscriptionStatus/versioned/0.0.1/schema.json +0 -54
  454. package/templates/default/domains/Subscriptions/ubiquitous-language.mdx +0 -129
  455. package/templates/default/teams/full-stack.mdx +0 -26
  456. package/templates/default/teams/mobile-devs.mdx +0 -23
  457. package/templates/default/users/aSmith.mdx +0 -27
  458. package/templates/default/users/mSmith.mdx +0 -9
package/dist/index.js CHANGED
@@ -29808,7 +29808,7 @@ var import_os2 = __toESM(require("os"));
29808
29808
  var package_default = {
29809
29809
  name: "@eventcatalog/create-eventcatalog",
29810
29810
  description: "Create EventCatalog with one command",
29811
- version: "4.3.3",
29811
+ version: "4.3.4",
29812
29812
  license: "MIT",
29813
29813
  bin: {
29814
29814
  "create-catalog": "./dist/index.js"
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@eventcatalog/create-eventcatalog",
3
3
  "description": "Create EventCatalog with one command",
4
- "version": "4.3.3",
4
+ "version": "4.3.4",
5
5
  "license": "MIT",
6
6
  "bin": {
7
7
  "create-catalog": "./dist/index.js"
@@ -19,8 +19,9 @@ Your catalog is docs-as-code. Resources live in folders with an `index.mdx` file
19
19
  Good places to start:
20
20
 
21
21
  - `domains/` - bounded contexts, business capabilities, and ownership
22
- - `domains/<domain>/services/` - services, APIs, and message producers or consumers
23
- - `events/`, `commands/`, and `queries/` - the messages flowing through your system
22
+ - `domains/<domain>/systems/` - systems and containers inside each domain
23
+ - `domains/<domain>/systems/<system>/services/` - services, APIs, and message producers or consumers
24
+ - `commands/`, `events/`, and `queries/` folders under services - the messages flowing through your system
24
25
  - `teams/` and `users/` - who owns each part of the architecture
25
26
 
26
27
  Prefer a visual workflow? Run `npm run editor` to open the [EventCatalog Editor](https://www.eventcatalog.dev/docs/editor/overview) and browse, create, or update catalog resources through a GitHub-backed UI.
@@ -0,0 +1,31 @@
1
+ {
2
+ "version": 1,
3
+ "savedAt": "2026-06-29T11:03:00.194Z",
4
+ "resourceKey": "domains-systems-context/catalog/1.0.0",
5
+ "positions": {
6
+ "product-catalog-system-1.0.0": {
7
+ "x": 654.4139077853363,
8
+ "y": 77.21012849584278
9
+ },
10
+ "search-system-1.0.0": {
11
+ "x": 1145,
12
+ "y": 335
13
+ },
14
+ "actor-merchandiser": {
15
+ "x": 90,
16
+ "y": 60
17
+ },
18
+ "actor-catalog-admin": {
19
+ "x": 90,
20
+ "y": 260
21
+ },
22
+ "actor-shopper": {
23
+ "x": 595,
24
+ "y": 360
25
+ },
26
+ "actor-storefront-team": {
27
+ "x": 595,
28
+ "y": 560
29
+ }
30
+ }
31
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "version": 1,
3
+ "savedAt": "2026-06-26T12:15:29.856Z",
4
+ "resourceKey": "domains-systems-context/customer/1.0.0",
5
+ "positions": {
6
+ "customer-management-system-1.0.0": {
7
+ "x": 652.3279365079366,
8
+ "y": 338.73238095238094
9
+ },
10
+ "identity-provider-1.0.0": {
11
+ "x": 745.6812698412698,
12
+ "y": 71.1025396825397
13
+ },
14
+ "actor-customer": {
15
+ "x": 90,
16
+ "y": 122.5
17
+ },
18
+ "actor-support-agent": {
19
+ "x": 90,
20
+ "y": 322.5
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,91 @@
1
+ {
2
+ "version": 1,
3
+ "savedAt": "2026-06-29T08:55:18.430Z",
4
+ "resourceKey": "system-context-map/system-context-map/1.0.0",
5
+ "positions": {
6
+ "carrier-1.0.0": {
7
+ "x": 1423.6053719008264,
8
+ "y": 1259.6570247933885
9
+ },
10
+ "shipping-system-1.0.0": {
11
+ "x": 1622.4194214876034,
12
+ "y": 1702.4814049586778
13
+ },
14
+ "cart-system-1.0.0": {
15
+ "x": 595,
16
+ "y": 60
17
+ },
18
+ "promotion-system-1.0.0": {
19
+ "x": 1145,
20
+ "y": 60
21
+ },
22
+ "actor-shopper": {
23
+ "x": 56.553719008264444,
24
+ "y": 178.41322314049586
25
+ },
26
+ "checkout-system-1.0.0": {
27
+ "x": 595,
28
+ "y": 260
29
+ },
30
+ "order-management-system-1.0.0": {
31
+ "x": 1145,
32
+ "y": 260
33
+ },
34
+ "customer-management-system-1.0.0": {
35
+ "x": 812.667132867133,
36
+ "y": 836.9146853146854
37
+ },
38
+ "identity-provider-1.0.0": {
39
+ "x": 1145,
40
+ "y": 1085
41
+ },
42
+ "actor-customer": {
43
+ "x": 90,
44
+ "y": 910
45
+ },
46
+ "actor-support-agent": {
47
+ "x": 90,
48
+ "y": 1110
49
+ },
50
+ "fraud-detection-1.0.0": {
51
+ "x": -664.9235537190083,
52
+ "y": 1282.7169421487602
53
+ },
54
+ "payment-processing-system-1.0.0": {
55
+ "x": -145.58264462809922,
56
+ "y": 1486.1818181818182
57
+ },
58
+ "inventory-system-1.0.0": {
59
+ "x": 366.3367768595041,
60
+ "y": 1716.0785123966941
61
+ },
62
+ "warehouse-system-1.0.0": {
63
+ "x": 955.3574380165288,
64
+ "y": 1529.3367768595042
65
+ },
66
+ "stripe-1.0.0": {
67
+ "x": 318.0144628099173,
68
+ "y": 1260.4194214876034
69
+ },
70
+ "product-catalog-system-1.0.0": {
71
+ "x": 1145,
72
+ "y": 497.5
73
+ },
74
+ "search-system-1.0.0": {
75
+ "x": 440.8853146853147,
76
+ "y": 723.5524475524476
77
+ },
78
+ "actor-merchandiser": {
79
+ "x": 447.2405594405594,
80
+ "y": 530.0979020979021
81
+ },
82
+ "actor-catalog-admin": {
83
+ "x": 561.634965034965,
84
+ "y": 418.6909090909091
85
+ },
86
+ "actor-storefront-team": {
87
+ "x": -349.5522886204704,
88
+ "y": 775.1666878575969
89
+ }
90
+ }
91
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "version": 1,
3
+ "savedAt": "2026-06-29T11:26:03.901Z",
4
+ "resourceKey": "systems-context/customer-management-system/1.0.0",
5
+ "positions": {
6
+ "customer-management-system-1.0.0": {
7
+ "x": 593.5226571767497,
8
+ "y": -13.867141162514821
9
+ },
10
+ "identity-provider-1.0.0": {
11
+ "x": 1145,
12
+ "y": 85
13
+ },
14
+ "actor-customer": {
15
+ "x": 90,
16
+ "y": 60
17
+ },
18
+ "actor-support-agent": {
19
+ "x": 90,
20
+ "y": 260
21
+ }
22
+ }
23
+ }
@@ -5,4 +5,3 @@ import config from '@config';
5
5
  <div class="w-full text-right">
6
6
  <span class="italic text-[rgb(var(--ec-page-text-muted))]">Event-driven architecture documentation: {config.organizationName}</span>
7
7
  </div>
8
-
@@ -0,0 +1,36 @@
1
+ ---
2
+ id: category
3
+ name: Category
4
+ version: 1.0.0
5
+ identifier: categoryId
6
+ aggregateRoot: true
7
+ summary: A merchandising grouping used to organize products for discovery.
8
+ owners:
9
+ - product-platform
10
+ properties:
11
+ - name: categoryId
12
+ type: UUID
13
+ required: true
14
+ description: Unique category identifier.
15
+ - name: slug
16
+ type: string
17
+ required: true
18
+ description: Stable URL-safe category key.
19
+ - name: displayName
20
+ type: string
21
+ required: true
22
+ description: Customer-facing category name.
23
+ - name: parentCategoryId
24
+ type: UUID
25
+ required: false
26
+ description: Parent category for hierarchy navigation.
27
+ references: category
28
+ relationType: belongsTo
29
+ referencesIdentifier: categoryId
30
+ ---
31
+
32
+ ## Overview
33
+
34
+ Category defines how products are grouped for browsing. It is owned by the Catalog domain and projected into the Search System for discovery.
35
+
36
+ <EntityPropertiesTable />
@@ -0,0 +1,37 @@
1
+ ---
2
+ id: product
3
+ name: Product
4
+ version: 1.0.0
5
+ identifier: productId
6
+ aggregateRoot: true
7
+ summary: The sellable item Acme manages in the product catalog.
8
+ owners:
9
+ - product-platform
10
+ properties:
11
+ - name: productId
12
+ type: UUID
13
+ required: true
14
+ description: Unique product identifier.
15
+ - name: sku
16
+ type: string
17
+ required: true
18
+ description: Primary merchandising SKU.
19
+ - name: name
20
+ type: string
21
+ required: true
22
+ description: Customer-facing product name.
23
+ - name: status
24
+ type: string
25
+ required: true
26
+ description: Product publication state.
27
+ enum:
28
+ - draft
29
+ - active
30
+ - archived
31
+ ---
32
+
33
+ ## Overview
34
+
35
+ The Product is the Catalog domain's core aggregate. It is created and maintained by [[service|product-api]] and published to downstream consumers through product events.
36
+
37
+ <EntityPropertiesTable />
@@ -0,0 +1,35 @@
1
+ ---
2
+ id: product-variant
3
+ name: Product Variant
4
+ version: 1.0.0
5
+ identifier: variantId
6
+ summary: A purchasable variation of a product, such as size or color.
7
+ owners:
8
+ - product-platform
9
+ properties:
10
+ - name: variantId
11
+ type: UUID
12
+ required: true
13
+ description: Unique variant identifier.
14
+ - name: productId
15
+ type: UUID
16
+ required: true
17
+ description: Product this variant belongs to.
18
+ references: product
19
+ relationType: belongsTo
20
+ referencesIdentifier: productId
21
+ - name: sku
22
+ type: string
23
+ required: true
24
+ description: Variant-level SKU.
25
+ - name: attributes
26
+ type: object
27
+ required: true
28
+ description: Variant dimensions such as size, color or material.
29
+ ---
30
+
31
+ ## Overview
32
+
33
+ Product Variant captures the concrete option a customer can buy. It belongs to a [[entity|product]] and is indexed into search when product data changes.
34
+
35
+ <EntityPropertiesTable />
@@ -0,0 +1,35 @@
1
+ ---
2
+ id: search-document
3
+ name: Search Document
4
+ version: 1.0.0
5
+ identifier: documentId
6
+ summary: The denormalized representation of product data indexed by Search.
7
+ owners:
8
+ - search-platform
9
+ properties:
10
+ - name: documentId
11
+ type: string
12
+ required: true
13
+ description: Search index document identifier.
14
+ - name: productId
15
+ type: UUID
16
+ required: true
17
+ description: Product represented by the document.
18
+ references: product
19
+ relationType: represents
20
+ referencesIdentifier: productId
21
+ - name: searchableText
22
+ type: string
23
+ required: true
24
+ description: Text used for matching and ranking.
25
+ - name: indexedAt
26
+ type: datetime
27
+ required: true
28
+ description: Time the document was last indexed.
29
+ ---
30
+
31
+ ## Overview
32
+
33
+ Search Document is the read model maintained by [[system|search-system]]. It is eventually consistent with the Product Catalog System.
34
+
35
+ <EntityPropertiesTable />
@@ -0,0 +1,65 @@
1
+ ---
2
+ id: catalog
3
+ name: Catalog
4
+ version: 1.0.0
5
+ summary: |
6
+ The Catalog domain owns everything about products — how they are created, maintained and made discoverable across Acme Inc. It is the source of truth for product data and powers product search across the business.
7
+ owners:
8
+ - product-platform
9
+ systems:
10
+ - id: product-catalog-system
11
+ version: 1.0.0
12
+ - id: search-system
13
+ version: 1.0.0
14
+ entities:
15
+ - id: product
16
+ version: 1.0.0
17
+ - id: product-variant
18
+ version: 1.0.0
19
+ - id: category
20
+ version: 1.0.0
21
+ - id: search-document
22
+ version: 1.0.0
23
+ badges:
24
+ - content: Core domain
25
+ backgroundColor: blue
26
+ textColor: blue
27
+ icon: RectangleGroupIcon
28
+ - content: Business Critical
29
+ backgroundColor: red
30
+ textColor: red
31
+ icon: ShieldCheckIcon
32
+ ---
33
+
34
+ ## Overview
35
+
36
+ The **Catalog** domain is responsible for the lifecycle of every product Acme Inc sells, and for making those products discoverable. It is split into two internal systems that work together:
37
+
38
+ <Tiles>
39
+ <Tile
40
+ icon="RectangleGroupIcon"
41
+ href="/docs/systems/product-catalog-system/1.0.0"
42
+ title="Product Catalog System"
43
+ description="System of record for product data — create, update, delete and read products."
44
+ />
45
+ <Tile
46
+ icon="MagnifyingGlassIcon"
47
+ href="/docs/systems/search-system/1.0.0"
48
+ title="Search System"
49
+ description="Indexes product changes and serves fast, relevant product search to the rest of the business."
50
+ />
51
+ </Tiles>
52
+
53
+ ### How the systems work together
54
+
55
+ The **Product Catalog System** is the authoritative source of product data. Whenever a product is created, updated or deleted it publishes a domain event. The **Search System** subscribes to those events, keeps its search index in sync, and exposes a search API so other teams never have to query the catalog database directly.
56
+
57
+ The diagram below shows the domain's systems, how they relate, and the people who interact with them.
58
+
59
+ <ContextDiagram />
60
+
61
+ ## Component map
62
+
63
+ These are the components that are part of this domain (parts of the systems in this domain)
64
+
65
+ <NodeGraph />
@@ -0,0 +1,43 @@
1
+ ---
2
+ id: adr-001-use-transactional-outbox
3
+ name: 'ADR-001: Publish product events via a transactional outbox'
4
+ summary: Product change events are written to an outbox table in the same transaction as the change, then relayed to the broker, so an event is never lost or published for a rolled-back change.
5
+ version: 1.0.0
6
+ status: accepted
7
+ date: 2026-02-10
8
+ owners:
9
+ - product-platform
10
+ decisionMakers:
11
+ - product-platform
12
+ appliesTo:
13
+ - type: system
14
+ id: product-catalog-system
15
+ - type: service
16
+ id: product-search-publisher
17
+ - type: container
18
+ id: product-database
19
+ badges:
20
+ - content: Messaging
21
+ backgroundColor: blue
22
+ textColor: blue
23
+ - content: Reliability
24
+ backgroundColor: green
25
+ textColor: green
26
+ ---
27
+
28
+ ## Context
29
+
30
+ The Product Catalog System is the source of truth for products, and other systems — notably the [[system|search-system]] — depend on a reliable stream of `product-created`, `product-updated` and `product-deleted` events. Publishing to the broker directly from the [[service|product-api]] request path creates a dual-write problem: if the database commit succeeds but the broker publish fails (or vice versa), the catalog and its consumers drift out of sync. Lost or phantom events are hard to detect and expensive to reconcile.
31
+
32
+ ## Decision
33
+
34
+ The Product API writes every product change **and** a corresponding row in an `outbox` table inside a single database transaction in the [[container|product-database]]. A separate relay, the [[service|product-search-publisher]], reads unpublished outbox rows in order and publishes them to the broker with at-least-once delivery, marking each row published once acknowledged.
35
+
36
+ This decouples persistence from publishing: the request path only touches the database, and event delivery becomes an independent, retryable concern.
37
+
38
+ ## Consequences
39
+
40
+ - Events are never lost and never published for a change that rolled back — the change and its event share a transaction boundary.
41
+ - Consumers must be **idempotent**, since at-least-once delivery means an event can be redelivered.
42
+ - There is a small publish latency between the commit and the relay draining the outbox.
43
+ - The outbox table needs a retention/cleanup policy so it doesn't grow unbounded.
@@ -0,0 +1,40 @@
1
+ ---
2
+ id: adr-002-postgres-as-system-of-record
3
+ name: 'ADR-002: Use PostgreSQL as the product system of record'
4
+ summary: Product data is stored in a single PostgreSQL database that acts as the authoritative system of record, with derived stores (like the search index) rebuilt from it.
5
+ version: 1.0.0
6
+ status: accepted
7
+ date: 2026-02-12
8
+ owners:
9
+ - product-platform
10
+ decisionMakers:
11
+ - product-platform
12
+ appliesTo:
13
+ - type: system
14
+ id: product-catalog-system
15
+ - type: container
16
+ id: product-database
17
+ related:
18
+ - id: adr-001-use-transactional-outbox
19
+ badges:
20
+ - content: Data
21
+ backgroundColor: purple
22
+ textColor: purple
23
+ ---
24
+
25
+ ## Context
26
+
27
+ Products are a small-to-medium, strongly relational dataset (products, categories, pricing, lifecycle status) that needs transactional integrity, an enforceable schema, and the ability to write a change and its outbox event atomically. We also want a single, unambiguous source of truth so that derived stores — such as the [[system|search-system]]'s index — can be treated as disposable and rebuilt at any time.
28
+
29
+ ## Decision
30
+
31
+ The Product Catalog System uses a single **PostgreSQL** database, the [[container|product-database]], as the authoritative system of record. It holds the `products` table and the outbox table (see [[adr|adr-001-use-transactional-outbox]]). The [[service|product-api]] is the only writer on the request path; the [[service|product-worker]] performs asynchronous enrichment.
32
+
33
+ Any other representation of product data elsewhere in the business is a **derived read model**, not a source of truth, and must be rebuildable by replaying product events.
34
+
35
+ ## Consequences
36
+
37
+ - Strong consistency and transactional outbox writes are straightforward with a single relational store.
38
+ - The search index and any future read models can be rebuilt from the catalog, keeping them disposable.
39
+ - The database is a scaling focal point; heavy read traffic should be served from read replicas or downstream read models rather than the primary.
40
+ - Schema changes need migrations and care, since this is the authoritative store.
@@ -0,0 +1,41 @@
1
+ ---
2
+ id: adr-003-offload-async-work-to-worker
3
+ name: 'ADR-003: Offload long-running catalog work to a dedicated worker'
4
+ summary: Slow and asynchronous catalog tasks (enrichment, image processing, bulk imports) run in a separate Product Worker so the Product API stays fast and predictable.
5
+ version: 1.0.0
6
+ status: accepted
7
+ date: 2026-02-18
8
+ owners:
9
+ - product-platform
10
+ decisionMakers:
11
+ - product-platform
12
+ appliesTo:
13
+ - type: system
14
+ id: product-catalog-system
15
+ - type: service
16
+ id: product-worker
17
+ - type: service
18
+ id: product-api
19
+ badges:
20
+ - content: Architecture
21
+ backgroundColor: blue
22
+ textColor: blue
23
+ - content: Performance
24
+ backgroundColor: green
25
+ textColor: green
26
+ ---
27
+
28
+ ## Context
29
+
30
+ Some catalog operations are slow or bursty: enriching products with derived attributes, processing and optimising images, and ingesting large supplier feeds. Running this work inline in the [[service|product-api]] request path would make API latency unpredictable and couple the responsiveness of create/update/read operations to whatever heavy job happens to be running.
31
+
32
+ ## Decision
33
+
34
+ The Product Catalog System runs a dedicated [[service|product-worker]] for long-running and asynchronous tasks. The [[service|product-api]] handles validation, persistence and the outbox write synchronously, then returns; the worker picks up enrichment, media processing and bulk imports independently, reading from and writing back to the [[container|product-database]].
35
+
36
+ ## Consequences
37
+
38
+ - The Product API has a small, predictable surface and stays fast under load.
39
+ - Heavy work can be scaled, retried and scheduled independently of the API.
40
+ - Some product attributes are **eventually** populated after creation, so consumers must not assume every derived field is present immediately.
41
+ - There are now two services writing to the [[container|product-database]], so write paths must respect the same invariants and avoid conflicting updates.
@@ -0,0 +1,45 @@
1
+ ---
2
+ id: product-database
3
+ name: Product Database
4
+ version: 1.0.0
5
+ summary: PostgreSQL database that is the system of record for all product data.
6
+ container_type: database
7
+ technology: postgres@16
8
+ authoritative: true
9
+ access_mode: readWrite
10
+ purpose: System of record for products, plus the change outbox used to publish events
11
+ classification: internal
12
+ retention: indefinite
13
+ residency: eu-west-1
14
+ styles:
15
+ icon: /icons/database/postgresql.svg
16
+ ---
17
+
18
+ <NodeGraph />
19
+
20
+ ### What is this?
21
+
22
+ The **Product Database** is the authoritative store for every product in the catalog. The [[service|product-api]] reads from and writes to it, and the [[service|product-worker]] uses it for asynchronous enrichment. It also holds the **outbox** table that the [[service|product-search-publisher]] reads to publish product change events.
23
+
24
+ ### What does it store?
25
+
26
+ - **Products** — one row per product: SKU, name, description, price, currency, category and lifecycle status.
27
+ - **Outbox** — one row per product change, used to reliably publish [[event|product-created]], [[event|product-updated]] and [[event|product-deleted]] events.
28
+
29
+ ### Schema
30
+
31
+ <AccordionGroup>
32
+ <Accordion title="Product Database schema">
33
+ <Schema file="schema.sql" lang="sql" title="schema.sql" />
34
+ </Accordion>
35
+ </AccordionGroup>
36
+
37
+ ### Access patterns
38
+
39
+ - The [[service|product-api]] is the only writer to the `products` table on the request path.
40
+ - The [[service|product-search-publisher]] is a read-only consumer of the `outbox` table.
41
+ - The [[service|product-worker]] reads and writes for asynchronous enrichment jobs.
42
+
43
+ ### Why an outbox?
44
+
45
+ Writing the product change and the event in the **same transaction** guarantees we never persist a change without an event, or publish an event for a change that rolled back. The publisher reads the outbox and emits events with at-least-once delivery.
@@ -0,0 +1,33 @@
1
+ -- Product Database — system of record for the product catalog
2
+
3
+ CREATE TABLE products (
4
+ product_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
5
+ sku TEXT NOT NULL UNIQUE,
6
+ name TEXT NOT NULL,
7
+ description TEXT,
8
+ price_cents INTEGER NOT NULL CHECK (price_cents >= 0),
9
+ currency CHAR(3) NOT NULL,
10
+ category TEXT,
11
+ status TEXT NOT NULL DEFAULT 'DRAFT'
12
+ CHECK (status IN ('DRAFT', 'ACTIVE', 'ARCHIVED')),
13
+ created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
14
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
15
+ );
16
+
17
+ CREATE INDEX idx_products_category ON products (category);
18
+ CREATE INDEX idx_products_status ON products (status);
19
+
20
+ -- Transactional outbox — change events are written here in the same
21
+ -- transaction as the product change, then drained by the Product Search Publisher.
22
+ CREATE TABLE outbox (
23
+ id BIGSERIAL PRIMARY KEY,
24
+ product_id UUID NOT NULL REFERENCES products (product_id),
25
+ event_type TEXT NOT NULL
26
+ CHECK (event_type IN ('ProductCreated', 'ProductUpdated', 'ProductDeleted')),
27
+ payload JSONB NOT NULL,
28
+ occurred_at TIMESTAMPTZ NOT NULL DEFAULT now(),
29
+ published_at TIMESTAMPTZ
30
+ );
31
+
32
+ -- Index used by the publisher to find unpublished changes in order.
33
+ CREATE INDEX idx_outbox_unpublished ON outbox (id) WHERE published_at IS NULL;