From d6ec1a7ea6ae6964233fa02fc10aa8753583c4f3 Mon Sep 17 00:00:00 2001 From: Ross Buggins Date: Fri, 22 Aug 2025 10:25:07 +0100 Subject: [PATCH 1/5] Added eventcat to repo. --- .devcontainer/general/devcontainer.json | 10 + .devcontainer/{ => jekyll}/devcontainer.json | 0 eventcatalogue/Makefile | 11 + eventcatalogue/nhsnotify/.dockerignore | 8 + eventcatalogue/nhsnotify/.gitignore | 27 + eventcatalogue/nhsnotify/.npmrc | 1 + eventcatalogue/nhsnotify/Dockerfile | 23 + eventcatalogue/nhsnotify/Dockerfile.server | 23 + eventcatalogue/nhsnotify/README.md | 1 + .../channels/inventory.{env}.events/index.mdx | 157 + .../channels/orders.{env}.events/index.mdx | 82 + .../channels/payment.{env}.events/index.mdx | 88 + .../nhsnotify/components/footer.astro | 8 + .../nhsnotify/domains/E-Commerce/index.mdx | 152 + .../nhsnotify/domains/Orders/changelog.mdx | 7 + .../Orders/entities/CartItem/index.mdx | 121 + .../Orders/entities/Customer/index.mdx | 57 + .../domains/Orders/entities/Order/index.mdx | 96 + .../Orders/entities/OrderItem/index.mdx | 59 + .../Orders/entities/ShoppingCart/index.mdx | 148 + .../nhsnotify/domains/Orders/index.mdx | 101 + .../services/InventoryService/changelog.mdx | 7 + .../commands/AddInventory/index.mdx | 52 + .../commands/AddInventory/schema.json | 29 + .../commands/PlaceOrder/index.mdx | 36 + .../commands/PlaceOrder/schema.json | 124 + .../commands/UpdateInventory/index.mdx | 51 + .../commands/UpdateInventory/schema.json | 29 + .../events/InventoryAdjusted/changelog.mdx | 68 + .../events/InventoryAdjusted/index.mdx | 116 + .../events/InventoryAdjusted/schema.avro | 13 + .../events/InventoryAdjusted/schema.json | 35 + .../versioned/0.0.1/changelog.mdx | 30 + .../versioned/0.0.1/index.mdx | 19 + .../versioned/0.0.1/schema.avro | 9 + .../versioned/1.0.0/changelog.mdx | 26 + .../versioned/1.0.0/index.mdx | 104 + .../versioned/1.0.0/schema.avro | 10 + .../events/OutOfStock/index.mdx | 102 + .../OutOfStock/versioned/0.0.1/index.mdx | 96 + .../services/InventoryService/index.mdx | 88 + .../queries/GetInventoryList/index.mdx | 22 + .../queries/GetInventoryList/schema.json | 53 + .../queries/GetInventoryStatus/index.mdx | 41 + .../queries/GetInventoryStatus/schema.json | 28 + .../versioned/0.0.1/index.mdx | 36 + .../services/NotificationService/index.mdx | 59 + .../queries/GetNotificationDetails/index.mdx | 26 + .../GetNotificationDetails/schema.json | 56 + .../queries/GetUserNotifications/index.mdx | 27 + .../queries/GetUserNotifications/schema.json | 47 + .../services/OrdersService/changelog.mdx | 3 + .../events/OrderAmended/index.mdx | 62 + .../events/OrderAmended/schema.avro | 75 + .../events/OrderAmended/schema.json | 71 + .../events/OrderCancelled/index.mdx | 57 + .../events/OrderCancelled/schema.json | 72 + .../events/OrderConfirmed/index.mdx | 57 + .../events/OrderConfirmed/schema.json | 67 + .../Orders/services/OrdersService/index.mdx | 45 + .../Orders/services/OrdersService/openapi.yml | 185 + .../OrdersService/order-service-asyncapi.yaml | 148 + .../OrdersService/queries/GetOrder/index.mdx | 26 + .../versioned/0.0.2/changelog.mdx | 3 + .../OrdersService/versioned/0.0.2/index.mdx | 34 + .../OrdersService/versioned/0.0.2/openapi.yml | 96 + .../0.0.2/order-service-asyncapi.yaml | 148 + .../commands/CancelShipment/index.mdx | 23 + .../commands/CancelShipment/schema.json | 13 + .../commands/CreateReturnLabel/index.mdx | 22 + .../commands/CreateReturnLabel/schema.json | 19 + .../commands/CreateShipment/index.mdx | 22 + .../commands/CreateShipment/schema.json | 62 + .../commands/UpdateShipmentStatus/index.mdx | 22 + .../commands/UpdateShipmentStatus/schema.json | 29 + .../events/DeliveryFailed/index.mdx | 22 + .../events/DeliveryFailed/schema.json | 17 + .../events/ReturnInitiated/index.mdx | 22 + .../events/ReturnInitiated/schema.json | 17 + .../events/ShipmentCreated/index.mdx | 22 + .../events/ShipmentCreated/schema.json | 65 + .../events/ShipmentDelivered/index.mdx | 22 + .../events/ShipmentDelivered/schema.json | 17 + .../events/ShipmentDispatched/index.mdx | 22 + .../events/ShipmentDispatched/schema.json | 17 + .../events/ShipmentInTransit/index.mdx | 22 + .../events/ShipmentInTransit/schema.json | 17 + .../Orders/services/ShippingService/index.mdx | 49 + .../domains/Orders/ubiquitous-language.mdx | 127 + .../domains/Orders/versioned/0.0.1/index.mdx | 21 + .../domains/Orders/versioned/0.0.2/index.mdx | 49 + .../Payment/entities/Address/index.mdx | 162 + .../Payment/entities/Invoice/index.mdx | 89 + .../Payment/entities/Payment/index.mdx | 137 + .../Payment/entities/PaymentMethod/index.mdx | 77 + .../Payment/entities/Transaction/index.mdx | 77 + .../Payment/flows/PaymentProcessed/index.mdx | 81 + .../nhsnotify/domains/Payment/index.mdx | 40 + .../events/FraudCheckCompleted/index.mdx | 48 + .../events/FraudCheckCompleted/schema.json | 44 + .../services/FraudDetectionService/index.mdx | 59 + .../commands/ProcessPayment/index.mdx | 72 + .../commands/ProcessPayment/schema.json | 58 + .../events/PaymentFailed/index.mdx | 60 + .../events/PaymentFailed/schema.json | 68 + .../services/PaymentGatewayService/index.mdx | 78 + .../events/PaymentInitiated/index.mdx | 40 + .../events/PaymentProcessed/index.mdx | 46 + .../versioned/0.0.1/index.mdx | 42 + .../Payment/services/PaymentService/index.mdx | 33 + .../queries/GetPaymentStatus/index.mdx | 26 + .../queries/GetPaymentStatus/schema.json | 40 + .../domains/Payment/ubiquitous-language.mdx | 96 + .../entities/Category/index.mdx | 124 + .../entities/Inventory/index.mdx | 116 + .../ProductCatalog/entities/Product/index.mdx | 115 + .../ProductCatalog/entities/Review/index.mdx | 154 + .../domains/ProductCatalog/index.mdx | 74 + .../entities/BillingProfile/index.mdx | 68 + .../entities/SubscriptionPeriod/index.mdx | 73 + .../SubscriptionRenewed/index.mdx | 301 + .../flows/CancelSubscription/index.mdx | 68 + .../versioned/0.0.1/index.mdx | 49 + .../nhsnotify/domains/Subscriptions/index.mdx | 35 + .../events/SubscriptionPaymentDue/index.mdx | 60 + .../events/SubscriptionPaymentDue/schema.json | 54 + .../services/BillingService/index.mdx | 86 + .../services/PlanManagementService/index.mdx | 93 + .../commands/CancelSubscription/index.mdx | 25 + .../commands/SubscribeUser/index.mdx | 25 + .../UserSubscriptionCancelled/index.mdx | 25 + .../events/UserSubscriptionStarted/index.mdx | 25 + .../services/SubscriptionService/index.mdx | 42 + .../queries/GetSubscriptionStatus/index.mdx | 26 + .../queries/GetSubscriptionStatus/schema.json | 46 + .../versioned/0.0.1/index.mdx | 26 + .../versioned/0.0.1/schema.json | 46 + .../Subscriptions/ubiquitous-language.mdx | 129 + eventcatalogue/nhsnotify/eventcatalog.auth.js | 45 + .../nhsnotify/eventcatalog.config.js | 42 + .../nhsnotify/eventcatalog.styles.css | 1 + eventcatalogue/nhsnotify/package-lock.json | 27447 ++++++++++++++++ eventcatalogue/nhsnotify/package.json | 16 + eventcatalogue/nhsnotify/pages/index.mdx | 28 + eventcatalogue/nhsnotify/public/logo.png | Bin 0 -> 54304 bytes .../pagefind/fragment/en_1021b93.pf_fragment | Bin 0 -> 620 bytes .../pagefind/fragment/en_18d6a61.pf_fragment | Bin 0 -> 1377 bytes .../pagefind/fragment/en_196898a.pf_fragment | Bin 0 -> 1143 bytes .../pagefind/fragment/en_1ecd3a1.pf_fragment | Bin 0 -> 265 bytes .../pagefind/fragment/en_1f67af9.pf_fragment | Bin 0 -> 385 bytes .../pagefind/fragment/en_25ca6e9.pf_fragment | Bin 0 -> 840 bytes .../pagefind/fragment/en_2626058.pf_fragment | Bin 0 -> 974 bytes .../pagefind/fragment/en_273b191.pf_fragment | Bin 0 -> 777 bytes .../pagefind/fragment/en_2856488.pf_fragment | Bin 0 -> 1288 bytes .../pagefind/fragment/en_2b46555.pf_fragment | Bin 0 -> 538 bytes .../pagefind/fragment/en_2d9f198.pf_fragment | Bin 0 -> 863 bytes .../pagefind/fragment/en_301b8c1.pf_fragment | Bin 0 -> 899 bytes .../pagefind/fragment/en_30873a2.pf_fragment | Bin 0 -> 430 bytes .../pagefind/fragment/en_331de45.pf_fragment | Bin 0 -> 747 bytes .../pagefind/fragment/en_3974596.pf_fragment | Bin 0 -> 418 bytes .../pagefind/fragment/en_3ae8e3f.pf_fragment | Bin 0 -> 366 bytes .../pagefind/fragment/en_3cb14c6.pf_fragment | Bin 0 -> 1191 bytes .../pagefind/fragment/en_43bc6f6.pf_fragment | Bin 0 -> 766 bytes .../pagefind/fragment/en_45c1721.pf_fragment | Bin 0 -> 441 bytes .../pagefind/fragment/en_4820888.pf_fragment | Bin 0 -> 256 bytes .../pagefind/fragment/en_4b413ac.pf_fragment | Bin 0 -> 578 bytes .../pagefind/fragment/en_4b94488.pf_fragment | Bin 0 -> 437 bytes .../pagefind/fragment/en_4cf3a25.pf_fragment | Bin 0 -> 1357 bytes .../pagefind/fragment/en_4ea2d48.pf_fragment | Bin 0 -> 620 bytes .../pagefind/fragment/en_4f69cd7.pf_fragment | Bin 0 -> 378 bytes .../pagefind/fragment/en_5121a24.pf_fragment | Bin 0 -> 1489 bytes .../pagefind/fragment/en_52cc665.pf_fragment | Bin 0 -> 162 bytes .../pagefind/fragment/en_5a91da4.pf_fragment | Bin 0 -> 379 bytes .../pagefind/fragment/en_5dddd39.pf_fragment | Bin 0 -> 402 bytes .../pagefind/fragment/en_5ffd34f.pf_fragment | Bin 0 -> 951 bytes .../pagefind/fragment/en_6147fa4.pf_fragment | Bin 0 -> 585 bytes .../pagefind/fragment/en_631b86b.pf_fragment | Bin 0 -> 1038 bytes .../pagefind/fragment/en_63ba7af.pf_fragment | Bin 0 -> 1442 bytes .../pagefind/fragment/en_657d3e4.pf_fragment | Bin 0 -> 372 bytes .../pagefind/fragment/en_6653e83.pf_fragment | Bin 0 -> 1196 bytes .../pagefind/fragment/en_68d4fda.pf_fragment | Bin 0 -> 402 bytes .../pagefind/fragment/en_6ea615e.pf_fragment | Bin 0 -> 586 bytes .../pagefind/fragment/en_6f75721.pf_fragment | Bin 0 -> 630 bytes .../pagefind/fragment/en_6fdbc3f.pf_fragment | Bin 0 -> 642 bytes .../pagefind/fragment/en_77f5c5a.pf_fragment | Bin 0 -> 772 bytes .../pagefind/fragment/en_79533be.pf_fragment | Bin 0 -> 587 bytes .../pagefind/fragment/en_7a6bc80.pf_fragment | Bin 0 -> 1105 bytes .../pagefind/fragment/en_7c1b3e9.pf_fragment | Bin 0 -> 588 bytes .../pagefind/fragment/en_7d9e2df.pf_fragment | Bin 0 -> 388 bytes .../pagefind/fragment/en_7dfd66f.pf_fragment | Bin 0 -> 383 bytes .../pagefind/fragment/en_7e11776.pf_fragment | Bin 0 -> 196 bytes .../pagefind/fragment/en_808659b.pf_fragment | Bin 0 -> 586 bytes .../pagefind/fragment/en_81852e3.pf_fragment | Bin 0 -> 1149 bytes .../pagefind/fragment/en_822a8c1.pf_fragment | Bin 0 -> 802 bytes .../pagefind/fragment/en_83772ad.pf_fragment | Bin 0 -> 388 bytes .../pagefind/fragment/en_88ccf6d.pf_fragment | Bin 0 -> 1106 bytes .../pagefind/fragment/en_8f91ed9.pf_fragment | Bin 0 -> 670 bytes .../pagefind/fragment/en_909925f.pf_fragment | Bin 0 -> 709 bytes .../pagefind/fragment/en_913119d.pf_fragment | Bin 0 -> 613 bytes .../pagefind/fragment/en_91789a1.pf_fragment | Bin 0 -> 699 bytes .../pagefind/fragment/en_97c3469.pf_fragment | Bin 0 -> 795 bytes .../pagefind/fragment/en_9b497db.pf_fragment | Bin 0 -> 686 bytes .../pagefind/fragment/en_9b91234.pf_fragment | Bin 0 -> 892 bytes .../pagefind/fragment/en_a0e5e21.pf_fragment | Bin 0 -> 897 bytes .../pagefind/fragment/en_a19e5ae.pf_fragment | Bin 0 -> 668 bytes .../pagefind/fragment/en_a2191ab.pf_fragment | Bin 0 -> 1069 bytes .../pagefind/fragment/en_a28c6f4.pf_fragment | Bin 0 -> 745 bytes .../pagefind/fragment/en_a48a51f.pf_fragment | Bin 0 -> 406 bytes .../pagefind/fragment/en_a81f419.pf_fragment | Bin 0 -> 612 bytes .../pagefind/fragment/en_af4d834.pf_fragment | Bin 0 -> 644 bytes .../pagefind/fragment/en_b01a4fe.pf_fragment | Bin 0 -> 537 bytes .../pagefind/fragment/en_b0329cf.pf_fragment | Bin 0 -> 1304 bytes .../pagefind/fragment/en_b6655fd.pf_fragment | Bin 0 -> 431 bytes .../pagefind/fragment/en_b7363cf.pf_fragment | Bin 0 -> 1235 bytes .../pagefind/fragment/en_b8cf62f.pf_fragment | Bin 0 -> 273 bytes .../pagefind/fragment/en_b95d528.pf_fragment | Bin 0 -> 385 bytes .../pagefind/fragment/en_bc5cc5b.pf_fragment | Bin 0 -> 383 bytes .../pagefind/fragment/en_bda2baa.pf_fragment | Bin 0 -> 324 bytes .../pagefind/fragment/en_bed5c45.pf_fragment | Bin 0 -> 1379 bytes .../pagefind/fragment/en_c0f4ebf.pf_fragment | Bin 0 -> 643 bytes .../pagefind/fragment/en_c18521c.pf_fragment | Bin 0 -> 391 bytes .../pagefind/fragment/en_c1dba81.pf_fragment | Bin 0 -> 672 bytes .../pagefind/fragment/en_c6efce1.pf_fragment | Bin 0 -> 316 bytes .../pagefind/fragment/en_c859523.pf_fragment | Bin 0 -> 587 bytes .../pagefind/fragment/en_cb64f68.pf_fragment | Bin 0 -> 528 bytes .../pagefind/fragment/en_cef96e8.pf_fragment | Bin 0 -> 1046 bytes .../pagefind/fragment/en_cfb2fa5.pf_fragment | Bin 0 -> 1258 bytes .../pagefind/fragment/en_cfd2ac2.pf_fragment | Bin 0 -> 634 bytes .../pagefind/fragment/en_d07c51c.pf_fragment | Bin 0 -> 1571 bytes .../pagefind/fragment/en_d0b7f4f.pf_fragment | Bin 0 -> 1023 bytes .../pagefind/fragment/en_d16ebed.pf_fragment | Bin 0 -> 401 bytes .../pagefind/fragment/en_d492209.pf_fragment | Bin 0 -> 396 bytes .../pagefind/fragment/en_d62ad7a.pf_fragment | Bin 0 -> 1096 bytes .../pagefind/fragment/en_d6325ae.pf_fragment | Bin 0 -> 358 bytes .../pagefind/fragment/en_d6f0b67.pf_fragment | Bin 0 -> 1142 bytes .../pagefind/fragment/en_d76fdb6.pf_fragment | Bin 0 -> 1847 bytes .../pagefind/fragment/en_d97c97a.pf_fragment | Bin 0 -> 635 bytes .../pagefind/fragment/en_d9cd4ef.pf_fragment | Bin 0 -> 1082 bytes .../pagefind/fragment/en_da6ca6a.pf_fragment | Bin 0 -> 385 bytes .../pagefind/fragment/en_dad8bf8.pf_fragment | Bin 0 -> 386 bytes .../pagefind/fragment/en_e06e27d.pf_fragment | Bin 0 -> 504 bytes .../pagefind/fragment/en_e0c8213.pf_fragment | Bin 0 -> 768 bytes .../pagefind/fragment/en_e155114.pf_fragment | Bin 0 -> 583 bytes .../pagefind/fragment/en_e44c708.pf_fragment | Bin 0 -> 1208 bytes .../pagefind/fragment/en_e97912b.pf_fragment | Bin 0 -> 590 bytes .../pagefind/fragment/en_f14b679.pf_fragment | Bin 0 -> 1390 bytes .../pagefind/fragment/en_f72ad2b.pf_fragment | Bin 0 -> 1350 bytes .../pagefind/fragment/en_f8a330d.pf_fragment | Bin 0 -> 1266 bytes .../pagefind/fragment/en_f9380e8.pf_fragment | Bin 0 -> 507 bytes .../pagefind/fragment/en_fa6db88.pf_fragment | Bin 0 -> 851 bytes .../pagefind/fragment/en_fc59edc.pf_fragment | Bin 0 -> 826 bytes .../pagefind/fragment/en_fd15314.pf_fragment | Bin 0 -> 1134 bytes .../pagefind/fragment/en_ff18651.pf_fragment | Bin 0 -> 436 bytes .../pagefind/fragment/en_ff4bd0d.pf_fragment | Bin 0 -> 436 bytes .../pagefind/fragment/en_ff78281.pf_fragment | Bin 0 -> 997 bytes .../public/pagefind/index/en_47449b9.pf_index | Bin 0 -> 30710 bytes .../public/pagefind/index/en_50c4541.pf_index | Bin 0 -> 30704 bytes .../public/pagefind/pagefind-entry.json | 1 + .../public/pagefind/pagefind-highlight.js | 1069 + .../public/pagefind/pagefind-modular-ui.css | 214 + .../public/pagefind/pagefind-modular-ui.js | 8 + .../nhsnotify/public/pagefind/pagefind-ui.css | 1 + .../nhsnotify/public/pagefind/pagefind-ui.js | 2 + .../pagefind/pagefind.en_89715effeb.pf_meta | Bin 0 -> 885 bytes .../nhsnotify/public/pagefind/pagefind.js | 9 + .../public/pagefind/wasm.en.pagefind | Bin 0 -> 70873 bytes .../public/pagefind/wasm.unknown.pagefind | Bin 0 -> 67202 bytes eventcatalogue/nhsnotify/teams/full-stack.mdx | 26 + .../nhsnotify/teams/mobile-devs.mdx | 20 + eventcatalogue/nhsnotify/users/aSmith.mdx | 27 + eventcatalogue/nhsnotify/users/dboyne.mdx | 32 + eventcatalogue/nhsnotify/users/mSmith.mdx | 8 + project.code-workspace | 4 + 273 files changed, 36866 insertions(+) create mode 100644 .devcontainer/general/devcontainer.json rename .devcontainer/{ => jekyll}/devcontainer.json (100%) create mode 100644 eventcatalogue/Makefile create mode 100644 eventcatalogue/nhsnotify/.dockerignore create mode 100644 eventcatalogue/nhsnotify/.gitignore create mode 100644 eventcatalogue/nhsnotify/.npmrc create mode 100644 eventcatalogue/nhsnotify/Dockerfile create mode 100644 eventcatalogue/nhsnotify/Dockerfile.server create mode 100644 eventcatalogue/nhsnotify/README.md create mode 100644 eventcatalogue/nhsnotify/channels/inventory.{env}.events/index.mdx create mode 100644 eventcatalogue/nhsnotify/channels/orders.{env}.events/index.mdx create mode 100644 eventcatalogue/nhsnotify/channels/payment.{env}.events/index.mdx create mode 100644 eventcatalogue/nhsnotify/components/footer.astro create mode 100644 eventcatalogue/nhsnotify/domains/E-Commerce/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/changelog.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/entities/CartItem/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/entities/Customer/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/entities/Order/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/entities/OrderItem/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/entities/ShoppingCart/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/changelog.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/commands/AddInventory/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/commands/AddInventory/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/commands/PlaceOrder/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/commands/PlaceOrder/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/commands/UpdateInventory/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/commands/UpdateInventory/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/events/InventoryAdjusted/changelog.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/events/InventoryAdjusted/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/events/InventoryAdjusted/schema.avro create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/events/InventoryAdjusted/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/events/InventoryAdjusted/versioned/0.0.1/changelog.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/events/InventoryAdjusted/versioned/0.0.1/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/events/InventoryAdjusted/versioned/0.0.1/schema.avro create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/events/InventoryAdjusted/versioned/1.0.0/changelog.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/events/InventoryAdjusted/versioned/1.0.0/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/events/InventoryAdjusted/versioned/1.0.0/schema.avro create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/events/OutOfStock/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/events/OutOfStock/versioned/0.0.1/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/queries/GetInventoryList/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/queries/GetInventoryList/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/queries/GetInventoryStatus/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/queries/GetInventoryStatus/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/InventoryService/versioned/0.0.1/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/NotificationService/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/NotificationService/queries/GetNotificationDetails/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/NotificationService/queries/GetNotificationDetails/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/NotificationService/queries/GetUserNotifications/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/NotificationService/queries/GetUserNotifications/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/OrdersService/changelog.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/OrdersService/events/OrderAmended/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/OrdersService/events/OrderAmended/schema.avro create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/OrdersService/events/OrderAmended/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/OrdersService/events/OrderCancelled/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/OrdersService/events/OrderCancelled/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/OrdersService/events/OrderConfirmed/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/OrdersService/events/OrderConfirmed/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/OrdersService/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/OrdersService/openapi.yml create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/OrdersService/order-service-asyncapi.yaml create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/OrdersService/queries/GetOrder/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/OrdersService/versioned/0.0.2/changelog.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/OrdersService/versioned/0.0.2/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/OrdersService/versioned/0.0.2/openapi.yml create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/OrdersService/versioned/0.0.2/order-service-asyncapi.yaml create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/commands/CancelShipment/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/commands/CancelShipment/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/commands/CreateReturnLabel/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/commands/CreateReturnLabel/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/commands/CreateShipment/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/commands/CreateShipment/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/commands/UpdateShipmentStatus/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/commands/UpdateShipmentStatus/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/events/DeliveryFailed/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/events/DeliveryFailed/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/events/ReturnInitiated/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/events/ReturnInitiated/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/events/ShipmentCreated/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/events/ShipmentCreated/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/events/ShipmentDelivered/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/events/ShipmentDelivered/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/events/ShipmentDispatched/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/events/ShipmentDispatched/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/events/ShipmentInTransit/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/events/ShipmentInTransit/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Orders/services/ShippingService/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/ubiquitous-language.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/versioned/0.0.1/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Orders/versioned/0.0.2/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Payment/entities/Address/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Payment/entities/Invoice/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Payment/entities/Payment/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Payment/entities/PaymentMethod/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Payment/entities/Transaction/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Payment/flows/PaymentProcessed/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Payment/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Payment/services/FraudDetectionService/events/FraudCheckCompleted/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Payment/services/FraudDetectionService/events/FraudCheckCompleted/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Payment/services/FraudDetectionService/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Payment/services/PaymentGatewayService/commands/ProcessPayment/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Payment/services/PaymentGatewayService/commands/ProcessPayment/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Payment/services/PaymentGatewayService/events/PaymentFailed/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Payment/services/PaymentGatewayService/events/PaymentFailed/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Payment/services/PaymentGatewayService/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Payment/services/PaymentService/events/PaymentInitiated/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Payment/services/PaymentService/events/PaymentProcessed/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Payment/services/PaymentService/events/PaymentProcessed/versioned/0.0.1/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Payment/services/PaymentService/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Payment/services/PaymentService/queries/GetPaymentStatus/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Payment/services/PaymentService/queries/GetPaymentStatus/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Payment/ubiquitous-language.mdx create mode 100644 eventcatalogue/nhsnotify/domains/ProductCatalog/entities/Category/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/ProductCatalog/entities/Inventory/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/ProductCatalog/entities/Product/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/ProductCatalog/entities/Review/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/ProductCatalog/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Subscriptions/entities/BillingProfile/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Subscriptions/entities/SubscriptionPeriod/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Subscriptions/flows/CancelSubscription/SubscriptionRenewed/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Subscriptions/flows/CancelSubscription/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Subscriptions/flows/CancelSubscription/versioned/0.0.1/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Subscriptions/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Subscriptions/services/BillingService/events/SubscriptionPaymentDue/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Subscriptions/services/BillingService/events/SubscriptionPaymentDue/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Subscriptions/services/BillingService/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Subscriptions/services/PlanManagementService/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Subscriptions/services/SubscriptionService/commands/CancelSubscription/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Subscriptions/services/SubscriptionService/commands/SubscribeUser/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Subscriptions/services/SubscriptionService/events/UserSubscriptionCancelled/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Subscriptions/services/SubscriptionService/events/UserSubscriptionStarted/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Subscriptions/services/SubscriptionService/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Subscriptions/services/SubscriptionService/queries/GetSubscriptionStatus/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Subscriptions/services/SubscriptionService/queries/GetSubscriptionStatus/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Subscriptions/services/SubscriptionService/queries/GetSubscriptionStatus/versioned/0.0.1/index.mdx create mode 100644 eventcatalogue/nhsnotify/domains/Subscriptions/services/SubscriptionService/queries/GetSubscriptionStatus/versioned/0.0.1/schema.json create mode 100644 eventcatalogue/nhsnotify/domains/Subscriptions/ubiquitous-language.mdx create mode 100644 eventcatalogue/nhsnotify/eventcatalog.auth.js create mode 100644 eventcatalogue/nhsnotify/eventcatalog.config.js create mode 100644 eventcatalogue/nhsnotify/eventcatalog.styles.css create mode 100644 eventcatalogue/nhsnotify/package-lock.json create mode 100644 eventcatalogue/nhsnotify/package.json create mode 100644 eventcatalogue/nhsnotify/pages/index.mdx create mode 100644 eventcatalogue/nhsnotify/public/logo.png create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_1021b93.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_18d6a61.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_196898a.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_1ecd3a1.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_1f67af9.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_25ca6e9.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_2626058.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_273b191.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_2856488.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_2b46555.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_2d9f198.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_301b8c1.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_30873a2.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_331de45.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_3974596.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_3ae8e3f.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_3cb14c6.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_43bc6f6.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_45c1721.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_4820888.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_4b413ac.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_4b94488.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_4cf3a25.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_4ea2d48.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_4f69cd7.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_5121a24.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_52cc665.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_5a91da4.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_5dddd39.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_5ffd34f.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_6147fa4.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_631b86b.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_63ba7af.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_657d3e4.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_6653e83.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_68d4fda.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_6ea615e.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_6f75721.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_6fdbc3f.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_77f5c5a.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_79533be.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_7a6bc80.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_7c1b3e9.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_7d9e2df.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_7dfd66f.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_7e11776.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_808659b.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_81852e3.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_822a8c1.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_83772ad.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_88ccf6d.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_8f91ed9.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_909925f.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_913119d.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_91789a1.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_97c3469.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_9b497db.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_9b91234.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_a0e5e21.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_a19e5ae.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_a2191ab.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_a28c6f4.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_a48a51f.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_a81f419.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_af4d834.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_b01a4fe.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_b0329cf.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_b6655fd.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_b7363cf.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_b8cf62f.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_b95d528.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_bc5cc5b.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_bda2baa.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_bed5c45.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_c0f4ebf.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_c18521c.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_c1dba81.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_c6efce1.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_c859523.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_cb64f68.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_cef96e8.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_cfb2fa5.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_cfd2ac2.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_d07c51c.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_d0b7f4f.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_d16ebed.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_d492209.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_d62ad7a.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_d6325ae.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_d6f0b67.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_d76fdb6.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_d97c97a.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_d9cd4ef.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_da6ca6a.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_dad8bf8.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_e06e27d.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_e0c8213.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_e155114.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_e44c708.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_e97912b.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_f14b679.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_f72ad2b.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_f8a330d.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_f9380e8.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_fa6db88.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_fc59edc.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_fd15314.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_ff18651.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_ff4bd0d.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/fragment/en_ff78281.pf_fragment create mode 100644 eventcatalogue/nhsnotify/public/pagefind/index/en_47449b9.pf_index create mode 100644 eventcatalogue/nhsnotify/public/pagefind/index/en_50c4541.pf_index create mode 100644 eventcatalogue/nhsnotify/public/pagefind/pagefind-entry.json create mode 100644 eventcatalogue/nhsnotify/public/pagefind/pagefind-highlight.js create mode 100644 eventcatalogue/nhsnotify/public/pagefind/pagefind-modular-ui.css create mode 100644 eventcatalogue/nhsnotify/public/pagefind/pagefind-modular-ui.js create mode 100644 eventcatalogue/nhsnotify/public/pagefind/pagefind-ui.css create mode 100644 eventcatalogue/nhsnotify/public/pagefind/pagefind-ui.js create mode 100644 eventcatalogue/nhsnotify/public/pagefind/pagefind.en_89715effeb.pf_meta create mode 100644 eventcatalogue/nhsnotify/public/pagefind/pagefind.js create mode 100644 eventcatalogue/nhsnotify/public/pagefind/wasm.en.pagefind create mode 100644 eventcatalogue/nhsnotify/public/pagefind/wasm.unknown.pagefind create mode 100644 eventcatalogue/nhsnotify/teams/full-stack.mdx create mode 100644 eventcatalogue/nhsnotify/teams/mobile-devs.mdx create mode 100644 eventcatalogue/nhsnotify/users/aSmith.mdx create mode 100644 eventcatalogue/nhsnotify/users/dboyne.mdx create mode 100644 eventcatalogue/nhsnotify/users/mSmith.mdx diff --git a/.devcontainer/general/devcontainer.json b/.devcontainer/general/devcontainer.json new file mode 100644 index 0000000..1f9c38f --- /dev/null +++ b/.devcontainer/general/devcontainer.json @@ -0,0 +1,10 @@ +{ + "image": "mcr.microsoft.com/devcontainers/typescript-node", + + "customizations": { + "vscode": { + "extensions": ["streetsidesoftware.code-spell-checker"] + } + }, + "forwardPorts": [3000] +} diff --git a/.devcontainer/devcontainer.json b/.devcontainer/jekyll/devcontainer.json similarity index 100% rename from .devcontainer/devcontainer.json rename to .devcontainer/jekyll/devcontainer.json diff --git a/eventcatalogue/Makefile b/eventcatalogue/Makefile new file mode 100644 index 0000000..0334897 --- /dev/null +++ b/eventcatalogue/Makefile @@ -0,0 +1,11 @@ +first-time-setup: + npx --yes @eventcatalog/create-eventcatalog@latest --organization-name "NHS Notify" nhsnotify + +build: + cd nhsnotify && npm run build + +dev: + cd nhsnotify && npm run dev + +preview: + cd nhsnotify/dist && npx --yes http-server -p 3001 \ No newline at end of file diff --git a/eventcatalogue/nhsnotify/.dockerignore b/eventcatalogue/nhsnotify/.dockerignore new file mode 100644 index 0000000..2450638 --- /dev/null +++ b/eventcatalogue/nhsnotify/.dockerignore @@ -0,0 +1,8 @@ +.eventcatalog-core/ +.git/ +dist/ +node_modules/ +.gitignore +.dockerignore +Dockerfile +README.md diff --git a/eventcatalogue/nhsnotify/.gitignore b/eventcatalogue/nhsnotify/.gitignore new file mode 100644 index 0000000..143c950 --- /dev/null +++ b/eventcatalogue/nhsnotify/.gitignore @@ -0,0 +1,27 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.astro +out +dist + + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +.eventcatalog-core + +.env +.env-* \ No newline at end of file diff --git a/eventcatalogue/nhsnotify/.npmrc b/eventcatalogue/nhsnotify/.npmrc new file mode 100644 index 0000000..fa4e095 --- /dev/null +++ b/eventcatalogue/nhsnotify/.npmrc @@ -0,0 +1 @@ +strict-peer-dependencies=false \ No newline at end of file diff --git a/eventcatalogue/nhsnotify/Dockerfile b/eventcatalogue/nhsnotify/Dockerfile new file mode 100644 index 0000000..3405a94 --- /dev/null +++ b/eventcatalogue/nhsnotify/Dockerfile @@ -0,0 +1,23 @@ +## Stage 1: Build the app +FROM node:lts AS build + +WORKDIR /app + +# Install dependencies +COPY package.json package-lock.json ./ +RUN npm install + +# Copy source code +COPY . . + +# Fix for Astro in Docker: https://github.com/withastro/astro/issues/2596 +ENV NODE_OPTIONS=--max_old_space_size=2048 +# Build the app +RUN npm run build + + +## Stage 2: Serve app with httpd server +FROM httpd:2.4 + +# Copy built app to serve +COPY --from=build /app/dist /usr/local/apache2/htdocs diff --git a/eventcatalogue/nhsnotify/Dockerfile.server b/eventcatalogue/nhsnotify/Dockerfile.server new file mode 100644 index 0000000..8a7332d --- /dev/null +++ b/eventcatalogue/nhsnotify/Dockerfile.server @@ -0,0 +1,23 @@ +# Use this Docker file if your EventCatalog output is set to `server`. +# When EventCatalog output is set to `server`, the output will be a node server. +# This server is required for certain features like the EventCatalog Chat (with your own keys). + +FROM node:lts AS runtime +WORKDIR /app + +# Install dependencies +COPY package.json package-lock.json ./ +RUN npm install + +COPY . . + +# Fix for Astro in Docker: https://github.com/withastro/astro/issues/2596 +ENV NODE_OPTIONS=--max_old_space_size=2048 +RUN npm run build + +ENV HOST=0.0.0.0 +ENV PORT=3000 +EXPOSE 3000 + +# Start the server +CMD npm run start \ No newline at end of file diff --git a/eventcatalogue/nhsnotify/README.md b/eventcatalogue/nhsnotify/README.md new file mode 100644 index 0000000..0536f0d --- /dev/null +++ b/eventcatalogue/nhsnotify/README.md @@ -0,0 +1 @@ +# My Event Catalog diff --git a/eventcatalogue/nhsnotify/channels/inventory.{env}.events/index.mdx b/eventcatalogue/nhsnotify/channels/inventory.{env}.events/index.mdx new file mode 100644 index 0000000..f95bc8b --- /dev/null +++ b/eventcatalogue/nhsnotify/channels/inventory.{env}.events/index.mdx @@ -0,0 +1,157 @@ +--- +id: inventory.{env}.events +name: Inventory Events Channel +version: 1.0.0 +summary: | + Central event stream for all inventory-related events including stock updates, allocations, and adjustments +owners: + - dboyne +address: inventory.{env}.events +protocols: + - kafka + +parameters: + env: + enum: + - dev + - sit + - prod + description: 'Environment to use' +--- + +### Overview +The Inventory Events channel is the central stream for all inventory-related events across the system. This includes stock level changes, inventory allocations, adjustments, and stocktake events. Events for a specific SKU are guaranteed to be processed in sequence when using productId as the partition key. + + + +### Publishing and Subscribing to Events + +#### Publishing Example +```python +from kafka import KafkaProducer +import json +from datetime import datetime + +# Kafka configuration +bootstrap_servers = ['localhost:9092'] +topic = f'inventory.{env}.events' + +# Create a Kafka producer +producer = KafkaProducer( + bootstrap_servers=bootstrap_servers, + value_serializer=lambda v: json.dumps(v).encode('utf-8') +) + +# Example inventory update event +inventory_event = { + "eventType": "STOCK_LEVEL_CHANGED", + "timestamp": datetime.utcnow().isoformat(), + "version": "1.0", + "payload": { + "productId": "PROD-456", + "locationId": "WH-123", + "previousQuantity": 100, + "newQuantity": 95, + "changeReason": "ORDER_FULFILLED", + "unitOfMeasure": "EACH", + "batchInfo": { + "batchId": "BATCH-789", + "expiryDate": "2025-12-31" + } + }, + "metadata": { + "source": "warehouse_system", + "correlationId": "inv-xyz-123", + "userId": "john.doe" + } +} + +# Send the message - using productId as key for partitioning +producer.send( + topic, + key=inventory_event['payload']['productId'].encode('utf-8'), + value=inventory_event +) +producer.flush() + +print(f"Inventory event sent to topic {topic}") + +``` + +### Subscription example + +```python +from kafka import KafkaConsumer +import json +from datetime import datetime + +class InventoryEventConsumer: + def __init__(self): + # Kafka configuration + self.topic = f'inventory.{env}.events' + self.consumer = KafkaConsumer( + self.topic, + bootstrap_servers=['localhost:9092'], + group_id='inventory-processor-group', + auto_offset_reset='earliest', + enable_auto_commit=False, + value_deserializer=lambda x: json.loads(x.decode('utf-8')), + key_deserializer=lambda x: x.decode('utf-8') if x else None + ) + + def process_event(self, event): + """Process individual inventory events based on type""" + event_type = event.get('eventType') + + if event_type == 'STOCK_LEVEL_CHANGED': + self.handle_stock_level_change(event) + elif event_type == 'LOW_STOCK_ALERT': + self.handle_low_stock_alert(event) + # Add more event type handlers as needed + + def handle_stock_level_change(self, event): + """Handle stock level change events""" + payload = event['payload'] + print(f"Stock level change detected for product {payload['productId']}") + print(f"New quantity: {payload['newQuantity']}") + # Add your business logic here + + def handle_low_stock_alert(self, event): + """Handle low stock alert events""" + payload = event['payload'] + print(f"Low stock alert for product {payload['productId']}") + print(f"Current quantity: {payload['currentQuantity']}") + # Add your business logic here + + def start_consuming(self): + """Start consuming messages from the topic""" + try: + print(f"Starting consumption from topic: {self.topic}") + for message in self.consumer: + try: + # Process the message + event = message.value + print(f"Received event: {event['eventType']} for product: {event['payload']['productId']}") + + # Process the event + self.process_event(event) + + # Commit the offset after successful processing + self.consumer.commit() + + except Exception as e: + print(f"Error processing message: {str(e)}") + # Implement your error handling logic here + # You might want to send to a DLQ (Dead Letter Queue) + + except Exception as e: + print(f"Consumer error: {str(e)}") + finally: + # Clean up + self.consumer.close() + +if __name__ == "__main__": + # Create and start the consumer + consumer = InventoryEventConsumer() + consumer.start_consuming() + ``` \ No newline at end of file diff --git a/eventcatalogue/nhsnotify/channels/orders.{env}.events/index.mdx b/eventcatalogue/nhsnotify/channels/orders.{env}.events/index.mdx new file mode 100644 index 0000000..ded6627 --- /dev/null +++ b/eventcatalogue/nhsnotify/channels/orders.{env}.events/index.mdx @@ -0,0 +1,82 @@ +--- +id: orders.{env}.events +name: Order Events Channel +version: 1.0.1 +summary: | + Central event stream for all order-related events in the order processing lifecycle +owners: + - dboyne +address: orders.{env}.events +protocols: + - kafka + +parameters: + env: + enum: + - dev + - sit + - prod + description: 'Environment to use' +--- + +### Overview +The Orders Events channel is the central stream for all order-related events across the order processing lifecycle. This includes order creation, updates, payment status, fulfillment status, and customer communications. All events related to a specific order are guaranteed to be processed in sequence when using orderId as the partition key. + + + +### Publishing a message using Kafka + +Here is an example of how to publish an order event using Kafka: + +```python +from kafka import KafkaProducer +import json +from datetime import datetime + +# Kafka configuration +bootstrap_servers = ['localhost:9092'] +topic = f'orders.{env}.events' + +# Create a Kafka producer +producer = KafkaProducer( + bootstrap_servers=bootstrap_servers, + value_serializer=lambda v: json.dumps(v).encode('utf-8') +) + +# Example order created event +order_event = { + "eventType": "ORDER_CREATED", + "timestamp": datetime.utcnow().isoformat(), + "version": "1.0", + "payload": { + "orderId": "12345", + "customerId": "CUST-789", + "items": [ + { + "productId": "PROD-456", + "quantity": 2, + "price": 29.99 + } + ], + "totalAmount": 59.98, + "shippingAddress": { + "street": "123 Main St", + "city": "Springfield", + "country": "US" + } + }, + "metadata": { + "source": "web_checkout", + "correlationId": "abc-xyz-123" + } +} + +# Send the message - using orderId as key for partitioning +producer.send( + topic, + key=order_event['payload']['orderId'].encode('utf-8'), + value=order_event +) +producer.flush() + +print(f"Order event sent to topic {topic}") \ No newline at end of file diff --git a/eventcatalogue/nhsnotify/channels/payment.{env}.events/index.mdx b/eventcatalogue/nhsnotify/channels/payment.{env}.events/index.mdx new file mode 100644 index 0000000..2aa7396 --- /dev/null +++ b/eventcatalogue/nhsnotify/channels/payment.{env}.events/index.mdx @@ -0,0 +1,88 @@ +--- +id: payments.{env}.events +name: Payment Events Channel +version: 1.0.0 +summary: | + All events contain payment ID for traceability and ordered processing. +owners: + - dboyne +address: payments.{env}.events +protocols: + - kafka + +parameters: + env: + enum: + - dev + - sit + - prod + description: 'Environment to use for payment events' +--- + +### Overview +The Payments Events channel is the central stream for all payment lifecycle events. This includes payment initiation, authorization, capture, completion and failure scenarios. Events for a specific payment are guaranteed to be processed in sequence when using paymentId as the partition key. + + + +### Publishing Events Using Kafka + +Here's an example of publishing a payment event: + +```python +from kafka import KafkaProducer +import json +from datetime import datetime + +# Kafka configuration +bootstrap_servers = ['localhost:9092'] +topic = f'payments.{env}.events' + +# Create Kafka producer +producer = KafkaProducer( + bootstrap_servers=bootstrap_servers, + value_serializer=lambda v: json.dumps(v).encode('utf-8') +) + +# Example payment processed event +payment_event = { + "eventType": "PAYMENT_PROCESSED", + "timestamp": datetime.utcnow().isoformat(), + "version": "1.0", + "payload": { + "paymentId": "PAY-123-456", + "orderId": "ORD-789", + "amount": { + "value": 99.99, + "currency": "USD" + }, + "status": "SUCCESS", + "paymentMethod": { + "type": "CREDIT_CARD", + "last4": "4242", + "expiryMonth": "12", + "expiryYear": "2025", + "network": "VISA" + }, + "transactionDetails": { + "processorId": "stripe_123xyz", + "authorizationCode": "AUTH123", + "captureId": "CAP456" + } + }, + "metadata": { + "correlationId": "corr-123-abc", + "merchantId": "MERCH-456", + "source": "payment_service", + "environment": "prod", + "idempotencyKey": "PAY-123-456-2024-11-11-99.99" + } +} + +# Send message - using paymentId as key for partitioning +producer.send( + topic, + key=payment_event['payload']['paymentId'].encode('utf-8'), + value=payment_event +) +producer.flush() +``` \ No newline at end of file diff --git a/eventcatalogue/nhsnotify/components/footer.astro b/eventcatalogue/nhsnotify/components/footer.astro new file mode 100644 index 0000000..680e6c1 --- /dev/null +++ b/eventcatalogue/nhsnotify/components/footer.astro @@ -0,0 +1,8 @@ +--- +import config from '@config'; +--- + +
+ Event-driven architecture documentation: {config.organizationName} +
+ diff --git a/eventcatalogue/nhsnotify/domains/E-Commerce/index.mdx b/eventcatalogue/nhsnotify/domains/E-Commerce/index.mdx new file mode 100644 index 0000000..00103f6 --- /dev/null +++ b/eventcatalogue/nhsnotify/domains/E-Commerce/index.mdx @@ -0,0 +1,152 @@ +--- +id: E-Commerce +name: E-Commerce +version: 1.0.0 +owners: + - dboyne + - full-stack +domains: + - id: Orders + - id: Payment + - id: Subscription +badges: + - content: Core domain + backgroundColor: blue + textColor: blue + icon: RectangleGroupIcon + - content: Business Critical + backgroundColor: yellow + textColor: yellow + icon: ShieldCheckIcon + +resourceGroups: + - id: related-resources + title: Core FlowMart Services + items: + - id: InventoryService + type: service + - id: OrdersService + type: service + - id: NotificationService + type: service + - id: ShippingService + type: service + - id: CustomerService + type: service + - id: PaymentService + type: service + - id: AnalyticsService + type: service +--- + +import Footer from '@catalog/components/footer.astro'; + +The E-Commerce domain is the core business domain of FlowMart, our modern digital marketplace. This domain orchestrates all critical business operations from product discovery to order fulfillment, handling millions of transactions monthly across our global customer base. + + + + + + +## Domain Overview + +FlowMart's E-Commerce domain is built on event-driven microservices architecture, enabling: +- Real-time inventory management across multiple warehouses +- Seamless payment processing with multiple providers +- Smart order routing and fulfillment +- Personalized customer notifications +- Subscription-based shopping experiences +- Advanced fraud detection and prevention + +## Sub domains + +The E-Commerce domain is built on the following sub domains: + +- Orders - Core domain for order management +- Payment - A generic domain for payment processing using Stripe as a payment provider +- Subscription - Generic subscription domain handling users subscriptions + +## Target Architecture (Event Storming Results) + +Our target architecture was defined through collaborative event storming sessions with product, engineering, and business stakeholders. This represents our vision for FlowMart's commerce capabilities. + + + +## Current Production Architecture + +Our current event-driven architecture powering FlowMart's shopping experience: + + + +### Order Processing Flow + +```mermaid +sequenceDiagram + participant Customer + participant OrdersService + participant InventoryService + participant PaymentService + participant NotificationService + participant ShippingService + + Customer->>OrdersService: Place Order + OrdersService->>InventoryService: Check Stock Availability + InventoryService-->>OrdersService: Stock Confirmed + OrdersService->>PaymentService: Process Payment + PaymentService-->>OrdersService: Payment Successful + OrdersService->>InventoryService: Reserve Inventory + OrdersService->>ShippingService: Create Shipping Label + ShippingService-->>OrdersService: Shipping Label Generated + OrdersService->>NotificationService: Send Order Confirmation + NotificationService-->>Customer: Order & Tracking Details +``` + +## Key Business Flows + +### Subscription Management +Our subscription service powers FlowMart's popular "Subscribe & Save" feature: + + + +### Payment Processing +Secure, multi-provider payment processing with fraud detection: + + + +## Core Services + +These services form the backbone of FlowMart's e-commerce operations: + + + +## Performance SLAs + +- Order Processing: < 2 seconds +- Payment Processing: < 3 seconds +- Inventory Updates: Real-time +- Notification Delivery: < 30 seconds + +## Monitoring & Alerts + +- Real-time order volume monitoring +- Payment gateway health checks +- Inventory level alerts +- Customer experience metrics +- System performance dashboards + +