Akeneo PIM architecture
Akeneo PIM architecture:
flowchart TD
%% UI Layer
subgraph "Web Browser / Micro-Frontend Apps"
direction TB
CF["Category Frontend"]:::ui
ChF["Channel Frontend"]:::ui
ConF["Connectivity Permission Form"]:::ui
DQF["DataQualityInsights Frontend"]:::ui
StrF["Structure Frontend"]:::ui
click CF "https://github.com/bobbercheng/pim-community-dev/tree/master/src/Akeneo/Category/front"
click ChF "https://github.com/bobbercheng/pim-community-dev/tree/master/src/Akeneo/Channel/front"
click ConF "https://github.com/bobbercheng/pim-community-dev/tree/master/src/Akeneo/Connectivity/Connection/workspaces/permission-form"
click DQF "https://github.com/bobbercheng/pim-community-dev/tree/master/src/Akeneo/Pim/Automation/DataQualityInsights/front"
click StrF "https://github.com/bobbercheng/pim-community-dev/tree/master/src/Akeneo/Pim/Structure/front"
end
%% HTTP Layer
subgraph "Symfony Kernel / HTTP Layer"
direction TB
K["Kernel.php"]:::backend
Bst["bootstrap.php"]:::backend
Bnds["bundles.php"]:::backend
Router["Router"]:::backend
Ctrl["InternalApi/ExternalApi Controllers"]:::backend
click K "https://github.com/bobbercheng/pim-community-dev/blob/master/src/Kernel.php"
click Bst "https://github.com/bobbercheng/pim-community-dev/blob/master/config/bootstrap.php"
click Bnds "https://github.com/bobbercheng/pim-community-dev/blob/master/config/bundles.php"
end
%% Backend Context Bundles
subgraph "Backend – Context Bundles"
direction TB
subgraph "Category Context"
direction TB
CatApp["Category Application (Ports)"]:::port
CatDom["Category Domain"]:::domain
CatInfra["Category Infrastructure"]:::adapter
click CatInfra "https://github.com/bobbercheng/pim-community-dev/tree/master/src/Akeneo/Category/back"
end
subgraph "Channel Context"
direction TB
ChApp["Channel Application (Ports)"]:::port
ChDom["Channel Domain"]:::domain
ChInfra["Channel Infrastructure"]:::adapter
click ChInfra "https://github.com/bobbercheng/pim-community-dev/tree/master/src/Akeneo/Channel/back"
end
subgraph "Connectivity Context"
direction TB
ConPorts["Connectivity Ports"]:::port
ConDom["Connectivity Domain"]:::domain
ConInfra["Connectivity Infrastructure"]:::adapter
click ConInfra "https://github.com/bobbercheng/pim-community-dev/tree/master/src/Akeneo/Connectivity/Connection"
end
subgraph "FreeTrial Context"
direction TB
FTApp["FreeTrial Application"]:::port
FTDom["FreeTrial Domain"]:::domain
FTInfra["FreeTrial Symfony Infra"]:::adapter
click FTInfra "https://github.com/bobbercheng/pim-community-dev/tree/master/src/Akeneo/FreeTrial/back/Infrastructure/Symfony"
end
subgraph "DataQualityInsights Context"
direction TB
DQApp["DQI Application"]:::port
DQDom["DQI Domain"]:::domain
DQInfra["DQI Infrastructure"]:::adapter
click DQInfra "https://github.com/bobbercheng/pim-community-dev/tree/master/src/Akeneo/Pim/Automation/DataQualityInsights/back"
end
subgraph "Structure Context"
direction TB
StrApp["Structure Application"]:::port
StrDom["Structure Domain"]:::domain
StrInfra["Structure Infrastructure"]:::adapter
click StrInfra "https://github.com/bobbercheng/pim-community-dev/tree/master/src/Akeneo/Pim/Structure/Bundle"
end
subgraph "UserManagement Context"
direction TB
UMApp["UserMgmt Application"]:::port
UMDom["UserMgmt Domain"]:::domain
UMInfra["UserMgmt Infrastructure"]:::adapter
click UMInfra "https://github.com/bobbercheng/pim-community-dev/tree/master/src/Akeneo/UserManagement/back"
end
subgraph "Akeneo Core Bundles"
Core["Oro/* & Pim Core"]:::core
end
end
%% Infrastructure Services
subgraph "Infrastructure Services"
direction TB
DB["MySQL Database"]:::db
ES["Elasticsearch"]:::db
Bus["Message Bus / Queue"]:::bus
click DB "https://github.com/bobbercheng/pim-community-dev/blob/master/docker/initdb.d/create_db_test.sh"
click ES "https://github.com/bobbercheng/pim-community-dev/blob/master/config/packages/akeneo_elasticsearch.yml"
click Bus "https://github.com/bobbercheng/pim-community-dev/blob/master/config/packages/messenger.yml"
end
%% OAuth2 and CI/CD
subgraph "Security & Orchestration"
direction TB
OAuth["OAuth2 Server (FOSOAuthServer)"]:::infraService
CI["Docker & CircleCI"]:::infraService
click OAuth "https://github.com/bobbercheng/pim-community-dev/blob/master/config/packages/fos_auth_server.yml"
end
%% Flows
CF -->|HTTP/JSON| K
ChF -->|HTTP/JSON| K
ConF -->|HTTP/JSON| K
DQF -->|HTTP/JSON| K
StrF -->|HTTP/JSON| K
K --> Router
Router --> Ctrl
Ctrl --> CatApp
Ctrl --> ChApp
Ctrl --> ConPorts
Ctrl --> FTApp
Ctrl --> DQApp
Ctrl --> StrApp
Ctrl --> UMApp
CatApp --> CatDom
ChApp --> ChDom
ConPorts --> ConDom
FTApp --> FTDom
DQApp --> DQDom
StrApp --> StrDom
UMApp --> UMDom
CatDom --> CatInfra
ChDom --> ChInfra
ConDom --> ConInfra
FTDom --> FTInfra
DQDom --> DQInfra
StrDom --> StrInfra
UMDom --> UMInfra
CatInfra --> DB
ChInfra --> DB
ConInfra --> DB
FTInfra --> DB
DQInfra --> DB
StrInfra --> DB
UMInfra --> DB
CatInfra --> ES
DQInfra --> ES
CatDom --> Bus
ChDom --> Bus
ConDom --> Bus
FTDom --> Bus
DQDom --> Bus
StrDom --> Bus
UMDom --> Bus
Bus --> CatInfra
Bus --> ChInfra
Bus --> ConInfra
Bus --> FTInfra
Bus --> DQInfra
Bus --> StrInfra
Bus --> UMInfra
Core --> CatApp
Core --> ChApp
Core --> ConPorts
Core --> FTApp
Core --> DQApp
Core --> StrApp
Core --> UMApp
OAuth --> Ctrl
CI --> K
%% Styling
classDef ui fill:#D0E8FF,stroke:#3B82F6,color:#1E3A8A;
classDef backend fill:#F0F9FF,stroke:#0C4A6E,color:#0C4A6E;
classDef port fill:#D1FAE5,stroke:#10B981,color:#065F46,shape:hexagon;
classDef domain fill:#FEF3C7,stroke:#D97706,color:#92400E;
classDef adapter fill:#FEF2F2,stroke:#DC2626,color:#7F1D1D;
classDef core fill:#EEF2FF,stroke:#6366F1,color:#4338CA;
classDef db fill:#F5F3FF,stroke:#7C3AED,color:#4C1D95,shape:cylinder;
classDef bus fill:#EFF6FF,stroke:#2563EB,color:#1E40AF,shape:circle;
classDef infraService fill:#ECFDF5,stroke:#22C55E,color:#166534;