{"version":1,"pages":[{"id":"-MNcGWqhM-xS6DSszViG","title":"Why Scandi","pathname":"/","siteSpaceId":"sitesp_AWu17","description":"Welcome to Scandi, providing next-generation user experience for e-commerce!"},{"id":"-MZljDOmBmRqPFYxgbkH","title":"Quick-start Guide","pathname":"/quick-start-guide","siteSpaceId":"sitesp_AWu17","emoji":"1f680","description":"Get familiar with Scandi in a few minutes!"},{"id":"kO0kiUSnSSXDwB0IWt4u","title":"Roadmap","pathname":"/roadmap","siteSpaceId":"sitesp_AWu17","emoji":"1f5fa","description":""},{"id":"-MVVgnQHeo0DBRZnPZN8","title":"Introduction to the Stack","pathname":"/introduction","siteSpaceId":"sitesp_AWu17","description":"A quick overview of the technologies of Scandi"},{"id":"-MVL1Ha9_ckTFxOTaSh8","title":"CMA, CSA, and ScandiPWA","pathname":"/introduction/cma-csa-and-scandipwa","siteSpaceId":"sitesp_AWu17","description":"Ecosystem overview","breadcrumbs":[{"label":"Introduction to the Stack"}]},{"id":"-MOoq13s_Uq7-qy0BsS8","title":"Challenges","pathname":"/introduction/challenges","siteSpaceId":"sitesp_AWu17","description":"The challenges of creating a PWA for Magento and how we overcome them","breadcrumbs":[{"label":"Introduction to the Stack"}]},{"id":"-MP4IuiyIott1OCg78y6","title":"Setting up Scandi","pathname":"/getting-started-1","siteSpaceId":"sitesp_AWu17","description":"Learn about different installation modes"},{"id":"-MUxW5d_bCOq1_Inrj1D","title":"Storefront Mode Setup","pathname":"/getting-started-1/storefront-mode","siteSpaceId":"sitesp_AWu17","description":"Run Scandi as an separate app","breadcrumbs":[{"label":"Setting up Scandi"}]},{"id":"-MV1KJ8lDbnTL-hnPdu3","title":"Proxying requests to server","pathname":"/getting-started-1/storefront-mode/proxying-requests-to-server","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Setting up Scandi"},{"label":"Storefront Mode Setup"}]},{"id":"-MUxW7Lyak4clRkIK5_U","title":"Magento Mode Setup","pathname":"/getting-started-1/magento-theme-mode","siteSpaceId":"sitesp_AWu17","description":"Build Scandi as a Magento theme","breadcrumbs":[{"label":"Setting up Scandi"}]},{"id":"-MP3PlnAtlis8uSWi5pe","title":"Existing Magento 2 setup","pathname":"/getting-started-1/magento-integration","siteSpaceId":"sitesp_AWu17","description":"The ScandiPWA theme integrates seamlessly with Magento","breadcrumbs":[{"label":"Setting up Scandi"}]},{"id":"-MYPBen5Utqev6PqqlS1","title":"Magento Commerce Cloud setup","pathname":"/getting-started-1/magento-commerce-cloud-setup","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Setting up Scandi"}]},{"id":"-MPDehxQOT6iNnxfSm2s","title":"Updating to new releases","pathname":"/getting-started-1/updating-scandipwa","siteSpaceId":"sitesp_AWu17","description":"Update your Scandi app to the latest version","breadcrumbs":[{"label":"Setting up Scandi"}]},{"id":"-MV0PKELGTKSEjRLVPnm","title":"Storefront mode upgrade","pathname":"/getting-started-1/updating-scandipwa/storefront-mode-upgrade","siteSpaceId":"sitesp_AWu17","description":"Upgrade Scandi in Storefront theme mode to the newest version","breadcrumbs":[{"label":"Setting up Scandi"},{"label":"Updating to new releases"}]},{"id":"-MV0PPaNOJ_h0e_lD-m_","title":"Magento mode upgrade","pathname":"/getting-started-1/updating-scandipwa/magento-mode-upgrade","siteSpaceId":"sitesp_AWu17","description":"Upgrade ScandiPWA in Magento theme mode to the newer version","breadcrumbs":[{"label":"Setting up Scandi"},{"label":"Updating to new releases"}]},{"id":"-MV0PVbl_68pDcp4M0Up","title":"CMA upgrade","pathname":"/getting-started-1/updating-scandipwa/cma-upgrade","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Setting up Scandi"},{"label":"Updating to new releases"}]},{"id":"-MV0PXvo5UYb1Ij7LKNd","title":"CSA upgrade","pathname":"/getting-started-1/updating-scandipwa/csa-upgrade","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Setting up Scandi"},{"label":"Updating to new releases"}]},{"id":"-Me4ZC-eGRKrPmc4Vc9h","title":"Custom ScandiPWA composer dependency update","pathname":"/getting-started-1/updating-scandipwa/custom-scandipwa-composer-dependency-update","siteSpaceId":"sitesp_AWu17","description":"Upgrade a custom ScandiPWA module in Magento theme mode to the newer version","breadcrumbs":[{"label":"Setting up Scandi"},{"label":"Updating to new releases"}]},{"id":"-MePF8CeSdkN_WD8dnTu","title":"Local ScandiPWA Composer Package Setup","pathname":"/getting-started-1/updating-scandipwa/local-scandipwa-composer-package-setup","siteSpaceId":"sitesp_AWu17","description":"ScandiPWA Composer package installation and upgrade for the Core Team","breadcrumbs":[{"label":"Setting up Scandi"},{"label":"Updating to new releases"}]},{"id":"-MV0lsz-WBpGNRLNPtSs","title":"Docker Setup [deprecated]","pathname":"/getting-started-1/depricated-docker-setup","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Setting up Scandi"}]},{"id":"-MP4Ibu23J0RWZfFExZE","title":"Migrating to CMA & CSA","pathname":"/getting-started-1/depricated-docker-setup/migrating-from-the-docker-setup-legacy","siteSpaceId":"sitesp_AWu17","description":"If you have already set up ScandiPWA with docker, you can upgrade to the new setup","breadcrumbs":[{"label":"Setting up Scandi"},{"label":"Docker Setup [deprecated]"}]},{"id":"-MNcOjtIbzbetYFqebke","title":"Override Mechanism","pathname":"/developing-with-scandi/override-mechanism","siteSpaceId":"sitesp_AWu17","description":"Create a customized theme based on ScandiPWA","breadcrumbs":[{"label":"Developing with Scandi"}]},{"id":"-MNcP_Mzb_fzWwn4SQ1y","title":"Overriding JavaScript","pathname":"/developing-with-scandi/override-mechanism/extending-javascript","siteSpaceId":"sitesp_AWu17","description":"Override JavaScript files using the ScandiPWA Override Mechanism","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Override Mechanism"}]},{"id":"-MV1eywHRTP7i-3joJLh","title":"Overriding classes","pathname":"/developing-with-scandi/override-mechanism/extending-javascript/overriding-classes","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Override Mechanism"},{"label":"Overriding JavaScript"}]},{"id":"-MV1f2OzsGu5HXo42hWZ","title":"Overriding non-classes","pathname":"/developing-with-scandi/override-mechanism/extending-javascript/overriding-non-classes","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Override Mechanism"},{"label":"Overriding JavaScript"}]},{"id":"-MNcRT69Hjndi55WsIsz","title":"Overriding Styles","pathname":"/developing-with-scandi/override-mechanism/extending-styles","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Override Mechanism"}]},{"id":"-MOjieryc8iY8bkRdoj8","title":"Overriding the HTML / PHP","pathname":"/developing-with-scandi/override-mechanism/overriding-the-index-file","siteSpaceId":"sitesp_AWu17","description":"You can override index.html and any other static file by matching its path","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Override Mechanism"}]},{"id":"-MPDiXo7GhIaBrGeZ3ej","title":"Parent Themes","pathname":"/developing-with-scandi/override-mechanism/parent-themes","siteSpaceId":"sitesp_AWu17","description":"Let others base their theme on yours","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Override Mechanism"}]},{"id":"-MVFUrrqeCkdXcB5fosC","title":"Extensions","pathname":"/developing-with-scandi/extensions","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Developing with Scandi"}]},{"id":"-MVFgFT8_4bZj6ohK_qC","title":"Creating an extension","pathname":"/developing-with-scandi/extensions/creating-an-extension","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Extensions"}]},{"id":"-MVFgmDmU-Xa-_WiW8wn","title":"Installing an extension","pathname":"/developing-with-scandi/extensions/installing-an-extension","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Extensions"}]},{"id":"-MW-h6S55TA9fiSZkt5e","title":"Migrating from 3.x to 4.x","pathname":"/developing-with-scandi/extensions/migrating-from-3.x-to-4.x","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Extensions"}]},{"id":"-Ma2QoO2J1y4u7qtasMp","title":"Extension Terminology","pathname":"/developing-with-scandi/extensions/extension-terminology","siteSpaceId":"sitesp_AWu17","description":"A document defining and standardizing plugin-related terminology for consistency and clarity across documentation, tutorials and inter-developer communication.","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Extensions"}]},{"id":"-M_UUEIzK4p2K2pbRfvl","title":"Working With Magento","pathname":"/developing-with-scandi/working-with-magento","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Developing with Scandi"}]},{"id":"-MPcNud1U-QxUVk3w9Zo","title":"Magento troubleshooting","pathname":"/developing-with-scandi/working-with-magento/magento-troubleshooting","siteSpaceId":"sitesp_AWu17","description":"Resolving common issues after a Magento+ScandiPWA installation","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Working With Magento"}]},{"id":"-MVF_BE8VZhydDrNynuE","title":"Working with Magento modules","pathname":"/developing-with-scandi/working-with-magento/working-with-magento-modules","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Working With Magento"}]},{"id":"-MPG-7qqnkGpfqcAER7f","title":"Working with GraphQL","pathname":"/developing-with-scandi/working-with-magento/developing-the-magento-backend","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Working With Magento"}]},{"id":"-MlUw3zadA_ICi_U8N4K","title":"GraphQL Security","pathname":"/developing-with-scandi/working-with-magento/graphql-query-compexity","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Working With Magento"}]},{"id":"-MV1SROIQlnsq9MmOXsA","title":"Working with \"granular cache\"","pathname":"/developing-with-scandi/working-with-magento/working-with-granular-cache","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Working With Magento"}]},{"id":"-M_UX0G4C6BSYTlfQ34l","title":"Developer Tools","pathname":"/developing-with-scandi/developer-tools","siteSpaceId":"sitesp_AWu17","description":"To make the development process easier, we have compiled a set of tools for working with Scandi","breadcrumbs":[{"label":"Developing with Scandi"}]},{"id":"-MOVHIAaaDIXii9aACaZ","title":"Debugging in VSCode","pathname":"/developing-with-scandi/developer-tools/debugging-in-chrome","siteSpaceId":"sitesp_AWu17","description":"This guide only works for Visual Studio Code","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Developer Tools"}]},{"id":"-MVpuzCbEWiPXw6TMWNF","title":"ScandiPWA CLI","pathname":"/developing-with-scandi/developer-tools/scandipwa-cli","siteSpaceId":"sitesp_AWu17","description":"A utility for accelerating development with Scandi","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Developer Tools"}]},{"id":"-MV1WfAe4KyIX6zADJLh","title":"Configuring ESLint","pathname":"/developing-with-scandi/developer-tools/configuring-eslint","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Developer Tools"}]},{"id":"-MUxba30fEaQMWm4HUXg","title":"CSA Commands","pathname":"/developing-with-scandi/developer-tools/available-commands","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Developer Tools"}]},{"id":"-M_U_RoTqhVqy-s-dctP","title":"Deploying Your App","pathname":"/developing-with-scandi/deploying-your-app","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Developing with Scandi"}]},{"id":"-MYyMHPmuDQgLaQiumQu","title":"Build & Deploy Android app","pathname":"/developing-with-scandi/deploying-your-app/build-and-deploy-android-app","siteSpaceId":"sitesp_AWu17","description":"You can package Scandi as a native Android application","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Deploying Your App"}]},{"id":"-MYy9SCRvvm4ZRFTs9ZO","title":"Build & Deploy iOS app","pathname":"/developing-with-scandi/deploying-your-app/build-and-deploy-ios-app","siteSpaceId":"sitesp_AWu17","description":"You can package Scandi as a native iOS application","breadcrumbs":[{"label":"Developing with Scandi"},{"label":"Deploying Your App"}]},{"id":"-MUxZ3slqBE7329uexmH","title":"Directory Structure","pathname":"/structure/folder-structure","siteSpaceId":"sitesp_AWu17","description":"A high-level overview of how files are organized in Scandi","breadcrumbs":[{"label":"Structure"}]},{"id":"-MNcqDmUflG0I_EL_pGb","title":"Building Blocks","pathname":"/structure/building-blocks-summary","siteSpaceId":"sitesp_AWu17","description":"Learn about the structure of the ScandiPWA codebase","breadcrumbs":[{"label":"Structure"}]},{"id":"-MNctSfba_-IE_yzAELr","title":"Components","pathname":"/structure/building-blocks-summary/components","siteSpaceId":"sitesp_AWu17","description":"ScandiPWA React components are reusable pieces of UI logic","breadcrumbs":[{"label":"Structure"},{"label":"Building Blocks"}]},{"id":"-MOVSsgz2Hw-ltewxueQ","title":"Styling Components","pathname":"/structure/building-blocks-summary/components/styling-components","siteSpaceId":"sitesp_AWu17","description":"ScandiPWA uses the BEM methodology and SCSS","breadcrumbs":[{"label":"Structure"},{"label":"Building Blocks"},{"label":"Components"}]},{"id":"-MNwKSVyvIri6wyH38H_","title":"Routes","pathname":"/structure/building-blocks-summary/routes","siteSpaceId":"sitesp_AWu17","description":"Routes are pages in your single-page application","breadcrumbs":[{"label":"Structure"},{"label":"Building Blocks"}]},{"id":"-MO0Esw0AOpKiwpb_KD8","title":"Redux Stores","pathname":"/structure/building-blocks-summary/redux-stores","siteSpaceId":"sitesp_AWu17","description":"Redux stores are used to maintain global state","breadcrumbs":[{"label":"Structure"},{"label":"Building Blocks"}]},{"id":"-MO5QlCvRHPOnhdpWRRa","title":"GraphQL Queries","pathname":"/structure/building-blocks-summary/constructing-graphql-queries","siteSpaceId":"sitesp_AWu17","description":"GraphQL queries are generated dynamically using javascript","breadcrumbs":[{"label":"Structure"},{"label":"Building Blocks"}]},{"id":"-MOFmOSS8pR629GGQ4Un","title":"Global Styles","pathname":"/structure/building-blocks-summary/global-styles","siteSpaceId":"sitesp_AWu17","description":"While each component may have its own styles, some styles are globally defined","breadcrumbs":[{"label":"Structure"},{"label":"Building Blocks"}]},{"id":"-MOFeRtKoc3zIo06LUI4","title":"The Util Directory","pathname":"/structure/building-blocks-summary/the-util-directory","siteSpaceId":"sitesp_AWu17","description":"The util directory in ScandiPWA contains various utility functions that don't belong in the other categories","breadcrumbs":[{"label":"Structure"},{"label":"Building Blocks"}]},{"id":"-MOAsI1fsIvYfvTttbBR","title":"Type Checking","pathname":"/structure/building-blocks-summary/type-checking","siteSpaceId":"sitesp_AWu17","description":"ScandiPWA uses PropTypes to help verify that the expected props are passed, and catch bugs","breadcrumbs":[{"label":"Structure"},{"label":"Building Blocks"}]},{"id":"-MOjfU0Au8Zj6i6Y7nTX","title":"Application assets","pathname":"/structure/adding-assets","siteSpaceId":"sitesp_AWu17","description":"Add static assets to your app, such as fonts and favicons","breadcrumbs":[{"label":"Structure"}]},{"id":"-M_UVkJZ8toxjR-zY1VL","title":"Code Style","pathname":"/structure/code-style","siteSpaceId":"sitesp_AWu17","description":"Following our coding style helps maintain a consistent and well-organized codebase","breadcrumbs":[{"label":"Structure"}]},{"id":"-MO_8YZXZtQa8oAHbxMi","title":"JavaScript Code Style","pathname":"/structure/code-style/javascript-code-style","siteSpaceId":"sitesp_AWu17","description":"ScandiPWA follows a strict JavaScript style guide for maintainability and consistency","breadcrumbs":[{"label":"Structure"},{"label":"Code Style"}]},{"id":"-MO_rePLbRL330D37_an","title":"SCSS Code Style","pathname":"/structure/code-style/scss-code-style","siteSpaceId":"sitesp_AWu17","description":"ScandiPWA follows a strict SCSS style guide for maintainability and consistency","breadcrumbs":[{"label":"Structure"},{"label":"Code Style"}]},{"id":"-Mbotx98H31ogl0koX4l","title":"Customizing Your Theme","pathname":"/tutorials/customizing-your-theme","siteSpaceId":"sitesp_AWu17","description":"A walk-through of how you can create your own Scandi-based theme","breadcrumbs":[{"label":"Tutorials"}]},{"id":"-MdI7rFGJ9b2G3U-OE-a","title":"Styling","pathname":"/tutorials/customizing-your-theme/styling","siteSpaceId":"sitesp_AWu17","description":"Give your theme a fresh coat of paint!","breadcrumbs":[{"label":"Tutorials"},{"label":"Customizing Your Theme"}]},{"id":"-Mbou7QSk14CupLZIMo5","title":"Customizing the Global Styles","pathname":"/tutorials/customizing-your-theme/styling/customizing-the-global-styles","siteSpaceId":"sitesp_AWu17","description":"Define the overall look of your application","breadcrumbs":[{"label":"Tutorials"},{"label":"Customizing Your Theme"},{"label":"Styling"}]},{"id":"-Mbto_8SeBckXfmRF-aG","title":"Adding a New Font","pathname":"/tutorials/customizing-your-theme/styling/adding-a-new-font","siteSpaceId":"sitesp_AWu17","description":"Learn to add and use new assets in Scandi","breadcrumbs":[{"label":"Tutorials"},{"label":"Customizing Your Theme"},{"label":"Styling"}]},{"id":"-MciEfD9zL4rLr8h-E4F","title":"Overriding a Components Styles","pathname":"/tutorials/customizing-your-theme/styling/overriding-a-components-styles","siteSpaceId":"sitesp_AWu17","description":"Give a fresh new look to any component – replace the default styles with your own.","breadcrumbs":[{"label":"Tutorials"},{"label":"Customizing Your Theme"},{"label":"Styling"}]},{"id":"-McTLxBFuKprHvxFeZRB","title":"Extending a Component's Styles","pathname":"/tutorials/customizing-your-theme/styling/partially-extending-a-components-styles","siteSpaceId":"sitesp_AWu17","description":"Tailor the details to your needs – make small adjustments while keeping the original styles","breadcrumbs":[{"label":"Tutorials"},{"label":"Customizing Your Theme"},{"label":"Styling"}]},{"id":"-MdLf5ojvF4dOZ2ECYVA","title":"Customizing JavaScript","pathname":"/tutorials/customizing-your-theme/customizing-javascript","siteSpaceId":"sitesp_AWu17","description":"Change the JavaScript logic in your theme!","breadcrumbs":[{"label":"Tutorials"},{"label":"Customizing Your Theme"}]},{"id":"-MePBFXh8IS5lutkoX1H","title":"Customizing the Footer Copyright","pathname":"/tutorials/customizing-your-theme/customizing-javascript/customizing-the-footer-copyright","siteSpaceId":"sitesp_AWu17","description":"Learn to override the copyright text at the bottom of the page","breadcrumbs":[{"label":"Tutorials"},{"label":"Customizing Your Theme"},{"label":"Customizing JavaScript"}]},{"id":"-MdW_HNgvenV7Gf3VkYw","title":"Adding a New Page","pathname":"/tutorials/customizing-your-theme/customizing-javascript/addinga-new-page","siteSpaceId":"sitesp_AWu17","description":"Learn to create new pages (routes) in your Scandi app!","breadcrumbs":[{"label":"Tutorials"},{"label":"Customizing Your Theme"},{"label":"Customizing JavaScript"}]},{"id":"-Me4VmHPYBYS8IhrWK9q","title":"Adding a Section in My Account","pathname":"/tutorials/customizing-your-theme/customizing-javascript/adding-a-section-in-my-account","siteSpaceId":"sitesp_AWu17","description":"Learn to override with a common pattern in Scandi – render maps","breadcrumbs":[{"label":"Tutorials"},{"label":"Customizing Your Theme"},{"label":"Customizing JavaScript"}]},{"id":"-Me9t0-KgNwfz3FIh-Di","title":"Adding a Tab on the Product Page","pathname":"/tutorials/customizing-your-theme/customizing-javascript/adding-a-tab-on-the-product-page","siteSpaceId":"sitesp_AWu17","description":"Another example of overriding a tab configuration","breadcrumbs":[{"label":"Tutorials"},{"label":"Customizing Your Theme"},{"label":"Customizing JavaScript"}]},{"id":"-MePc_5YVgeGYBooP3LV","title":"Creating a New Redux Store","pathname":"/tutorials/customizing-your-theme/customizing-javascript/creating-a-new-redux-store","siteSpaceId":"sitesp_AWu17","description":"Learn to add your Redux store to the Scandi app","breadcrumbs":[{"label":"Tutorials"},{"label":"Customizing Your Theme"},{"label":"Customizing JavaScript"}]},{"id":"-MkMI2qg_eD0b2yDm5jm","title":"Payment Method Integration","pathname":"/tutorials/payment-method-integration","siteSpaceId":"sitesp_AWu17","description":"Integrate an existing payment method so you can use it in a Scandi store!","breadcrumbs":[{"label":"Tutorials"}]},{"id":"-MkMIZaAqVoyb7UeoPFs","title":"Setting Up for Development","pathname":"/tutorials/payment-method-integration/setting-up-for-development","siteSpaceId":"sitesp_AWu17","description":"Before you can start working on the Scandi integration, you need to set up a local environment","breadcrumbs":[{"label":"Tutorials"},{"label":"Payment Method Integration"}]},{"id":"-MkMIqn5CgoYGCw9Pjxe","title":"Redirecting to the Payment Provider","pathname":"/tutorials/payment-method-integration/redirecting-to-the-payment-provider","siteSpaceId":"sitesp_AWu17","description":"Redirect to a 3rd party site after the order is placed","breadcrumbs":[{"label":"Tutorials"},{"label":"Payment Method Integration"}]},{"id":"-MkMJBOP7uBwV1WHLad-","title":"Handling the Customer's Return","pathname":"/tutorials/payment-method-integration/handling-the-customers-return","siteSpaceId":"sitesp_AWu17","description":"Handle the customer's return from a 3rd party site","breadcrumbs":[{"label":"Tutorials"},{"label":"Payment Method Integration"}]},{"id":"-Mi5dW-sfllygo5ZqAOf","title":"Creating a Custom Widget","pathname":"/tutorials/creating-a-custom-widget","siteSpaceId":"sitesp_AWu17","description":"Create a widget you can use anywhere in the Magento CMS!","breadcrumbs":[{"label":"Tutorials"}]},{"id":"-Mi5gZO9kS49RMn1omrm","title":"Scandi CMS System Overview","pathname":"/tutorials/creating-a-custom-widget/scandi-cms-system-overview","siteSpaceId":"sitesp_AWu17","description":"An overview of how the Scandi CMS system works with widgets.","breadcrumbs":[{"label":"Tutorials"},{"label":"Creating a Custom Widget"}]},{"id":"-Mi5egZFcQamJisDc74e","title":"Creating a Magento Widget","pathname":"/tutorials/creating-a-custom-widget/creating-a-magento-widget","siteSpaceId":"sitesp_AWu17","description":"Since widgets are created in the admin panel, we first need to write some Magento logic for the backend part of the widget.","breadcrumbs":[{"label":"Tutorials"},{"label":"Creating a Custom Widget"}]},{"id":"-Mi5fETudW8F8L9gUxTu","title":"Implementing the Rendering","pathname":"/tutorials/creating-a-custom-widget/implementing-the-rendering","siteSpaceId":"sitesp_AWu17","description":"Define how your widget appears in the Scandi theme","breadcrumbs":[{"label":"Tutorials"},{"label":"Creating a Custom Widget"}]},{"id":"-M_USl4csf8PTPGoq_ne","title":"Video Tutorials","pathname":"/tutorials/video-tutorials","siteSpaceId":"sitesp_AWu17","description":"Watch our tutorials and follow along to get a taste of Scandi!","breadcrumbs":[{"label":"Tutorials"}]},{"id":"-MPndaUsyHhj3yHMMh5h","title":"#1 Setting up and talking theory","pathname":"/tutorials/video-tutorials/lets-talk-theory","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Tutorials"},{"label":"Video Tutorials"}]},{"id":"-MPneAIuhfYpLzbqyWUG","title":"#2 Templating in React","pathname":"/tutorials/video-tutorials/templating-in-react","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Tutorials"},{"label":"Video Tutorials"}]},{"id":"-MQM0kNuHQO5t2DbwgM3","title":"#3 Overriding a file","pathname":"/tutorials/video-tutorials/overriding-a-file","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Tutorials"},{"label":"Video Tutorials"}]},{"id":"-MPneMt5Qtpns8PvRtIe","title":"#4 Styling the application","pathname":"/tutorials/video-tutorials/styling-the-application","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Tutorials"},{"label":"Video Tutorials"}]},{"id":"-MPneZ_KdtWER-dEZlnn","title":"#5 Patterns of ScandiPWA","pathname":"/tutorials/video-tutorials/patterns-of-scandipwa","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Tutorials"},{"label":"Video Tutorials"}]},{"id":"-MYEK3eF8d202tGRb_vB","title":"Dark Mode Extension","pathname":"/tutorials/dark-mode-extension","siteSpaceId":"sitesp_AWu17","description":"Implement a Dark Mode extension with the Scandi Plugin Mechanism!","breadcrumbs":[{"label":"Tutorials"}]},{"id":"-M_-dHYDFwXNA_UTs2wK","title":"Deploying Native Apps","pathname":"/tutorials/deploying-native-apps","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Tutorials"}]},{"id":"-MZCAxVSvDVGHWOuxWgb","title":"Product 3D Model Extension","pathname":"/tutorials/product-3d-model-extension","siteSpaceId":"sitesp_AWu17","description":"Implementing a Scandi extension for viewing product 3D models","breadcrumbs":[{"label":"Tutorials"}]},{"id":"-MZCC8RCYPwh0Dzdxr5V","title":"Part 1: Magento 3D Model Uploads","pathname":"/tutorials/product-3d-model-extension/part-1-magento-3d-model-uploads","siteSpaceId":"sitesp_AWu17","description":"Adding 3D model upload functionality to the Magento Admin panel for products","breadcrumbs":[{"label":"Tutorials"},{"label":"Product 3D Model Extension"}]},{"id":"-MZSFC3yFKCcmXNHyayB","title":"Part 2: GraphQL API","pathname":"/tutorials/product-3d-model-extension/part-2-graphql-api","siteSpaceId":"sitesp_AWu17","description":"Expose product 3D models through the GraphQL API","breadcrumbs":[{"label":"Tutorials"},{"label":"Product 3D Model Extension"}]},{"id":"-MZXe1npyNu9r5lpUEoG","title":"Part 3: Scandi Frontend","pathname":"/tutorials/product-3d-model-extension/part-3-scandi-frontend","siteSpaceId":"sitesp_AWu17","description":"Display 3D models on the product page","breadcrumbs":[{"label":"Tutorials"},{"label":"Product 3D Model Extension"}]},{"id":"-MbH2VdQ__MwdrSU6l4C","title":"Social Share, Full Extension Development","pathname":"/tutorials/scandipwa-social-share","siteSpaceId":"sitesp_AWu17","description":"In this tutorial, we going to develop one of the most popular extensions on different marketplaces SocialShare","breadcrumbs":[{"label":"Tutorials"}]},{"id":"-MbHAnmqeIohgxrplFB3","title":"STEP-1 and 2 Creating Magento 2 Module","pathname":"/tutorials/scandipwa-social-share/step-1-and-2-creating-magento-2-module","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Tutorials"},{"label":"Social Share, Full Extension Development"}]},{"id":"-MbHCvnrRW-6e1TJj6KL","title":"STEP-3 Backend Configurations Settings","pathname":"/tutorials/scandipwa-social-share/step-3-backend-configurations-settings","siteSpaceId":"sitesp_AWu17","description":"In this step we going to create Module backend configurations","breadcrumbs":[{"label":"Tutorials"},{"label":"Social Share, Full Extension Development"}]},{"id":"-MbHIsWVVsCP_i2cNxEN","title":"STEP-4 Simple GraphQl and Resolver","pathname":"/tutorials/scandipwa-social-share/step-4-simple-graphql-and-resolver","siteSpaceId":"sitesp_AWu17","description":"The next few steps not going to be so visual, but very important, we going to create an Extension and establish the connection (communication) between this extension and our module.","breadcrumbs":[{"label":"Tutorials"},{"label":"Social Share, Full Extension Development"}]},{"id":"-MbHSTgRYW7NcajRlgw_","title":"STEP-5 Creating Extension, Base Redux Store","pathname":"/tutorials/scandipwa-social-share/step-5-creating-extension-base-redux-store","siteSpaceId":"sitesp_AWu17","description":"In this step finally, we going to begin scandipwa extension development","breadcrumbs":[{"label":"Tutorials"},{"label":"Social Share, Full Extension Development"}]},{"id":"-MbHVVulfivkAfaXCSmH","title":"STEP-6 Extension plugins","pathname":"/tutorials/scandipwa-social-share/step-6-extension-plugins","siteSpaceId":"sitesp_AWu17","description":"In this step, we going finally write our first Extension plugins, at first we will assign our reducer to the global redux store, and then will plugin into the Router container mapDispatchToProps.","breadcrumbs":[{"label":"Tutorials"},{"label":"Social Share, Full Extension Development"}]},{"id":"-MbKenv8-PQnKYX8DTBT","title":"STEP-7 GraphQL types, Helpers","pathname":"/tutorials/scandipwa-social-share/step-7-graphql-types-helpers","siteSpaceId":"sitesp_AWu17","description":"As we have successfully established a connection with backend and frontend, let's prepare and collect all configurations we created at STEP-3 transfer.","breadcrumbs":[{"label":"Tutorials"},{"label":"Social Share, Full Extension Development"}]},{"id":"-MbL4N0_csGqEfpd9eJQ","title":"STEP-8 Query Field and FieldList","pathname":"/tutorials/scandipwa-social-share/step-8-query-field-and-fieldlist","siteSpaceId":"sitesp_AWu17","description":"In this step, we going to modify our query to fetch all config data to the frontend","breadcrumbs":[{"label":"Tutorials"},{"label":"Social Share, Full Extension Development"}]},{"id":"-MbL5oxelFQIojkdyymy","title":"STEP-9 render Plugins and MSTP Plugin, Component creation","pathname":"/tutorials/scandipwa-social-share/step-9-render-plugins-and-mstp-plugin-component-creation","siteSpaceId":"sitesp_AWu17","description":"Now we going to create plugins for the Product Page.","breadcrumbs":[{"label":"Tutorials"},{"label":"Social Share, Full Extension Development"}]},{"id":"-MbLAcAYQM_R2Jo4tvMS","title":"STEP-10 SocialShare Component Development","pathname":"/tutorials/scandipwa-social-share/step-10-socialshare-component-development","siteSpaceId":"sitesp_AWu17","description":"And we ready to develop our SocialShare component","breadcrumbs":[{"label":"Tutorials"},{"label":"Social Share, Full Extension Development"}]},{"id":"-MbLDI6LAz2cxXOLyjtR","title":"STEP-11 SocialShare for CategoryPage","pathname":"/tutorials/scandipwa-social-share/step-11-socialshare-for-categorypage","siteSpaceId":"sitesp_AWu17","description":"In this step we going to create SocialShare for Category page","breadcrumbs":[{"label":"Tutorials"},{"label":"Social Share, Full Extension Development"}]},{"id":"-MbLE_WzrDUmEreXXj9c","title":"TASK-1 Changing LinkedIn to Twitter","pathname":"/tutorials/scandipwa-social-share/task-1-changing-linkedin-to-twitter","siteSpaceId":"sitesp_AWu17","description":"Task that you can do to practice","breadcrumbs":[{"label":"Tutorials"},{"label":"Social Share, Full Extension Development"}]},{"id":"-MbLHXMt023ZZ91SFQYT","title":"STEP-12 Comments for Admin Users","pathname":"/tutorials/scandipwa-social-share/step-12-comments-for-admin-users","siteSpaceId":"sitesp_AWu17","description":"At this Step we going to add useful comments and fix some bugs","breadcrumbs":[{"label":"Tutorials"},{"label":"Social Share, Full Extension Development"}]},{"id":"-MbLJQBV3FZ8xgSKQ3A7","title":"STEP-13 Final, bugfixes","pathname":"/tutorials/scandipwa-social-share/step-13-final-bugfixes","siteSpaceId":"sitesp_AWu17","description":"Finalizing Extension","breadcrumbs":[{"label":"Tutorials"},{"label":"Social Share, Full Extension Development"}]},{"id":"-MlOon5Hsjb4fd_Mf5q8","title":"Accessing Magento 2 Controllers","pathname":"/tutorials/accessing-magento-2-controllers","siteSpaceId":"sitesp_AWu17","description":"Accessing Magento 2 native controllers","breadcrumbs":[{"label":"Tutorials"}]},{"id":"-MlOpjqfBTs7W_dof9lI","title":"STEP-1 Creating Magento 2 Module","pathname":"/tutorials/accessing-magento-2-controllers/step-1-creating-magento-2-module","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Tutorials"},{"label":"Accessing Magento 2 Controllers"}]},{"id":"-MlOsSG7qC9fEWIT3zVC","title":"STEP-2 - Create Magento 2 Frontend Route and Basic Controller","pathname":"/tutorials/accessing-magento-2-controllers/step-2-create-magento-2-frontend-route-and-basic-controller","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Tutorials"},{"label":"Accessing Magento 2 Controllers"}]},{"id":"-MlOvGVFezx-WQhNjuHn","title":"STEP-3 Accessing Magento 2 Controller, Bypassing ScandiPWA frontend","pathname":"/tutorials/accessing-magento-2-controllers/step-3-accessing-magento-2-controller-bypassing-scandipwa-frontend","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Tutorials"},{"label":"Accessing Magento 2 Controllers"}]},{"id":"-MlOxDY6IIZX_9r-GakX","title":"STEP-4 Creating ScandiPWA Extension with additional dependencies","pathname":"/tutorials/accessing-magento-2-controllers/step-4-creating-scandipwa-extension-with-additional-dependencies","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Tutorials"},{"label":"Accessing Magento 2 Controllers"}]},{"id":"-MlOzEXd_Ihaqzx1Hvme","title":"STEP-5 Creating Plugin and Axios request","pathname":"/tutorials/accessing-magento-2-controllers/step-5-creating-plugin-and-axios-request","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"Tutorials"},{"label":"Accessing Magento 2 Controllers"}]},{"id":"-MOeO_GtmstNQocIkGL2","title":"Support","pathname":"/about/support","siteSpaceId":"sitesp_AWu17","description":"Need more help? Let us know!","breadcrumbs":[{"label":"About"}]},{"id":"Kjd3twyC0PryvXLDZitx","title":"Release notes","pathname":"/about/release-notes","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"About"}]},{"id":"-MPcV34doZxzud1NVwr4","title":"Technical Information","pathname":"/about/technical-information","siteSpaceId":"sitesp_AWu17","description":"Regarding technical decisions behind ScandiPWA","breadcrumbs":[{"label":"About"}]},{"id":"-Mf8ZCpbnnNeLs9WO9pn","title":"Data Analytics","pathname":"/about/data-analytics","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"About"}]},{"id":"-MOegv0u_0CH5jZ8WQfE","title":"Contributing","pathname":"/about/contributing","siteSpaceId":"sitesp_AWu17","description":"We appreciate contributions from the community!","breadcrumbs":[{"label":"About"}]},{"id":"-MXg41oN-D_48xLQ8lJW","title":"Installation from Fork","pathname":"/about/contributing/installation-from-fork","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"About"},{"label":"Contributing"}]},{"id":"-MXg2oeZqTyCfjAb-m9u","title":"Repository structure","pathname":"/about/contributing/repository-structure","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"About"},{"label":"Contributing"}]},{"id":"-MXg7IDs620C6ILgkTqW","title":"Code contribution process","pathname":"/about/contributing/code-contribution-process","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"About"},{"label":"Contributing"}]},{"id":"-MOjSwedBQK5oK-lRqIG","title":"Submitting an Issue","pathname":"/about/contributing/submitting-an-issue","siteSpaceId":"sitesp_AWu17","description":"Found a bug? Got an idea? Please let us know!","breadcrumbs":[{"label":"About"},{"label":"Contributing"}]},{"id":"-MXpd8nFbgx3NNcpL_TT","title":"Publishing ScandiPWA","pathname":"/about/contributing/publishing-scandipwa","siteSpaceId":"sitesp_AWu17","description":"","breadcrumbs":[{"label":"About"},{"label":"Contributing"}]}]}