Domain: Product¶
The Product domain manages all product-related information: categories, attributes, products, variants, wishlists and product comparisons.
User Stories¶
-
Product — User Stories
Wishlist, compare, product availability and pricing user stories.
Features¶
-
Ergonode PIM
The PIM system that masters all product data: categories, attributes, products, variants and images.
-
Algolia Index Integration
How catalog data is indexed into Algolia to power product search and faceted filtering.
-
Stock Statuses & Orderability
K3 and webshop article statuses, orderable flag, stock display logic, and the conditions under which ordering is blocked.
Responsibilities¶
- Storing and exposing product and variant data (SKU, title, images, descriptions).
- Managing product categorisation.
- Managing attributes, attribute groups, attribute types and attribute values.
- Providing wishlist functionality per customer.
- Providing product comparison functionality.
Entities¶
| Entity | Description |
|---|---|
Product |
A sellable item with a unique SKU, title, images and descriptions. |
ProductVariant |
A specific variant of a product (e.g. size, colour). Has its own SKU and attribute values. |
ProductImage |
An image associated with a product or variant. |
Category |
A hierarchical grouping of products (tree structure). |
AttributeGroup |
A logical grouping of attributes (e.g. "Dimensions", "Material"). |
Attribute |
A typed product property (e.g. "Colour", "Weight", "Material"). |
AttributeOption |
A fixed selectable value for a select-type attribute (e.g. "Red", "Blue"). |
AttributeValue |
The concrete value of an attribute on a product or variant. |
Wishlist |
A named collection of product variants saved by a customer. |
WishlistItem |
A single product variant entry within a wishlist. |
Compare |
A temporary selection of products a customer wants to compare. |
CompareItem |
A single product entry within a compare selection. |
Target Category Structure¶
Work in progress
Zwerfkei is actively designing the new category and navigation structure for the platform. The structure is being developed and revised in a series of versioned spreadsheets maintained by the Zwerfkei team.
The spreadsheets define:
- Which categories will have a dedicated landing page (category page with content, SEO, curated filters).
- Which categories will only be available as filters/facets (no standalone page — accessible through parent category pages only).
- The hierarchy and nesting of categories.
Always use the latest version of the spreadsheet as the reference — older versions are superseded.
Integrations¶
Ergonode PIM
Product catalog data is managed and mastered in Ergonode PIM (SaaS). The Zwerfkei Backend synchronises the following data from Ergonode:
- Categories — hierarchical product categorisation.
- Attributes — attribute groups, attribute types and attribute options.
- Products & Variants
- SKU and title
- Product images or documents
- Product attributes and their values
- Product descriptions
- Product categories
Data flows from Ergonode to the Zwerfkei Backend database via the Ergonode API.
Data Sources: Brands & Suppliers¶
Limited insight
Zwerfkei receives product information and availability data from approximately 17 different sources originating from brands and suppliers. Current insight into these sources is limited.
What still needs to be investigated:
- Which brands and suppliers are linked to which source?
- How frequently is each source queried or processed?
- What information does each source contain exactly (product data, stock, prices, images, etc.)?
- How are the sources delivered (API, FTP, e-mail, EDI, etc.)?
- How does the data from these sources relate to the data in Ergonode PIM?
Purpose of these sources: entering or enriching product information and availability in the platform.
Current Catalogue (reference)¶
Current situation — context for the new platform
The data below is derived from the live zwerfkei.nl website and describes the current product catalogue. It serves as a reference for the scope and depth the new platform must support.
Categories & Scale¶
| Category (NL) | Category (EN) | Products |
|---|---|---|
| Kamperen | Camping | 700+ |
| Outdoorkleding | Outdoor Clothing | 2,669 |
| Schoenen | Footwear | 906 |
| Bergsport & Wintersport | Mountain & Winter Sports | 478 |
| Rugzakken & Tassen | Backpacks & Bags | 791 |
| Travel | Travel | — |
| Uitrusting | Equipment & Tools | — |
| Fiets | Cycling | 679 |
| Boeken & Kaarten | Books & Maps | — |
Total: 1,000+ products · 130+ brands · price range €2.50 – €1,185
Filter Depth per Category¶
The current platform supports highly granular filtering. The new platform must match or exceed this:
- Material (50+ options): down, cotton, nylon, polyester, wool, leather, Gore-Tex, G-1000, Polartec, Merino, etc.
- Technical specs: waterproofing level, wind resistance, hood, insect protection, UPF factor (30/40/50)
- Weight range (numeric input)
- Gender: men's, women's, children's, unisex; sizes XS–4XL with length variants
- Activity (80+ subcategories): hiking, climbing, trail running, cycling, etc.
- Brand (20+ major brands)
- Price slider
- Terrain class: A, B, C, D
- Fit options: standard, wide forefoot, extra wide, extra narrow, Hallux Valgus
- Size conversion: EU / UK / US (sizes 19–52 EU)
- Material (40 types): leather, Gore-Tex, nylon, Merino wool, etc.
- Water resistance level
- Vegan toggle
- Weight range
- Brand
- Price slider
- Volume (litre ranges)
- Weight
- Material: nylon (recycled/standard), Cordura, polyester (recycled), G-1000, ripstop
- Back panel type: ventilated (116 models), non-ventilated
- Access type: top-loading, front-loading (131 models)
- Activity: trekking, dayhiking, bikepacking, commuter
- Brand
- Price slider
- 131 brands
- 177 subcategories
- Material: aluminium, carbon, Gore-Tex, steel
- Safety ratings: kN strength specifications for climbing gear
- Colour (18 options)
- Gender
- Shoe size / rope length
- Price slider
- Waterproofing level
- Material: Ortlieb PU coatings, Gore-Tex, polyester, nylon
- Sub-type: bikepacking, commuter, frame bags, clothing
- Size (XS–XXL for clothing; 36–50 for shoes)
- Brand (Ortlieb, Vaude, others)
- Price slider
Special Collections¶
The current platform organises products into curated collections beyond the main categories:
| Collection | Description |
|---|---|
| Ultralight | Products below a defined weight threshold |
| Survival & Prepping | Emergency preparedness gear |
| Family Holidays | Family-oriented camping and travel gear |
| Bikepacking | Integrated cycling + camping equipment |
| Trail Running | Running-specific outdoor gear |
| Commuter Cycling | Urban cycling equipment |
| Sustainable Products | Environmentally responsible product selection |
Business Rules¶
- A product must have at least one variant.
- A
WishlistItemreferences a specificProductVariant, not just aProduct. - A customer can have only one active
Comparesession; it holds a maximum of 4 products. - Attributes belong to an
AttributeGroupand have a defined type (text, number, select, multi-select, boolean, etc.). AttributeOptionentries are only applicable to attributes of typeselectormulti-select.