About the discarded idea to distribute OXID GraphQL API with different modules

The emerging OXID GraphQL API is quite easy installable via modules that have been build on top of each other:

The so-called Base Module provides the basis for the integration of GraphQL into the OXID eShop, and we will not touch it: for those who want to develop their own GraphQL routes, feel free to go your very own way starting from the Base Module.

Additionally, we are already developing a usable schema for you to gradually map all functionalities in OXID eShop via GraphQL and, at the end of the day, make the shop controllable completely headless. So far we have divided these modules, which are based on the Base Module, into the following theoretical areas and originally planned to map them as modules (on top of Base) with these names:

  • Catalogue: all operations for products and categories in the store front
  • Account: complete user administration (create and manage customer account, view order history)
  • Checkout: everything required to place an order
  • Admin: store administration via GraphQL (TBD)

In theory, it sounded logical to implement three separate modules for the storefront, beginning with the catalogue area and, built on this, the areas for the customer account and ordering process. However, during the development process, we had to revise this decision in favour of better code readability and maintainability, and it was no longer possible to see clear boundaries in the documentation scheme as to which queries and mutations belonged to which (sub)module.

So after careful consideration of pros and cons, we decided to merge Catalogue, Account and Checkout into a single OXID GraphQL Storefront Module, which you can now find here: https://github.com/OXID-eSales/graphql-storefront-module.

Hence, in the future, we will maintain the repositories for the Base Module as well as for the Storefront Module, although the old module repositories will still be available in the tagged version 1.0.

Outlook: Next up is the integration of external payment providers via GraphQL 😉

Related links:



Start the discussion at OXID forums