Developers/Software stack

From Aimeos documentation

< Developers

Aimeos is organized as layered software stack:

Aimeos-stack.png

The most important thing this image should make clear is that Aimeos needs a host application where it can be integrated. Contrary to other e-commerce systems, Aimeos is first of all no stand-alone software. Instead, it can be used with any PHP framework or existing application where it can be integrated as native package.

Layers

Adapters

The bottom layer in the Aimeos stack contains the adapters to integrate the e-commerce components into the host application or to provide common interfaces for implementations. They exist in the "Aimeos\MW" namespace located in the Aimeos core "./lib/mwlib/" or in extensions if they offer specific integrations.

Adapters for integration into the host application:

  • Cache : Use the caching infrastructure
  • Config : Configure Aimeos using the application
  • Logger : Logging messages to a shared facility
  • Mail : Sending e-mails if available
  • Session : Shared user sessions
  • View : Template engine

Interfaces where often no host implementation exists or it's not reasonable:

  • DB : Database abstraction layer
  • Filesystem : Local and cloud based file access
  • I18n : Translation handling (Gettext)
  • Message Queue : Offload resource intensive tasks

Data access

The second layer offers access to the data stored in relational database systems, NoSQL databases or provided by external (HTTP) APIs. It doesn't matter where the data is stored, the data access layer provides the same PHP API and semantics to the layers above regardless of the source. The implementation is located in the Aimeos core "./lib/mshoplib/" or in extensions.

Within the access layer, separate domains care about specific data, e.g. the product domain manages only the product data while the order domain only cares about order data. There are currently 16 domains available that can be replaced by own implementations for different data sources.

Admin related domains:

  • cache : Key/value cache for storing e.g. HTML blocks
  • job : Job queue for the ExtJS admin interface
  • log : Access to log data

Main shop domains:

  • catalog : Categories and product references
  • coupon : Coupon configuration and code for rebate systems
  • customer : Access to customer related data
  • locale : Site, language and currency related data
  • order : Complete order related data
  • plugin : Basket plugin setup and configuration
  • product : Base product data
  • service : Delivery and payment provider implementations
  • supplier : Product supplier related data

Supporting domains:

  • attribute : Attributes that can be attached to products, services, media, etc.
  • media : Images, documents and files referenced by other domains
  • price : Prices referenced by other domains
  • stock : Product stock levels
  • tag : Tags for all items with a list table
  • text : All kind of texts referenced by other domains