Platform

Data ownership

The source-of-truth data stores in the default catalog and the rules for reading and writing business state.

Data

Every durable business concept has an owning system and a source-of-truth store. Other systems should depend on published contracts instead of reaching into another system’s data store.

Source-of-truth stores

Data storeOwnerBusiness data
Product DatabaseProduct DatabaseContainerv1.0.0PostgreSQL database that is the system of record for all product data.Ownerproduct-platformMapView docsProduct Catalog SystemProduct Catalog SystemSystemv1.0.0Internal system that is the source of truth for product data. Owns the product database and publishes product change eve...Ownerproduct-platformMapView docsProducts, product attributes and catalog change outbox.
Search IndexSearch IndexContainerv1.0.0The denormalised, search-optimised index of products that powers product search.Ownersearch-platformMapView docsSearch SystemSearch SystemSystemv1.0.0Internal system that keeps product data searchable. Consumes product change events from the Product Catalog System, main...Ownersearch-platformMapView docsSearch-optimised product documents.
Cart DatabaseCart DatabaseContainerv1.0.0PostgreSQL database that is the system of record for shopping carts and their items.Ownershopping-platformMapView docsCart SystemCart SystemSystemv1.0.0Internal system that owns the customer's shopping cart and the checkout flow. It is the source of truth for cart content...Ownershopping-platformMapView docsActive shopping carts and checkout state.
Promotion DatabasePromotion DatabaseContainerv1.0.0PostgreSQL store of promotion and discount rules.Ownershopping-platformMapView docsPromotion SystemPromotion SystemSystemv1.0.0Internal system that calculates the discounts and promotions that apply to a cart. It owns promotion rules and returns c...Ownershopping-platformMapView docsPromotion rules and discount configuration.
Order DatabaseOrder DatabaseContainerv1.0.0PostgreSQL database that is the system of record for orders and their items.Ownerordering-platformMapView docsOrder Management SystemOrder Management SystemSystemv1.0.0Internal system that is the source of truth for orders. It creates orders, tracks their lifecycle, and publishes events ...Ownerordering-platformMapView docsOrders and order lifecycle state.
Payment DatabasePayment DatabaseContainerv1.0.0PostgreSQL database that is the system of record for payments and refunds.Ownerpayments-platformMapView docsPayment Processing SystemPayment Processing SystemSystemv1.0.0Internal system that orchestrates payment for orders. It authorizes payments, requests charges from the external payment...Ownerpayments-platformMapView docsPayment intents, charge outcomes and refunds.
Inventory DatabaseInventory DatabaseContainerv1.0.0PostgreSQL database that is the system of record for stock levels and reservations.Ownerfulfilment-platformMapView docsInventory SystemInventory SystemSystemv1.0.0Internal system that tracks stock and reserves it for orders. It is the source of truth for available inventory and conf...Ownerfulfilment-platformMapView docsStock levels and reservations.
Warehouse DatabaseWarehouse DatabaseContainerv1.0.0PostgreSQL database that stores picking jobs and their status.Ownerfulfilment-platformMapView docsWarehouse SystemWarehouse SystemSystemv1.0.0Internal system that picks and packs orders in the warehouse. It reacts to completed orders, organises picking, and sign...Ownerfulfilment-platformMapView docsPicking and packing work.
Customer DatabaseCustomer DatabaseContainerv1.0.0PostgreSQL database that is the system of record for all customer profile data.Ownercustomer-platformMapView docsCustomer Management SystemCustomer Management SystemSystemv1.0.0Internal system that is the source of truth for customer profile data. Owns the customer database and publishes customer...Ownercustomer-platformMapView docsCustomer profiles.
Review DatabaseReview DatabaseContainerv1.0.0PostgreSQL database that is the system of record for reviews and their moderation state.Ownerreviews-platformMapView docsReviews & RatingsReviews & RatingsDomainv1.0.0The Reviews & Ratings domain owns customer feedback on products — how reviews are submitted, moderated, published and ag...Ownerreviews-platformMapView docsReviews and moderation state.
Rating CacheRating CacheContainerv1.0.0Redis cache that serves each product's aggregate star rating with low latency.Ownerreviews-platformMapView docsReviews & RatingsReviews & RatingsDomainv1.0.0The Reviews & Ratings domain owns customer feedback on products — how reviews are submitted, moderated, published and ag...Ownerreviews-platformMapView docsProduct rating read model.

Read model pattern

Search SystemSearch SystemSystemv1.0.0Internal system that keeps product data searchable. Consumes product change events from the Product Catalog System, main...Ownersearch-platformMapView docs and Rating CacheRating CacheContainerv1.0.0Redis cache that serves each product's aggregate star rating with low latency.Ownerreviews-platformMapView docs are read models. They do not own the original facts. They rebuild their state from events such as Product CreatedProduct CreatedEventv1.0.0Published when a new product has been added to the catalog. Ownerproduct-platformSchemaMapView docs, Product UpdatedProduct UpdatedEventv1.0.0Published when an existing product's data has changed. Ownerproduct-platformSchemaMapView docs, Review PublishedReview PublishedEventv1.0.0Published when a submitted review passes moderation and becomes visible on the storefront. Ownerreviews-platformSchemaMapView docs and Rating UpdatedRating UpdatedEventv1.0.0Published when a product's aggregate rating changes as a result of a newly published review. Ownerreviews-platformSchemaMapView docs.

Write rule

Only the owning system writes its source-of-truth store. Cross-system updates should be commands or events. For example, checkout asks fulfilment to reserve stock with Reserve InventoryReserve InventoryCommandv1.0.0Command to reserve stock for the items in a checked-out cart. Ownerordering-platformSchemaMapView docs rather than writing Inventory DatabaseInventory DatabaseContainerv1.0.0PostgreSQL database that is the system of record for stock levels and reservations.Ownerfulfilment-platformMapView docs directly.

Consistency rule

User-facing flows should make the consistency model explicit. Checkout needs coordinated confirmation across inventory, payment and order creation, so it uses the Checkout SagaCheckout SagaFlowv1.0.0How the Checkout Orchestrator turns a checked-out cart into an order — reserving inventory, authorizing payment and crea...Ownerordering-platformView flowView docs. Search indexing can lag product writes, so it uses asynchronous product events.