SyliusCon 2025
Early Bird Deal
LogoLogo
πŸ›£οΈ RoadmapπŸ’» Sylius DemoπŸ’¬ Community Slack
  • Sylius Documentation
  • Sylius Plugins
  • Sylius Stack
  • πŸ“–Sylius 2.0 Documentation
    • Organization
      • Release Cycle
      • Backwards Compatibility Promise
      • Sylius Team
      • Sylius Roadmap
  • Getting Started with Sylius
    • Installation
    • Basic Configuration
    • Shipping & Payment
    • First Product
    • Customizing the Shop
    • Customizing Business Logic
    • Using API
    • Installing Plugins
    • Deployment
    • Summary
  • The Book
    • Introduction to Sylius
    • Installation
      • System Requirements
      • Sylius CE Installation
        • Sylius CE Installation with Docker
      • βž•Sylius Plus Installation
      • Upgrading Sylius CE
      • Upgrading Sylius Plus
    • Architecture
      • Architecture Overview
      • Architectural Drivers
      • Resource Layer
      • State Machine
      • Translations
      • E-Mails
      • Contact
      • Fixtures
      • Events
    • Configuration
      • Channels
      • Locales
      • Currencies
    • Customers
      • Customer & ShopUser
      • βž•Customer Pools
      • AdminUser
      • Addresses
        • Countries
        • Zones
        • Addresses
        • Address Book
    • Products
      • Products
      • Product Reviews
      • Product Associations
      • Attributes
      • Pricing
      • Catalog Promotions
      • Taxons
      • Inventory
      • βž•Multi-Source Inventory
      • Search
    • Carts & Orders
      • Orders
      • Cart flow
      • Taxation
      • Adjustments
      • Cart Promotions
      • Coupons
      • Payments
      • 🧩Invoices
      • Shipments
    • Support
    • Contributing
      • Contributing Code
        • Submitting a Patch
        • ⚠️Security Issues
        • Coding Standards
        • Conventions
        • Sylius License and Trademark
      • Contributing Translations
      • Key Contributors
  • The Customization Guide
    • Customizing Models
      • How to add a custom model?
      • How to add a custom translatable model?
    • Customizing Forms
      • How to add a live form for a custom model?
    • Customizing Styles
    • Customizing Validation
    • Customizing Menus
    • Customizing Templates
    • Customizing Translations
    • Customizing Flashes
    • Customizing State Machines
    • Customizing Grids
    • Customizing Fixtures
    • Customizing API
    • Customizing Serialization of API
    • Customizing Payments
      • How to integrate a Payment Gateway as a Plugin?
  • πŸ§‘β€πŸ³The Cookbook
  • How to resize images?
  • How to add one image to an entity?
  • How to add multiple images to an entity?
  • Sylius 1.X Documentation
    • πŸ““Sylius 1.x Documentation
Powered by GitBook
LogoLogo

Developer

  • Community
  • Online Course

About

  • Team

Β© 2025 Sylius. All Rights Reserved

On this page
  • Architectural drivers
  • Architecture
  • Division into Components, Bundles, Platform
  • Division into Core, Admin, Shop, Api

Was this helpful?

Edit on GitHub
  1. The Book
  2. Architecture

Architecture Overview

PreviousArchitectureNextArchitectural Drivers

Last updated 1 month ago

Was this helpful?

Before we dive separately into every Sylius concept, you need to have an overview of how our main application is structured.

Architectural drivers

All architectural decisions need to be backed by a valid reason. The fundamental signposts we use to take such choices, are explained in section.

Specific decisions we make during the development are often explained using Architectural Decision Records. They’re stored in the for better visibility.

Architecture

On the below image you can see the symbolic representation of Sylius architecture.

Keep on reading this chapter to learn more about each of its parts: Shop, Admin, API, Core, Components and Bundles.

Division into Components, Bundles, Platform

You already know that Sylius is built from components and Symfony bundles, which are integration layers with the framework. All bundles share the same conventions for naming things and the way of data persistence.

Components

Every single component of Sylius can be used standalone. Taking the Taxation component as an example, its only responsibility is to calculate taxes, it does not matter whether these will be taxes for products or anything else, it is fully decoupled. In order to let the Taxation component operate on your objects you need to have them implementing the TaxableInterface. Since then they can have taxes calculated. Such approach is true for every component of Sylius. Besides components that are strictly connected to the e-commerce needs, we have plenty of components that are more general. For instance Attribute, Mailer, Locale etc.

Bundles

These are the Symfony Bundles - therefore if you are a Symfony Developer, and you would like to use the Taxation component in your system, but you do not want to spend time on configuring forms or services in the container. You can include the TaxationBundle in your application with minimal or even no configuration to have access to all the services, models, configure tax rates, tax categories and use that for any taxes you will need.

Platform

This is a fullstack Symfony Application, based on Symfony Standard. Sylius Platform gives you the classic, quite feature rich webshop. Before you start using Sylius you will need to decide whether you will need a full platform with all the features we provide, or maybe you will use decoupled bundles and components to build something very custom, maybe smaller, with different features. But of course the platform itself is highly flexible and can be easily customized to meet all business requirements you may have.

Division into Core, Admin, Shop, Api

Core

Admin

Shop

API

When we created our API based on API Platform framework we have done everything to offer API as easy as possible to use by developer. The most important features of our API:

  • All operations are grouped by shop and admin context (two prefixes);

  • We create all endpoints implementing the REST principles and we are using http verbs (POST, GET, PUT, PATCH, DELETE);

  • Returned responses contain minimal information (developer should extend serialization if need more data);

  • Entire business logic is separated from API - if it necessary we dispatch command instead mixing API logic with business logic.

All the components are packages available via .

The Core is another component that integrates all the other components. This is the place where for example the ProductVariant finally learns that it has a TaxCategory. The Core component is where the ProductVariant implements the TaxableInterface and other interfaces that are useful for its operation. Sylius has here a fully integrated concept of everything that is needed to run a webshop. To get to know more about concepts applied in Sylius - keep on reading .

In every system with the security layer the functionalities of system administration need to be restricted to only some users with a certain role - Administrator. This is the responsibility of our AdminBundle although if you do not need it, you can turn it off. Views have been built using .

Our ShopBundle is basically a standard B2C interface for everything that happens in the system. It is made mainly of yaml configurations and templates. Also here views have been built using .

Developers can enable or disable entire API by changing single parameter (check chapter);

Packagist
The Book
Bootstrap
Bootstrap
this
Architectural Drivers
main Sylius repository