<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Hervé Guétin</title>
    <description>The latest articles on DEV Community by Hervé Guétin (@herveguetin).</description>
    <link>https://dev.to/herveguetin</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1644412%2F9e52f148-c96a-4f4e-a27e-ebb425b70f6a.jpg</url>
      <title>DEV Community: Hervé Guétin</title>
      <link>https://dev.to/herveguetin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/herveguetin"/>
    <language>en</language>
    <item>
      <title>How to develop modern Shopify Custom Apps with Brush</title>
      <dc:creator>Hervé Guétin</dc:creator>
      <pubDate>Sun, 25 Jan 2026 10:05:23 +0000</pubDate>
      <link>https://dev.to/herveguetin/how-to-architect-modern-shopify-custom-apps-with-brush-4a1b</link>
      <guid>https://dev.to/herveguetin/how-to-architect-modern-shopify-custom-apps-with-brush-4a1b</guid>
      <description>&lt;p&gt;Building &lt;strong&gt;Shopify custom applications&lt;/strong&gt; from scratch can be challenging, especially if you’re tired of rewriting boilerplate for every project. The Shopify developer ecosystem has tutorials, but &lt;strong&gt;open-source starter kits for production-ready apps are still rare&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;That’s why I built &lt;strong&gt;&lt;a href="https://brush.maddlen.fr/" rel="noopener noreferrer"&gt;Brush&lt;/a&gt;&lt;/strong&gt;, a full-stack starter kit designed to give developers and agencies a modern, maintainable, and scalable foundation for complex Shopify custom apps.&lt;/p&gt;

&lt;p&gt;In this post, I’ll cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why a starter kit matters
&lt;/li&gt;
&lt;li&gt;What Brush includes
&lt;/li&gt;
&lt;li&gt;How its stack accelerates development
&lt;/li&gt;
&lt;li&gt;When to use it in real projects&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why a starter kit for Shopify Custom Apps matters
&lt;/h2&gt;

&lt;p&gt;Shopify &lt;strong&gt;Custom Apps&lt;/strong&gt; allow you to build bespoke backend logic, admin interfaces, and storefront enhancements tailored to a specific store. Unlike public apps, custom apps are exclusive to a shop’s needs.  &lt;/p&gt;

&lt;p&gt;But building them involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authentication to the Shopify APIs&lt;/li&gt;
&lt;li&gt;Backend data modeling
&lt;/li&gt;
&lt;li&gt;Frontend integration with Shopify themes
&lt;/li&gt;
&lt;li&gt;Build tooling and deployment
&lt;/li&gt;
&lt;li&gt;Localization and validation&lt;/li&gt;
&lt;li&gt;And, of course, a scalable hosting architecture
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without a starter kit, you spend weeks wiring this infrastructure before adding meaningful features.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Brush actually is
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Brush&lt;/strong&gt; addresses repetitive setup work and provides a &lt;strong&gt;modern, cohesive framework&lt;/strong&gt; for building Shopify Custom Apps. It’s open-source and aimed at developers who want:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High-quality, maintainable code
&lt;/li&gt;
&lt;li&gt;Scalable architecture for quality apps
&lt;/li&gt;
&lt;li&gt;Production-ready tooling and patterns
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of reinventing the wheel for each project, Brush gives you a reliable foundation for serious custom app development.&lt;/p&gt;




&lt;h2&gt;
  
  
  The stack behind Brush
&lt;/h2&gt;

&lt;p&gt;Brush combines modern tools chosen for real-world web app development:&lt;/p&gt;

&lt;h3&gt;
  
  
  🟢 Gadget.dev — Backend &amp;amp; hosting
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://gadget.dev/" rel="noopener noreferrer"&gt;Gadget.dev&lt;/a&gt; powers the backend (hosting, database, scheduling) and exposes a REST API for Shopify themes and admin pages. It handles authentication, Shopify API integration, and provides production-ready backend infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  🟢 Zod — Data validation
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://zod.dev/" rel="noopener noreferrer"&gt;Zod&lt;/a&gt; installed out-of-the-box so that you can validate data flowing between your Shopify theme and backend, ensuring type safety and consistency throughout your app.&lt;/p&gt;

&lt;h3&gt;
  
  
  🟢 Vite — Fast frontend builds
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://vite.dev/" rel="noopener noreferrer"&gt;Vite&lt;/a&gt; builds a modern frontend that integrates seamlessly with Shopify themes, producing lightweight (&amp;lt;35 kB) optimized bundles for fast performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  🟢 Alpine.js — Lightweight frontend reactivity
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://alpinejs.dev/" rel="noopener noreferrer"&gt;Alpine.js&lt;/a&gt; provides reactive components within the Vite app, enhancing server-rendered Shopify themes without adding bloat.&lt;/p&gt;

&lt;h3&gt;
  
  
  🟢 i18next — Unified translations
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.i18next.com/" rel="noopener noreferrer"&gt;i18next&lt;/a&gt; delivers a single source of translations across frontend and backend. Brush makes this possible by using Shopify theme locale files for consistency.&lt;/p&gt;

&lt;h3&gt;
  
  
  🟢 TypeScript everywhere
&lt;/h3&gt;

&lt;p&gt;Brush uses &lt;a href="https://www.typescriptlang.org/" rel="noopener noreferrer"&gt;TypeScript&lt;/a&gt; throughout the stack: backend (Gadget.dev), frontend (Vite/Alpine), and data models. This improves maintainability and help catch bugs early.&lt;/p&gt;




&lt;h2&gt;
  
  
  How Brush helps you optimize your workflow
&lt;/h2&gt;

&lt;p&gt;Instead of spending time setting up database, wiring up authentication, crafting API layers, configuring build tooling, addressing localization and so on, Brush gives you these foundations, so you can focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Building business logic
&lt;/li&gt;
&lt;li&gt;Adding custom admin pages
&lt;/li&gt;
&lt;li&gt;Hooking into Shopify webhooks
&lt;/li&gt;
&lt;li&gt;Creating advanced storefront features&lt;/li&gt;
&lt;li&gt;Interacting with 3rd party services (ERP, CRM, ...)
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This significantly reduces time-to-market and ensures scalable and maintainable code from day one.&lt;/p&gt;




&lt;h2&gt;
  
  
  When Brush makes sense
&lt;/h2&gt;

&lt;p&gt;Brush is ideal for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Any Shopify Custom App &lt;/li&gt;
&lt;li&gt;Projects requiring high code quality and long-term maintainability
&lt;/li&gt;
&lt;li&gt;Developers who want modern tooling, fast builds, and type safety
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Closing thoughts
&lt;/h2&gt;

&lt;p&gt;Shopify Custom Apps empower bespoke workflows and deep integrations into information systems. But building them is non-trivial. &lt;strong&gt;Brush&lt;/strong&gt; gives developers a modern starter kit to reduce repetitive setup, improve maintainability, and accelerate development.  &lt;/p&gt;

&lt;p&gt;Check it out: &lt;a href="https://brush.maddlen.fr/" rel="noopener noreferrer"&gt;https://brush.maddlen.fr/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>shopify</category>
      <category>ecommerce</category>
      <category>typescript</category>
      <category>alpine</category>
    </item>
    <item>
      <title>Zermatt.dev: Speed Up Your Magento Workflow with Hot Reloading</title>
      <dc:creator>Hervé Guétin</dc:creator>
      <pubDate>Sat, 01 Feb 2025 16:42:37 +0000</pubDate>
      <link>https://dev.to/herveguetin/zermattdev-speed-up-your-magento-workflow-with-hot-reloading-de1</link>
      <guid>https://dev.to/herveguetin/zermattdev-speed-up-your-magento-workflow-with-hot-reloading-de1</guid>
      <description>&lt;p&gt;Ever find yourself constantly hitting refresh in the browser just to see changes after tweaking your code? Yeah, we’ve all been there. It’s tedious and it slows you down.&lt;/p&gt;

&lt;p&gt;That’s where Zermatt v1.2 comes in with hot reload. This feature helps streamline the development process by automatically updating the browser as you work — without having to manually refresh. Let’s break down how Zermatt’s hot reload works, what it does, and how it can improve your workflow.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;👉 &lt;a href="https://www.zermatt.dev/docs/hot-reload" rel="noopener noreferrer"&gt;Hot reload documentation&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://www.zermatt.dev/docs/release-notes" rel="noopener noreferrer"&gt;Release notes&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://www.zermatt.dev" rel="noopener noreferrer"&gt;Zermatt.dev landing page&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  What is Hot Reloading?
&lt;/h3&gt;

&lt;p&gt;Hot reloading automatically reflects code changes on the browser without the need to reload the page manually or even without any reload at all. This means more productivity and less interruption to a developer's workflow.&lt;/p&gt;




&lt;h3&gt;
  
  
  How Does Hot Reloading Work in Zermatt?
&lt;/h3&gt;

&lt;p&gt;Zermatt's hot reload works by monitoring changes in project’s files and automatically pushing them to the browser. The behavior is different for CSS and Javascript:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CSS and Styling Changes&lt;/strong&gt;: These get reflected in the browser &lt;em&gt;immediately&lt;/em&gt; — no page reload needed. This is great for fine-tuning styles or experimenting with design changes on the fly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;JavaScript Changes&lt;/strong&gt;: These &lt;strong&gt;do trigger a full page reload&lt;/strong&gt;. So, when JavaScript (including AlpineJS components) changes, Zermatt reloads the entire page to reflect those updates. While this might seem a little less efficient than the hot CSS reload, it ensures that any changes to JS or DOM manipulation are fully applied.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here’s a quick breakdown of what happens in each case:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CSS&lt;/strong&gt;: Changes are applied instantly without refreshing the page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JavaScript&lt;/strong&gt;: Full page reload happens after changes.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Why Is This Beneficial?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Instant Styling Feedback&lt;/strong&gt;: When working on the look and feel of a Magento store, the ability to instantly see changes is a huge time-saver. It gets easier focus on tweaking design without waiting for the browser to reload every time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fast Iteration for JS Updates&lt;/strong&gt;: Even though JavaScript changes trigger a page reload, this is still way faster than manually refreshing. Plus, this produces a fresh page state with every reload.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Streamlined Workflow&lt;/strong&gt;: Not having to refresh or manually inject updates into the browser makes the workflow smoother. Zermatt handles the grunt work, so you don’t have to.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  How to Use Hot Reload with Zermatt
&lt;/h3&gt;

&lt;p&gt;Getting started with hot reloading in Zermatt is a breeze. Here's how to can enable it in a Zermatt-enabled Magento theme:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Install Zermatt&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
If you haven’t already, head over to &lt;a href="https://www.zermatt.dev" rel="noopener noreferrer"&gt;Zermatt’s official website&lt;/a&gt; and follow the quick-start guide to install the framework.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enable Hot Reloading&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Zermatt enables hot reloading out-of-the-box for CSS and styles. For JavaScript, it will automatically reload the page when changes are detected.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Start Editing and Watch Changes&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Once you’re up and running, just start editing your code. If you're modifying CSS or other styles, watch as your browser updates without a full reload. For JavaScript, any tweaks will trigger a full page reload, but you’ll still save time compared to manually refreshing the page.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Wrapping Up
&lt;/h3&gt;

&lt;p&gt;Zermatt's &lt;strong&gt;Hot Reload&lt;/strong&gt; feature is a must-have productivity booster. It allows to work faster by automatically pushing styling and Javascript updates to the browser, avoiding the hassle of manual refreshing.&lt;/p&gt;

</description>
      <category>zermatt</category>
      <category>ecommerce</category>
      <category>hotreload</category>
      <category>vitejs</category>
    </item>
    <item>
      <title>Zermatt.dev: Style it your Way with SASS or TailwindCSS</title>
      <dc:creator>Hervé Guétin</dc:creator>
      <pubDate>Thu, 12 Dec 2024 10:33:48 +0000</pubDate>
      <link>https://dev.to/herveguetin/zermattdev-style-it-your-way-with-sass-or-tailwindcss-ifi</link>
      <guid>https://dev.to/herveguetin/zermattdev-style-it-your-way-with-sass-or-tailwindcss-ifi</guid>
      <description>&lt;p&gt;With Zermatt v1.1.0 comes a new major feature: the ability to style modular components or even a full Magento theme. With native support for SASS, seamless integration with TailwindCSS, and many customization options, Zermatt empowers developers to build modern, performant, and maintainable designs within Magento.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;👉 &lt;a href="https://www.zermatt.dev/docs/features/styling" rel="noopener noreferrer"&gt;Styling documentation&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://www.zermatt.dev/docs/release-notes" rel="noopener noreferrer"&gt;Release notes&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://www.zermatt.dev" rel="noopener noreferrer"&gt;Zermatt.dev landing page&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  A Look at the Architecture
&lt;/h2&gt;

&lt;p&gt;At the heart of Zermatt’s styling lies a robust architecture that handles CSS compilation and hierarchy management. Here’s how it works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;File Discovery:&lt;/strong&gt; Zermatt scans for all &lt;code&gt;.scss&lt;/code&gt; files within &lt;code&gt;web/zermatt/**/&lt;/code&gt; directories across &lt;code&gt;vendor&lt;/code&gt;, &lt;code&gt;app/code&lt;/code&gt;, and the current theme.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hierarchy Processing:&lt;/strong&gt; The system processes these files to respect the hierarchy, ensuring that theme-level styles take precedence over &lt;code&gt;app/code&lt;/code&gt; and &lt;code&gt;vendor&lt;/code&gt; styles.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Centralized Compilation:&lt;/strong&gt; A &lt;code&gt;zermatt-lock.scss&lt;/code&gt; file is automatically and transparently generated, containing &lt;code&gt;@use&lt;/code&gt; directives for all discovered &lt;code&gt;.scss&lt;/code&gt; files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ViteJS Integration:&lt;/strong&gt; ViteJS compiles this all-in-one file via the SCSS preprocessor, producing the final optimized and tree-shaked &lt;code&gt;dist/zermatt.css&lt;/code&gt; file for deployment.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For advanced use cases, the &lt;code&gt;zermattLock()&lt;/code&gt; function allows developers to create custom SCSS entry points tailored to specific needs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Hierarchy Management
&lt;/h2&gt;

&lt;p&gt;Zermatt’s styling hierarchy ensures that styles are modular and predictable. The system applies styles in this order:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;vendor&lt;/code&gt; styles&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;app/code&lt;/code&gt; module styles&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Theme-level styles&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, a theme-level &lt;code&gt;.scss&lt;/code&gt; file named the same as one in a module will completely override the module’s file (hard rewrite). Alternatively, new files can be added to extend or customize styles without overwriting existing ones (soft rewrite).&lt;/p&gt;




&lt;h2&gt;
  
  
  Writing SCSS the Zermatt Way
&lt;/h2&gt;

&lt;p&gt;Zermatt allows developers to write SCSS in any &lt;code&gt;web/zermatt/**/&lt;/code&gt; directory, regardless of whether it resides in &lt;code&gt;vendor&lt;/code&gt;, &lt;code&gt;app/code&lt;/code&gt;, or the current theme. This modular approach ensures clarity and maintainability.&lt;/p&gt;

&lt;p&gt;For instance, in &lt;code&gt;app/code&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;app/code/Vendor/Module/view/frontend/web/zermatt/[ANY_DIR]/vendor-module.scss
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or in a theme:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;theme/Vendor/Theme/web/zermatt/[ANY_DIR]/custom-stuff.scss
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Full Customization with SASS and TailwindCSS
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Option 1: SASS Customization
&lt;/h3&gt;

&lt;p&gt;For those seeking full control, Zermatt supports replacing its default SCSS processing with custom entry points.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 2: TailwindCSS Integration
&lt;/h3&gt;

&lt;p&gt;Adding TailwindCSS to Zermatt is straightforward and opens up a world of utility-first styling.&lt;/p&gt;




&lt;h2&gt;
  
  
  Get Started Today
&lt;/h2&gt;

&lt;p&gt;Zermatt’s styling capabilities provide developers with the tools to create modular, scalable, and customizable frontend components and themes. Whether leveraging SASS, integrating TailwindCSS, or building a completely bespoke theme, Zermatt ensures developers have the power and flexibility to match any styling need.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://zermatt.dev/docs/features/styling" rel="noopener noreferrer"&gt;Explore the Documentation&lt;/a&gt; and start building with Zermatt today!&lt;/p&gt;

</description>
      <category>zermatt</category>
      <category>ecommerce</category>
      <category>sass</category>
      <category>tailwindcss</category>
    </item>
    <item>
      <title>Zermatt.dev: A Frontend Framework for Magento</title>
      <dc:creator>Hervé Guétin</dc:creator>
      <pubDate>Sun, 01 Dec 2024 22:08:45 +0000</pubDate>
      <link>https://dev.to/herveguetin/zermatt-a-frontend-framework-for-magento-developers-5hen</link>
      <guid>https://dev.to/herveguetin/zermatt-a-frontend-framework-for-magento-developers-5hen</guid>
      <description>&lt;p&gt;The landscape of Magento (Adobe Commerce) frontend development has evolved significantly, yet it often remains stuck with legacy technologies like Knockout.js and RequireJS. Zermatt, a personal project that I am pleased to present, aims at simplifying frontend development by delivering an incremental, lightweight, component-driven approach fully integrated in the Magento framework.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;👉 &lt;a href="https://www.zermatt.dev" rel="noopener noreferrer"&gt;Zermatt.dev landing page&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://demo.zermatt.dev" rel="noopener noreferrer"&gt;Demo&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://www.zermatt.dev/docs/installation" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Challenges of Magento Frontend Development
&lt;/h2&gt;

&lt;p&gt;Magento’s traditional frontend stack can feel cumbersome, especially with heavy reliance on Knockout.js and the complexities of integrating modern JavaScript libraries. Developers face several key challenges:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Complexity in Customization:&lt;/strong&gt; Overriding templates and creating custom JavaScript logic can lead to rigid structures that are difficult to maintain. Magento’s reliance on Knockout.js and RequireJS often results in cumbersome, outdated development practices.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance Bottlenecks:&lt;/strong&gt; The layered and interdependent frontend structure can slow down page rendering and increase load times.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Limited Flexibility:&lt;/strong&gt; Managing dependencies and updates across themes and modules is often prone to errors. Creating and managing reusable components is complex.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Access:&lt;/strong&gt; Sharing data between backend and frontend components requires complex workarounds, reducing flexibility.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Steep Learning Curve:&lt;/strong&gt; Understanding the intricacies of Magento’s frontend stack can be daunting, especially for those transitioning from modern JavaScript frameworks.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How Zermatt.dev can help
&lt;/h2&gt;

&lt;p&gt;Zermatt.dev leverages Alpine.js, allowing developers to create reusable Javascript modules with minimal overhead. These modules can be easily managed through configuration, enabling rewriting features for flexibility in customization.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.zermatt.dev/docs/architecture" rel="noopener noreferrer"&gt;More about the architecture&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Incremental Adoption
&lt;/h3&gt;

&lt;p&gt;Zermatt.dev supports gradual migration, allowing teams to replace Knockout.js and RequireJS at their own pace while maintaining existing functionality.&lt;/p&gt;




&lt;h3&gt;
  
  
  Modularity
&lt;/h3&gt;

&lt;p&gt;Zermatt.dev’s architecture allows developers to define modular AlpineJS components that can be easily integrated, reused across templates and distributed. These modules can be hard or softly rewritten, enabling both complete overrides and incremental enhancements without affecting core logic.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.zermatt.dev/docs/features/modules" rel="noopener noreferrer"&gt;More about modules&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Theme Inheritance
&lt;/h3&gt;

&lt;p&gt;The framework supports Magento’s native theme fallback system, allowing for clean inheritance and overrides. Developers can easily create child themes that selectively override parent modules without duplicating logic.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.zermatt.dev/docs/features/themes" rel="noopener noreferrer"&gt;More about themes&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Data Handling
&lt;/h3&gt;

&lt;p&gt;With built-in support for backend data forwarding, Zermatt simplifies passing data from Magento's backend to the frontend, either through scoped properties or global variables. It also eliminates boilerplate code like json_encode and escapeJs.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.zermatt.dev/docs/examples/passing-data" rel="noopener noreferrer"&gt;More about backend -&amp;gt; frontend&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Forms
&lt;/h3&gt;

&lt;p&gt;Zermatt.dev leverages Laravel Precognition to provide a form management feature with real-time server-side validation. It supports both synchronous and AJAX form submission.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.zermatt.dev/docs/features/forms" rel="noopener noreferrer"&gt;More about forms&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Internationalization
&lt;/h3&gt;

&lt;p&gt;Zermatt.dev integrates i18next with Magento’s i18n and currency system, ensuring seamless localization through its &lt;code&gt;$t()&lt;/code&gt; and &lt;code&gt;Money&lt;/code&gt; objects, which supports translation and interpolation.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.zermatt.dev/docs/features/translation" rel="noopener noreferrer"&gt;More about i18n&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.zermatt.dev/docs/features/money" rel="noopener noreferrer"&gt;More about money&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Other features
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Build process:&lt;/strong&gt; Leveraging Magento’s CLI commands, Zermatt.dev seamlessly integrates with &lt;code&gt;setup:static-content:deploy&lt;/code&gt; for efficient asset management in CI/CD pipelines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Events:&lt;/strong&gt; Zermatt comes with a powerful pub/sub implementation that allows all Javascript code to emit and react to one or several events. Synchronously or asynchronously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Partials:&lt;/strong&gt; Extract parts of templates into smaller, reusable pieces without touching XML layout files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CLI:&lt;/strong&gt; Zermatt has a light CLI for easy operations.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;👉 &lt;a href="https://www.zermatt.dev" rel="noopener noreferrer"&gt;Zermatt.dev landing page&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://demo.zermatt.dev" rel="noopener noreferrer"&gt;Demo&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://www.zermatt.dev/docs/installation" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  About the author
&lt;/h2&gt;

&lt;p&gt;My 25 years of experience in digital as a merchant, consultant, expert and CTO have led me to listen to many clients to build optimized solutions.&lt;/p&gt;

&lt;p&gt;I have been using Magento since 2008 on an everyday basis and could not help noticing the increasing gap between its frontend layer and the evolving standards of the industry.&lt;/p&gt;

&lt;p&gt;After numerous frontend implementations on many large and small projects, I wished I could have a flexible tool that produces modern JS that is flawlessly discussing with the Magento stack.&lt;/p&gt;

&lt;p&gt;Zermatt.dev is an attempt to do that.&lt;/p&gt;

</description>
      <category>ecommerce</category>
      <category>vite</category>
      <category>alpinejs</category>
      <category>zermatt</category>
    </item>
  </channel>
</rss>
