Domains

Catalog and search

How product data is owned by the Product Catalog System and projected into Search for customer discovery.

Domain guide

CatalogCatalogDomainv1.0.0The Catalog domain owns everything about products — how they are created, maintained and made discoverable across Acme I...Ownerproduct-platformMapView docs owns the product information that customers browse and buy. It is split into two systems with different consistency needs.

System context map

Product Catalog System

Product 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 docs is the source of truth. Product APIProduct APIServicev1.0.0The public-facing API for the product catalog. Handles commands to create, update and delete products, serves product re...Subscribescreate-product, update-product +2APIsOpenAPIOwnerproduct-platformMapRepoView docs handles product commands and reads from Product DatabaseProduct DatabaseContainerv1.0.0PostgreSQL database that is the system of record for all product data.Ownerproduct-platformMapView docs. Product changes are captured through an outbox and published by Product Search PublisherProduct Search PublisherServicev1.0.0Reads product changes from the product database (outbox) and reliably publishes product-created, product-updated and pro...Publishesproduct-created, product-updated +1Ownerproduct-platformMapRepoView docs.

Key contracts:

Search System

Search SystemSearch SystemSystemv1.0.0Internal system that keeps product data searchable. Consumes product change events from the Product Catalog System, main...Ownersearch-platformMapView docs serves product discovery through Search APISearch APIServicev1.0.0Public-facing API that serves fast, relevant product search to the rest of the business, reading from the search index. Subscribessearch-productsAPIsOpenAPIOwnersearch-platformMapRepoView docs and Search ProductsSearch ProductsQueryv1.0.0Query to search the catalog for products matching a term, with optional filters and pagination. Ownersearch-platformSchemaMapView docs. It maintains Search IndexSearch IndexContainerv1.0.0The denormalised, search-optimised index of products that powers product search.Ownersearch-platformMapView docs from product events.

The Search System should be treated as eventually consistent with the Product Catalog System. If a merchandiser updates a product, the product database is immediately authoritative; search visibility follows after indexing.

Decision context

The product catalog has several architecture decisions documented directly on the system:

These decisions explain why product events are published asynchronously and why Postgres remains the system of record.