Nexus PIM is a distributed, event-driven Product Information Management platform built with Kotlin and Spring Boot.
Licensed under the Apache License 2.0.
A Product Information Management (PIM) system centralizes and manages all product-related information across an organization.
Unlike ERP systems that manage transactional data (orders, stock, finance), PIM focuses on:
- Product metadata
- Dynamic attributes
- Localization
- Media assets
- Category classification
- Channel-based overrides
- Versioning & publishing lifecycle
Nexus PIM acts as the Single Source of Truth for product information across multiple channels such as:
- E-commerce platforms
- Mobile applications
- Marketplaces
- Internal systems
The system follows Domain-Driven Design (DDD) principles.
- Product (Product Family)
- Variant (SKU)
- Variant Axis (e.g., color, size)
- Attribute
- Attribute Set
- Attribute Group
- Category-based validation rules
- Dynamic value types
- Category hierarchy
- Category-to-attribute-set mapping
- Snapshot-based version control
- Draft / Approved / Published lifecycle
- Active snapshot model
- Multi-language fields (name, description, SEO)
- Locale fallback strategy
- Asset metadata
- Product-media relationships
- Elasticsearch projection
- Channel-aware resolved documents
- High-performance filtering & faceting
Below is a simplified high-level relational model.
CATEGORY
|- id (PK)
|- parent_id (FK -> CATEGORY.id)
+- code
ATTRIBUTE_SET
|- id (PK)
+- code
ATTRIBUTE
|- id (PK)
|- code
|- data_type
|- scope (PRODUCT | VARIANT)
|- is_localizable
+- is_channel_overridable
ATTRIBUTE_SET_ATTRIBUTE
|- attribute_set_id (FK)
|- attribute_id (FK)
|- is_required
+- constraints_json
PRODUCT
|- id (PK)
|- code
|- category_id (FK)
+- status
PRODUCT_VARIANT
|- id (PK)
|- product_id (FK)
|- sku
+- status
CATALOG_SNAPSHOT
|- id (PK)
|- version_no
+- status
ATTRIBUTE_VALUE
|- id (PK)
|- snapshot_id (FK)
|- entity_type (PRODUCT | VARIANT)
|- entity_id
|- attribute_id (FK)
|- channel_id (nullable)
|- locale (nullable)
+- typed value columns
The system supports:
- Dynamic attribute modeling
- Channel-based override resolution
- Snapshot-based versioning
- Locale-aware values
- Kotlin
- Spring Boot 3
- Spring Data JPA
- Flyway
- PostgreSQL (Transactional Write Model)
- Elasticsearch (Search & Read Model)
- Redis (Caching Layer)
- Kafka (Event Backbone)
- Micrometer
- Prometheus
- Grafana
- OpenTelemetry
The platform is designed to run in containerized environments.
- Docker Compose
- PostgreSQL
- Kafka
- Elasticsearch
- Redis
- Kubernetes
- Horizontal scaling
- Distributed logging & tracing
- Centralized monitoring
Architectural principles:
- Database per service
- No shared database access
- Event-driven synchronization
- Eventual consistency
- Idempotent consumers
Nexus PIM is structured as a microservices architecture.
Service Responsibility
catalog Product & Variant management attribute Dynamic attribute definitions & validation taxonomy Category hierarchy content Localization media Media metadata workflow Versioning & publishing lifecycle search Elasticsearch projection & search API
Each microservice:
- Owns its database
- Exposes REST APIs
- Publishes domain events
- Communicates asynchronously via Kafka
This project is licensed under the Apache License 2.0.
See the LICENSE file for details.