Development Journey of the Shopware Administration

K
Development journey of the Shopware Administration
@klarstil
@klarstil
@klarstil
Extensibility
Easy-to-use data handling
Maintainability
DX
What was the goal of the admin panel?
- Extensibility - every part should be customizable by third-
party developers
- Easy-to-use data handling - no need to define models on the
client, no additional overhead for developers
- Great DX and a flat learning curve
- Maintainability - tech stack has to work >5 years
@klarstil
VueX
Vue.js
Twig.js
lodash
Autoprefixr
uuid
Webpack
Vue Router
Axios
SCSS
Symfony
@klarstil
ModuleShopware
Extensibility
@klarstil
@klarstil
Extensibility in detail
- Ability to extend & override components
- Component template needs to be extensible too
- Components need to access services, the data handling & helpers
- Ability to inject routes in an existing module
- Extensions needed to be injected into the application without
compiling on production systems
@klarstil
Component system
- Register, extend & override components
- 230 pre-defined components ready to use
- Access the entire application using the third-party interface
- Built-in dependency injection combined with Vue.js' "inject
& provide" pattern
@klarstil
Templating system
- Component templates are written in Twig syntax
- Twig in the storefront & administration = flat learning curve
- Partial overrides / extends are possible with {% block %} & {% parent %}
- Data rendering is entirely Vue.js based
- Vue.js with Runtime & Compiler with Twig.js for template compiling
@klarstil
Extending component logic & template
@klarstil
@klarstil
Module system
- Translations can be registered independently per module
- Color-coded UX system & icon for your module
- Define routes & child routes as well as support for route middleware
- Definition of a navigation entry for the main menu
@klarstil
Injecting routes into an existing module
- Middleware pattern known from frameworks like Express.js
- Ability to add new child routes or replace existing routes
- Allows to have a flexible way to intersect the registration process
- Built on top of Vue Router
@klarstil
Third-party interface & dependency injection
- Provides access to all parts of the application from every components
- Extensions can register their own services
- Services can be decorated and providing middleware hooks
- IoC DI built on top of Bottle.js
@klarstil
Webpack Building Pipeline
- PHP process provides list of installed extensions as a JSON file
- Custom Webpack plugin injector adds extensions to the core Webpack configuration
- Global third-party interface prevents bundling the same dependency twice
- Ability to extend the Webpack configuration to add extension specific dependencies
- Extensions getting bundled and will be injected at runtime in the bootstrapping
Data handling
@klarstil
@klarstil
Sophisticated data handling
- Entity scheme generated based on the defined server side entities
- Automatic generation of repositories and entities
- Changeset generator to minimize the payload
- OpenAPI compatible format
- Resolves associations between entities out-of-the box
- You define the data and associations you would like to use
@klarstil
Repository SearchResult
EntityDefinition
Factory
Entity
Vue.js ComponentSave entity
Request
Changeset
GeneratorPayload
API
Server Administration
Data flow through the application
@klarstil
Define the data you want - Criteria system
- Repository factory which provides all endpoint to all registered
entities in the system
- Criteria system which allows filtering and sorting
- Associations can be loaded right away
- Automatic mapping of errors to a VueX store for save requests
Maintainability
@klarstil
@klarstil
Credits: https://qz.com/646467/how-one-programmer-broke-the-internet-by-deleting-a-tiny-piece-of-code/
https://www.zdnet.com/article/another-one-line-npm-package-breaks-the-javascript-ecosystem/
Why is NPM a risk factor?
- Our software stack has to work for >5 years
- You never know if a package is getting abandoned
- API changes / breaks of a package imply refactoring
of your code base
- Not every package is following semantic versioning
@klarstilCredits: https://commons.wikimedia.org/wiki/File:Npm-logo.svg
Thin layer / wrapper pattern
- Wrapping third-party dependencies in factories / helpers
- We're defining the public API for the application code
- Everything below the thin layer can be refactored
without breaks
- Packages can be switched out
@klarstil
...it's more than just a website
@klarstil
@klarstil
app
Order Module
Product Module
Settings Module
Customer Module
CMS Module
Media Module
Login Module
Vue.js Adapter
Initializers
Decorators
Filters General Snippets
Mixins
Components
Assets
Icons
General Routes
Vue.js Plugins
Data Layer
Factories
Dependency injection
Workers
core
module
Category ModuleHelper
Thank you! Questions?
@klarstil
https://www.shopware.com/en/
https://docs.shopware.com/
1 of 26

Recommended

Mule any pointstudio by
Mule any pointstudioMule any pointstudio
Mule any pointstudioD.Rajesh Kumar
417 views10 slides
Mule anypoint connector dev kit by
Mule  anypoint connector dev kitMule  anypoint connector dev kit
Mule anypoint connector dev kitD.Rajesh Kumar
659 views12 slides
Anypoint data gateway by
Anypoint data gatewayAnypoint data gateway
Anypoint data gatewayKhan625
691 views10 slides
Anypoint data gateway by
Anypoint data gatewayAnypoint data gateway
Anypoint data gatewayMohammed246
287 views10 slides
Mule Esb Basics by
Mule Esb BasicsMule Esb Basics
Mule Esb Basicsmdfkhan625
471 views33 slides
Mule CMIS connector by
Mule CMIS connectorMule CMIS connector
Mule CMIS connectorAnkush Sharma
411 views10 slides

More Related Content

What's hot

Anypoint platform architecture and components by
Anypoint platform architecture and componentsAnypoint platform architecture and components
Anypoint platform architecture and componentsD.Rajesh Kumar
3.1K views12 slides
Mule architecture by
Mule architectureMule architecture
Mule architecturePhaniu
125 views11 slides
Enterprise service bus mule by
Enterprise service bus  muleEnterprise service bus  mule
Enterprise service bus muleSindhu VL
338 views11 slides
Mule mule runtime engine by
Mule  mule runtime engineMule  mule runtime engine
Mule mule runtime engineD.Rajesh Kumar
586 views10 slides
Mule cloudhub application by
Mule cloudhub applicationMule cloudhub application
Mule cloudhub applicationD.Rajesh Kumar
682 views10 slides
Anypoint connector dev kit by
Anypoint connector dev kitAnypoint connector dev kit
Anypoint connector dev kitD.Rajesh Kumar
281 views10 slides

What's hot(20)

Anypoint platform architecture and components by D.Rajesh Kumar
Anypoint platform architecture and componentsAnypoint platform architecture and components
Anypoint platform architecture and components
D.Rajesh Kumar3.1K views
Mule architecture by Phaniu
Mule architectureMule architecture
Mule architecture
Phaniu125 views
Enterprise service bus mule by Sindhu VL
Enterprise service bus  muleEnterprise service bus  mule
Enterprise service bus mule
Sindhu VL338 views
MuleSoft CloudHub FAQ by Shanky Gupta
MuleSoft CloudHub FAQMuleSoft CloudHub FAQ
MuleSoft CloudHub FAQ
Shanky Gupta928 views
Mulesoftanypointplatformintro by ppts123456
MulesoftanypointplatformintroMulesoftanypointplatformintro
Mulesoftanypointplatformintro
ppts123456401 views
Features of Mule SAP Connector by Sanjeet Pandey
Features of Mule SAP ConnectorFeatures of Mule SAP Connector
Features of Mule SAP Connector
Sanjeet Pandey1.2K views
CloudHub networking guide by Shanky Gupta
CloudHub networking guideCloudHub networking guide
CloudHub networking guide
Shanky Gupta1.6K views
Logging best practice in mule using logger component by Govind Mulinti
Logging best practice in mule using logger componentLogging best practice in mule using logger component
Logging best practice in mule using logger component
Govind Mulinti2.2K views
Web Programming - 3 Laravel Framework by AndiNurkholis1
Web Programming - 3 Laravel FrameworkWeb Programming - 3 Laravel Framework
Web Programming - 3 Laravel Framework
AndiNurkholis1590 views
Mule groovy by Sindhu VL
Mule groovyMule groovy
Mule groovy
Sindhu VL411 views
Deploying mule applications by Bhargav Ranjit
Deploying mule applicationsDeploying mule applications
Deploying mule applications
Bhargav Ranjit1.2K views

Similar to Development Journey of the Shopware Administration

sveltekit-en.pdf by
sveltekit-en.pdfsveltekit-en.pdf
sveltekit-en.pdfssuser65180a
1.1K views101 slides
Open shift and docker - october,2014 by
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014Hojoong Kim
10K views72 slides
Martin Koons Resume 2015 by
Martin Koons Resume 2015Martin Koons Resume 2015
Martin Koons Resume 2015Marty Koons
615 views9 slides
Customer FX Technical Reference Sheet by
Customer FX Technical Reference SheetCustomer FX Technical Reference Sheet
Customer FX Technical Reference SheetGoodCustomers
595 views9 slides
Vue micro frontend implementation patterns by
Vue micro frontend implementation patternsVue micro frontend implementation patterns
Vue micro frontend implementation patternsAlbert Brand
67 views41 slides
#ITsubbotnik Spring 2017: Roman Dimitrenko "Building Paas with the HashiStack" by
#ITsubbotnik Spring 2017: Roman Dimitrenko "Building Paas with the HashiStack"#ITsubbotnik Spring 2017: Roman Dimitrenko "Building Paas with the HashiStack"
#ITsubbotnik Spring 2017: Roman Dimitrenko "Building Paas with the HashiStack"epamspb
82 views35 slides

Similar to Development Journey of the Shopware Administration(20)

Open shift and docker - october,2014 by Hojoong Kim
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014
Hojoong Kim10K views
Martin Koons Resume 2015 by Marty Koons
Martin Koons Resume 2015Martin Koons Resume 2015
Martin Koons Resume 2015
Marty Koons615 views
Customer FX Technical Reference Sheet by GoodCustomers
Customer FX Technical Reference SheetCustomer FX Technical Reference Sheet
Customer FX Technical Reference Sheet
GoodCustomers595 views
Vue micro frontend implementation patterns by Albert Brand
Vue micro frontend implementation patternsVue micro frontend implementation patterns
Vue micro frontend implementation patterns
Albert Brand67 views
#ITsubbotnik Spring 2017: Roman Dimitrenko "Building Paas with the HashiStack" by epamspb
#ITsubbotnik Spring 2017: Roman Dimitrenko "Building Paas with the HashiStack"#ITsubbotnik Spring 2017: Roman Dimitrenko "Building Paas with the HashiStack"
#ITsubbotnik Spring 2017: Roman Dimitrenko "Building Paas with the HashiStack"
epamspb82 views
What's new in IBM MQ Messaging by MarkTaylorIBM
What's new in IBM MQ MessagingWhat's new in IBM MQ Messaging
What's new in IBM MQ Messaging
MarkTaylorIBM2.5K views
Intro to Environment as a Service - Cloudify 5.0.5 Webinar by Cloudify Community
Intro to Environment as a Service - Cloudify 5.0.5 WebinarIntro to Environment as a Service - Cloudify 5.0.5 Webinar
Intro to Environment as a Service - Cloudify 5.0.5 Webinar
Cloudify Community401 views
PaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer Demand by Cisco IT
PaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer DemandPaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer Demand
PaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer Demand
Cisco IT3.5K views
Построение частного облака на примере использования Windows Server 2012R2 и ... by TechExpert
Построение частного облака на примере использования Windows Server  2012R2 и ...Построение частного облака на примере использования Windows Server  2012R2 и ...
Построение частного облака на примере использования Windows Server 2012R2 и ...
TechExpert1.3K views
OroCRM Partner Technical Training: September 2015 by Oro Inc.
OroCRM Partner Technical Training: September 2015OroCRM Partner Technical Training: September 2015
OroCRM Partner Technical Training: September 2015
Oro Inc.2.7K views
Build cloud native solution using open source by Nitesh Jadhav
Build cloud native solution using open source Build cloud native solution using open source
Build cloud native solution using open source
Nitesh Jadhav99 views
MuleSoft Surat Virtual Meetup#27 - MuleSoft Runtime 4.4, Transit Gateway and ... by Jitendra Bafna
MuleSoft Surat Virtual Meetup#27 - MuleSoft Runtime 4.4, Transit Gateway and ...MuleSoft Surat Virtual Meetup#27 - MuleSoft Runtime 4.4, Transit Gateway and ...
MuleSoft Surat Virtual Meetup#27 - MuleSoft Runtime 4.4, Transit Gateway and ...
Jitendra Bafna727 views
Enabling .NET Apps with Monitoring and Management Using Steeltoe by VMware Tanzu
Enabling .NET Apps with Monitoring and Management Using SteeltoeEnabling .NET Apps with Monitoring and Management Using Steeltoe
Enabling .NET Apps with Monitoring and Management Using Steeltoe
VMware Tanzu1.1K views
Adopting AnswerModules ModuleSuite by AnswerModules
Adopting AnswerModules ModuleSuiteAdopting AnswerModules ModuleSuite
Adopting AnswerModules ModuleSuite
AnswerModules426 views
West Yorkshire Mulesoft Meetup #6 by Francis Edwards
West Yorkshire Mulesoft Meetup #6West Yorkshire Mulesoft Meetup #6
West Yorkshire Mulesoft Meetup #6
Francis Edwards352 views

Recently uploaded

Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P... by
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...ShapeBlue
82 views62 slides
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue by
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueCloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueShapeBlue
46 views13 slides
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ... by
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...ShapeBlue
65 views28 slides
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or... by
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...ShapeBlue
88 views20 slides
Five Things You SHOULD Know About Postman by
Five Things You SHOULD Know About PostmanFive Things You SHOULD Know About Postman
Five Things You SHOULD Know About PostmanPostman
40 views43 slides
Keynote Talk: Open Source is Not Dead - Charles Schulz - Vates by
Keynote Talk: Open Source is Not Dead - Charles Schulz - VatesKeynote Talk: Open Source is Not Dead - Charles Schulz - Vates
Keynote Talk: Open Source is Not Dead - Charles Schulz - VatesShapeBlue
119 views15 slides

Recently uploaded(20)

Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P... by ShapeBlue
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...
ShapeBlue82 views
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue by ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueCloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
ShapeBlue46 views
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ... by ShapeBlue
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...
ShapeBlue65 views
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or... by ShapeBlue
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
ShapeBlue88 views
Five Things You SHOULD Know About Postman by Postman
Five Things You SHOULD Know About PostmanFive Things You SHOULD Know About Postman
Five Things You SHOULD Know About Postman
Postman40 views
Keynote Talk: Open Source is Not Dead - Charles Schulz - Vates by ShapeBlue
Keynote Talk: Open Source is Not Dead - Charles Schulz - VatesKeynote Talk: Open Source is Not Dead - Charles Schulz - Vates
Keynote Talk: Open Source is Not Dead - Charles Schulz - Vates
ShapeBlue119 views
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti... by ShapeBlue
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...
ShapeBlue46 views
Data Integrity for Banking and Financial Services by Precisely
Data Integrity for Banking and Financial ServicesData Integrity for Banking and Financial Services
Data Integrity for Banking and Financial Services
Precisely56 views
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T by ShapeBlue
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&TCloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
ShapeBlue56 views
State of the Union - Rohit Yadav - Apache CloudStack by ShapeBlue
State of the Union - Rohit Yadav - Apache CloudStackState of the Union - Rohit Yadav - Apache CloudStack
State of the Union - Rohit Yadav - Apache CloudStack
ShapeBlue145 views
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas... by Bernd Ruecker
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
Bernd Ruecker50 views
DRBD Deep Dive - Philipp Reisner - LINBIT by ShapeBlue
DRBD Deep Dive - Philipp Reisner - LINBITDRBD Deep Dive - Philipp Reisner - LINBIT
DRBD Deep Dive - Philipp Reisner - LINBIT
ShapeBlue62 views
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue by ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlueElevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
ShapeBlue96 views
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ... by Jasper Oosterveld
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit... by ShapeBlue
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...
ShapeBlue57 views
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue by ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlueCloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
ShapeBlue46 views

Development Journey of the Shopware Administration