Oryx: Packages

Edit on GitHub

The Oryx code base is available on Github, and the code is published and distributed as npm packages. npmjs.com is a widely used registry of packages. Package managers, like npm, yarn, deno, or bun, are used to install dependencies in a project. The dependencies are typically configured in the package.json file of an application.

Oryx packages are distributed under the spryker-oryx organization. Each time a new version is published, the version number is bumped. For more information on the versioning strategy, see Versioning.

We recommend installing the packages instead of cloning the Oryx repository. By depending on packages, you can easily upgrade to later versions of the packages.

Layers

While packages are distributed as a flat list, there is an architectural hierarchy. The hierarchy protects from cyclic dependencies. Packages inside a layer can depend on sibling packages inside the layer without any issues. Packages can never depend on a layer above.

While the package layering might be irrelevant during your development, it might help you to better understand the package dependencies. The following diagram shows four package layers. The top layer is the boilerplate application, which is set up using a preset.

Template packages

The template layer contains packages that can be used as quick starters for demos and projects. Templated packages follow semantic versioning and ensure upgradability. Some packages in the template layer, like presets, are opinionated and might not be used inside your final setup. Their main purpose is to quickly get up and running a standard frontend application.

PACKAGES LOCATION
Application @spryker-oryx/oryx-application-orchestration/oryx-applicationlication
Presets @spryker-oryx/oryx-presets
Labs @spryker-oryx/labs
Themes @spryker-oryx/themes

The Labs package is an exception. It consists of experimental or demo functionality and is not recommended to be used in production.

Domain packages

Domain packages provide components and service logic for certain domains. Organizing packages in domains improves the developer experience by making it easy to understand where to find a certain component or service. For example, the product domain package contains all product-related components, as well as product services and adapters that integrate with Spryker APIs.

PACKAGES LOCATION
Auth @spryker-oryx/auth
Cart @spryker-oryx/cart
Checkout @spryker-oryx/checkout
Content @spryker-oryx/content
Order @spryker-oryx/order
picking @spryker-oryx/picking
Product @spryker-oryx/product
Search @spryker-oryx/search
Site @spryker-oryx/site
User @spryker-oryx/user

Platform packages

The platform layer contains the core packages of the Oryx framework. They provide the infrastructure to the whole system.

PACKAGES LOCATION
Core @spryker-oryx/core
Experience @spryker-oryx/experience
I18n @spryker-oryx/i18n
Indexed-db @spryker-oryx/indexed-db
offline @spryker-oryx/offline
push-notification @spryker-oryx/push-notification
router @spryker-oryx/router

Base packages

The base layer contains packages that serve as utilities to all layers above. An important part of the base layer is the design system package (UI).

PACKAGES LOCATION
UI @spryker-oryx/ui
Form @spryker-oryx/form
Utilities @spryker-oryx/utilities
DI @spryker-oryx/di