<?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: Nicklas Gellner</title>
    <description>The latest articles on DEV Community by Nicklas Gellner (@nicklasgellner).</description>
    <link>https://dev.to/nicklasgellner</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%2F676651%2Fae0374af-aef7-4132-a156-d9c9cc4c2705.png</url>
      <title>DEV Community: Nicklas Gellner</title>
      <link>https://dev.to/nicklasgellner</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nicklasgellner"/>
    <language>en</language>
    <item>
      <title>Medusa 2.0: The world's most flexible commerce platform</title>
      <dc:creator>Nicklas Gellner</dc:creator>
      <pubDate>Wed, 23 Oct 2024 10:06:09 +0000</pubDate>
      <link>https://dev.to/medusajs/medusa-20-the-worlds-most-flexible-commerce-platform-3k96</link>
      <guid>https://dev.to/medusajs/medusa-20-the-worlds-most-flexible-commerce-platform-3k96</guid>
      <description>&lt;p&gt;We’re thrilled to announce that the Medusa 2.0 Launch is now live 🎉&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.producthunt.com/posts/medusa-2-0" rel="noopener noreferrer"&gt;Explore and support the Launch on Product Hunt&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Along with Medusa 2.0, we release five new Starters with pre-built integrations, features, and frontends to launch both DTC and B2B setups with 2.0 in minutes. Get a glimpse of the Starters and the many new features on Product Hunt.&lt;/p&gt;

&lt;p&gt;We hope you will help support the launch and spread the word.&lt;/p&gt;

&lt;p&gt;Thanks all for your continued trust!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>opensource</category>
      <category>ecommerce</category>
    </item>
    <item>
      <title>Community Highlights: Svelte Storefront, Medusa Flutter Admin, and lots of new plugins</title>
      <dc:creator>Nicklas Gellner</dc:creator>
      <pubDate>Thu, 10 Aug 2023 19:08:03 +0000</pubDate>
      <link>https://dev.to/medusajs/community-highlights-svelte-storefront-medusa-flutter-admin-and-lots-of-new-plugins-4jia</link>
      <guid>https://dev.to/medusajs/community-highlights-svelte-storefront-medusa-flutter-admin-and-lots-of-new-plugins-4jia</guid>
      <description>&lt;p&gt;The Medusa community constantly makes new additions to the Medusa ecosystem. We are always excited about these contributions, which range from plugins to platforms and templates. Currently, our &lt;a href="https://medusajs.com/plugins/" rel="noopener noreferrer"&gt;Plugin Library&lt;/a&gt; has more than 100 open-source plugins available via npm. Below, we wanted to highlight some of the latest additions from our community members.&lt;/p&gt;

&lt;h2&gt;
  
  
  Latest community contributions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  SvelteKit Storefront Starter for Medusa
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkp9j2kbc01uvfe5dakw1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkp9j2kbc01uvfe5dakw1.png" alt="SvelteKit"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In our most recent &lt;a href="https://medusajs.com/blog/community-highlights-1/" rel="noopener noreferrer"&gt;community highlight&lt;/a&gt;, we were excited to announce the introduction of the SvelteKit client. Now, &lt;a href="https://github.com/pevey" rel="noopener noreferrer"&gt;Lacey Pevey&lt;/a&gt; made it even easier to get started using &lt;a href="https://kit.svelte.dev/" rel="noopener noreferrer"&gt;Svelt&lt;/a&gt; expeerience with her new &lt;a href="https://github.com/pevey/sveltekit-medusa-starter/tree/main" rel="noopener noreferrer"&gt;SvelteKit eCommerce Store Starter&lt;/a&gt;, a Svelte storefront designed to integrate with your Medusa backend seamlessly.&lt;/p&gt;

&lt;p&gt;The starter uses the &lt;a href="https://medusajs.com/plugins/sveltekit-medusa-client/" rel="noopener noreferrer"&gt;SvelteKit client&lt;/a&gt; behind the scenes to interact with the Medusa backend. It comes with ready-to-use pages like a product gallery and product detail pages. You will also find auth, cart, and checkout flows implemented in the starter. All the pages and flows are customizable to adapt the template to your use case.&lt;/p&gt;

&lt;p&gt;You can watch Lacey set up Medusa with Svelte in her latest video from the Svelte Society in the Community Radar section.&lt;/p&gt;

&lt;h3&gt;
  
  
  Postmark Plugin
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/breakerh" rel="noopener noreferrer"&gt;Bram Hammer&lt;/a&gt; recently contributed with a new &lt;a href="https://medusajs.com/plugins/medusa-plugin-postmark/" rel="noopener noreferrer"&gt;Postmark plugin&lt;/a&gt;. The plugin lets you use the Postmark service as a &lt;a href="https://docs.medusajs.com/development/notification/overview" rel="noopener noreferrer"&gt;notification provider&lt;/a&gt; with your Medusa backend. This can be useful for upselling and transactional emails, among other things.&lt;/p&gt;

&lt;p&gt;Bram even took this plugin a step further by adding support for generating and attaching PDF invoices and credit notes to customer emails. Additionally, it lets you send personalized reminder emails to customers who have abandoned their cart or upselling emails to customers who have recently purchased from specific collections.&lt;/p&gt;

&lt;h3&gt;
  
  
  Medusa Blog Plugin
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/pevey" rel="noopener noreferrer"&gt;Lacey Pevey&lt;/a&gt; developed a &lt;a href="https://medusajs.com/plugins/medusa-plugin-blog/" rel="noopener noreferrer"&gt;blog plugin&lt;/a&gt; for users managing blog pages as part of their commerce site. This plugin expands the capabilities of your Medusa backend by enabling you to organize and manage blogging content.&lt;/p&gt;

&lt;p&gt;With this plugin, you can create your own blog posts and conveniently categorize them using tags such as product, collection, or custom values already existing within your store. Additionally, it enables you to query and retrieve all your blog posts based on various criteria, including tags, categories, products, or collections, for a more user-friendly blog experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  Medusa Admin Flutter in beta
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frvjvefak9dkxlfgu67es.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frvjvefak9dkxlfgu67es.png" alt="Medusa Admin Flutter"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/mllrr96" rel="noopener noreferrer"&gt;Ragheb&lt;/a&gt; is developing a mobile-optimized Medusa Admin app using Flutter for iOS and Android. The app is currently in beta, but you can test it and keep track of newly added features and enhancements by visiting its &lt;a href="https://github.com/mllrr96/Medusa-Admin-Flutter" rel="noopener noreferrer"&gt;git repository&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Despite being in beta, the app already offers a range of valuable features, such as updating store settings (regions, sales channels, etc.) and managing collections of products, customers, and discounts. The app also includes a built-in dark mode feature.&lt;/p&gt;

&lt;h3&gt;
  
  
  Canada Post Fulfillment plugin
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/alexghebo" rel="noopener noreferrer"&gt;Alexghebo&lt;/a&gt; created a &lt;a href="https://medusajs.com/plugins/medusa-fulfillment-canadapost/" rel="noopener noreferrer"&gt;Canada Post plugin&lt;/a&gt; for integrating your Medusa backend with the Canada Post fulfillment provider, which can be utilized during the checkout process and throughout the order management workflow.&lt;/p&gt;

&lt;p&gt;The plugin enables customers to access real-time shipping rates and track their orders. It also allows merchants to manage shipping labels, generate customs documentation, and monitor shipment statuses, ultimately enhancing the overall shopping experience for buyers and sellers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Platform.sh for Medusa deployment
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/vincenzo" rel="noopener noreferrer"&gt;Vinnie Russo&lt;/a&gt; built a &lt;a href="https://github.com/platformista/medusa" rel="noopener noreferrer"&gt;Platform.sh template&lt;/a&gt; designed to ease the deployment process for a Medusa ecommerce solution. The template includes the essential Medusa backend infrastructure, the admin dashboard, and the Next.js storefront. &lt;/p&gt;

&lt;p&gt;The template allows users to use &lt;a href="https://platform.sh/" rel="noopener noreferrer"&gt;Platform.sh&lt;/a&gt;’s infrastructure to launch their Medusa ecommerce shop with a single click. &lt;a href="https://platform.sh/" rel="noopener noreferrer"&gt;Platform.sh&lt;/a&gt; is a PaaS that offers a unified solution for building, running, and scaling websites and applications.&lt;/p&gt;




&lt;h2&gt;
  
  
  Community Radar
&lt;/h2&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1686914473070653440-582" src="https://platform.twitter.com/embed/Tweet.html?id=1686914473070653440"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1686914473070653440-582');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1686914473070653440&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/pevey" rel="noopener noreferrer"&gt;Lacey Pevey&lt;/a&gt; shows us how to combine Svelte and Medusa on the latest live stream from the Svelte Society.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1679568690138980352-96" src="https://platform.twitter.com/embed/Tweet.html?id=1679568690138980352"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1679568690138980352-96');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1679568690138980352&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Shout-out from the Next team to our updated &lt;a href="https://medusajs.com/blog/announcing-nextjs-starter/" rel="noopener noreferrer"&gt;&lt;strong&gt;Medusa Next.js Starter Template&lt;/strong&gt;&lt;/a&gt; with App Router support.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1685718106583293952-885" src="https://platform.twitter.com/embed/Tweet.html?id=1685718106583293952"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1685718106583293952-885');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1685718106583293952&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/adevinwild" rel="noopener noreferrer"&gt;Adil&lt;/a&gt; showing off some well-deserved Medusa merch from his community contributions.&lt;/p&gt;




&lt;h2&gt;
  
  
  Created something cool with Medusa? Let us know!
&lt;/h2&gt;

&lt;p&gt;We would love to hear about the cool projects you’ve created with Medusa. Whether it’s plugins, widgets, storefront starters, your own store built with Medusa, or anything similar.&lt;/p&gt;

&lt;p&gt;You can share all your cool projects in the &lt;em&gt;#Showcase&lt;/em&gt; channel on our &lt;a href="https://discord.com/invite/medusajs" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; where we usually collect the latest community highlights. You can also learn how to publish your plugins on our Plugin Library using this guide in our &lt;a href="https://docs.medusajs.com/development/plugins/publish" rel="noopener noreferrer"&gt;documentatio&lt;/a&gt;n.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>programming</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Medusa Recap: Product Module, Admin Extensibility, Omnichannel features and more</title>
      <dc:creator>Nicklas Gellner</dc:creator>
      <pubDate>Tue, 20 Jun 2023 16:47:11 +0000</pubDate>
      <link>https://dev.to/medusajs/medusa-recap-product-module-admin-extensibility-omnichannel-features-and-more-ko7</link>
      <guid>https://dev.to/medusajs/medusa-recap-product-module-admin-extensibility-omnichannel-features-and-more-ko7</guid>
      <description>&lt;p&gt;Today, we are kicking off our June edition of our &lt;a href="https://medusajs.com/recap/" rel="noopener noreferrer"&gt;&lt;strong&gt;Medusa Recap&lt;/strong&gt;&lt;/a&gt;. This week is dedicated to showcasing the features we have built in the past ten weeks. You can get an overview of everything we have shipped in our latest Tweet!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://twitter.com/intent/like?tweet_id=1671181706970255361" rel="noopener noreferrer"&gt;❤️ our Tweet&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1671181706970255361-411" src="https://platform.twitter.com/embed/Tweet.html?id=1671181706970255361"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1671181706970255361-411');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1671181706970255361&amp;amp;theme=dark"
  }



 &lt;/p&gt;

&lt;p&gt;Every feature in our Recap will be highlighted in the coming days with in-depth articles and demos so you can try them out yourself. If you want to stay in the loop, sign up for our daily deep dives via &lt;strong&gt;&lt;a href="https://medusajs.com/recap-signup/" rel="noopener noreferrer"&gt;this link&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Below is a short summary of some of the key features we have shipped and that we will dive deeper into over the next days.&lt;/p&gt;




&lt;h2&gt;
  
  
  Product Module
&lt;/h2&gt;

&lt;p&gt;With the beta release of our Product Module, we are bringing our building blocks closer to frontend frameworks and serverless environments. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feg0dh363x16osgkxuqgd.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feg0dh363x16osgkxuqgd.gif" alt="Product Module"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Product Module enables you to access Products, Variants, Categories, and more through a standalone package that can be installed and run in Next.js functions and other Node.js compatible runtimes to give you access to your product data with full control.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft8cu7n3rka10v732yvrw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft8cu7n3rka10v732yvrw.png" alt="Product Module 2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Admin Extensions
&lt;/h2&gt;

&lt;p&gt;Admin Extensions enable customizations to the &lt;a href="https://docs.medusajs.com/admin/quickstart" rel="noopener noreferrer"&gt;Medusa Admin&lt;/a&gt;, making it easy to build powerful merchant experiences without compromising the maintainability of your system.&lt;/p&gt;

&lt;p&gt;Extensions come in two forms: Widgets and UI Routes. Widgets allow you to add custom React components to existing Admin pages to enrich information about Orders, Products, etc., while UI Routes give you a full canvas to build customizations without constraints on creativity.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcvu3swb4mn61jaxv0stp.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcvu3swb4mn61jaxv0stp.gif" alt="Admin Analytic"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Reservation Management
&lt;/h2&gt;

&lt;p&gt;Our improved Reservation Management gives you full control of your inventory, including an overview of all allocated stock and advanced filters.  &lt;/p&gt;

&lt;p&gt;The additions to Reservation Management also further strengthen our inventory tooling with a new powerful primitive to enable more omnichannel experiences.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvk9gnfn5so2575jnjwm4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvk9gnfn5so2575jnjwm4.gif" alt="Reservation filters"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Stay tuned for more feature highlights in the coming days and make sure to check out the full details on our &lt;a href="https://medusajs.com/recap/" rel="noopener noreferrer"&gt;Recap page&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>node</category>
      <category>nextjs</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Introducing Medusa’s Plugins Library for Payments, CMS, Notifications, and more.</title>
      <dc:creator>Nicklas Gellner</dc:creator>
      <pubDate>Wed, 26 Apr 2023 10:49:44 +0000</pubDate>
      <link>https://dev.to/medusajs/introducing-medusas-plugins-library-for-payments-cms-notifications-and-more-glk</link>
      <guid>https://dev.to/medusajs/introducing-medusas-plugins-library-for-payments-cms-notifications-and-more-glk</guid>
      <description>&lt;h3&gt;
  
  
  Our new Plugin Library provides an overview of all Medusa plugins, including payments, notifications, shipping, CMS, storage, search, and more.
&lt;/h3&gt;

&lt;p&gt;At Medusa, we empower developers to do more with less. Our modular approach to commerce tooling equips developers with the means to create rich applications without hacky workarounds.&lt;/p&gt;

&lt;p&gt;These applications often integrate with 3rd party solutions e.g. to accept payments, which we support through easy-to-configure plugins. To make our plugins more conveniently accessible, we are excited to have recently launched our Plugin Library.&lt;/p&gt;

&lt;p&gt;Our &lt;a href="https://medusajs.com/plugins/"&gt;Medusa Plugin Library&lt;/a&gt; provides a simple way to view the pre-built plugins available for Medusa. The list includes plugins supported by the core team (indicated by a small Medusa logo) and community plugins that can be accessed through npm.&lt;/p&gt;

&lt;h2&gt;
  
  
  Covering the full commerce stack
&lt;/h2&gt;

&lt;p&gt;By using Medusa commerce modules, you already get a strong commerce foundation out of the box, including support of &lt;a href="https://docs.medusajs.com/modules/multiwarehouse/overview"&gt;inventory and multi-warehousing&lt;/a&gt;, &lt;a href="https://docs.medusajs.com/modules/regions-and-currencies/overview"&gt;multi-region support&lt;/a&gt;, &lt;a href="https://docs.medusajs.com/modules/sales-channels/overview"&gt;multi-channel handling&lt;/a&gt;, &lt;a href="https://docs.medusajs.com/modules/taxes/overview"&gt;advanced tax&lt;/a&gt;, &lt;a href="https://docs.medusajs.com/modules/price-lists/overview"&gt;promotion features&lt;/a&gt;, and more.&lt;/p&gt;

&lt;p&gt;Our Plugin Library allows you to extend beyond these modules and quickly build a connected stack with integrations for services such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Payments&lt;/strong&gt; (e.g. &lt;a href="https://medusajs.com/plugins/medusa-payment-stripe/"&gt;Stripe&lt;/a&gt;, &lt;a href="https://medusajs.com/plugins/medusa-payment-paypal/"&gt;Paypal&lt;/a&gt;, &lt;a href="https://medusajs.com/plugins/medusa-payment-adyen/"&gt;Adyen&lt;/a&gt;, &lt;a href="https://medusajs.com/plugins/medusa-payment-klarna/"&gt;Klarna&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notifications&lt;/strong&gt; (e.g. &lt;a href="https://medusajs.com/plugins/medusa-plugin-sendgrid/"&gt;Sendgrid&lt;/a&gt;, &lt;a href="https://medusajs.com/plugins/medusa-plugin-mailchimp/"&gt;Mailchimp&lt;/a&gt;, &lt;a href="https://medusajs.com/plugins/medusa-plugin-slack-notification/"&gt;Slack&lt;/a&gt;, &lt;a href="https://medusajs.com/plugins/medusa-plugin-twilio-sms/"&gt;Twilio&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shipping&lt;/strong&gt; (e.g. &lt;a href="https://medusajs.com/plugins/medusa-fulfillment-webshipper/"&gt;Webshipper&lt;/a&gt;, &lt;a href="https://medusajs.com/plugins/medusa-plugin-brightpearl/"&gt;Brightpearl&lt;/a&gt;, &lt;a href="https://medusajs.com/plugins/medusa-fulfillment-shippo/"&gt;Shippo&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search&lt;/strong&gt; (e.g. &lt;a href="https://medusajs.com/plugins/medusa-plugin-meilisearch/"&gt;MeiliSearch&lt;/a&gt;, &lt;a href="https://medusajs.com/plugins/medusa-plugin-algolia/"&gt;Algolia&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt; (e.g. &lt;a href="https://medusajs.com/plugins/medusa-file-s3/"&gt;S3&lt;/a&gt;, &lt;a href="https://medusajs.com/plugins/medusa-file-spaces/"&gt;DigitalOcean&lt;/a&gt;, &lt;a href="https://medusajs.com/plugins/medusa-file-minio/"&gt;MinIO&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CMS&lt;/strong&gt; (e.g. &lt;a href="https://medusajs.com/plugins/medusa-plugin-contentful/"&gt;Contentful&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analytics and monitoring&lt;/strong&gt; (e.g. &lt;a href="https://medusajs.com/plugins/medusa-plugin-segment/"&gt;Segment&lt;/a&gt;, &lt;a href="https://medusajs.com/plugins/medusa-plugin-sentry/"&gt;Sentry&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Contributing your own plugin
&lt;/h2&gt;

&lt;p&gt;We always welcome community contributions. To get your plugin live in our Plugin Library, all you have to do is &lt;a href="https://docs.medusajs.com/development/plugins/create"&gt;create your own Medusa plugi&lt;/a&gt;n and publish it through npm following our &lt;a href="https://docs.medusajs.com/development/plugins/publish"&gt;publishing guidelines&lt;/a&gt;. Within a week the plugin will appear in the plugin library. If this is not the case, feel free to create an Issue on GitHub, and we’ll look into it.&lt;/p&gt;

&lt;p&gt;On that note, we want to thank our community so far for helping us create an extensive plugin universe. Without your contributions, we would not have much to showcase.&lt;/p&gt;

&lt;h2&gt;
  
  
  More Medusa
&lt;/h2&gt;

&lt;p&gt;If you want to know more about our recent release and product priorities head to our &lt;a href="https://medusajs.com/recap/"&gt;April’23 Recap&lt;/a&gt;. Otherwise, stay in touch via our newsletter for more product updates.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>news</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>5 Rules That Most B2B Shops Miss in Their Product Categorization</title>
      <dc:creator>Nicklas Gellner</dc:creator>
      <pubDate>Tue, 31 Jan 2023 16:04:04 +0000</pubDate>
      <link>https://dev.to/medusajs/5-rules-that-most-b2b-shops-miss-in-their-product-categorization-6dn</link>
      <guid>https://dev.to/medusajs/5-rules-that-most-b2b-shops-miss-in-their-product-categorization-6dn</guid>
      <description>&lt;p&gt;I thought B2B ecommerce sites would be world champions of managing product categorizations due to their often large and complicated product assortments. I was entirely wrong.&lt;/p&gt;

&lt;p&gt;Many shops seem to have neglected to put energy into product categorization altogether, which is quite alarming given that this is the first main navigation mechanism for many B2B sites aside from their search bars.&lt;/p&gt;

&lt;p&gt;Yet, after studying the setup of more than 500 B2B ecommerce sites as part of our B2B launch at &lt;a href="https://medusajs.com/b2b-commerce-platform/" rel="noopener noreferrer"&gt;Medusa&lt;/a&gt;, I did recognize a pattern of best (and worst) practices when working with product categorization in B2B ecommerce.&lt;/p&gt;

&lt;p&gt;Below is my recollection shared in 5 simple ways the best B2B companies approach product categorization: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;#1 - MECE sub-categories&lt;/strong&gt;: Product sub-categories should be Mutually Exclusive and Collectively Exhaustive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;#2 - Rule of three:&lt;/strong&gt; Have at maximum three layers of product categories showcased on your site (especially in the dropdown navigation).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;#3 -&lt;/strong&gt; &lt;strong&gt;Three seconds to comprehend&lt;/strong&gt;: Systemize and structure your categories in a way that takes less than 3 seconds to comprehend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;#4 - KISS navigation:&lt;/strong&gt; When your catalog is large and diverse, keep the navigation simple and clean with to-the-point category names.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;#5 - Cross-categories with purpose:&lt;/strong&gt; Use cross-categories when you purposefully want to emphasize a trait across many categories&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;What is Medusa? &lt;a href="https://medusajs.com/" rel="noopener noreferrer"&gt;Medusa&lt;/a&gt; provides bespoke, modular and open commerce infrastructure for developers. If you want to build nested product categories with Medusa, stay tuned for our next Product Releases. &lt;a href="https://medusajs.com/blog/our-2023-roadmap/" rel="noopener noreferrer"&gt;Read more&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What is a product category?
&lt;/h2&gt;

&lt;p&gt;Let us quickly define a product category. By Product Category, I refer to &lt;strong&gt;a group of similar products that share related characteristics.&lt;/strong&gt; The category label sums up the product underneath it. &lt;/p&gt;

&lt;p&gt;For example, the category of &lt;strong&gt;Car tires&lt;/strong&gt; could contain both winter and summer tires in different sizes. Tires could also be a sub-category of a larger category referring to &lt;strong&gt;Cars&lt;/strong&gt; of a car manufacturer shop.&lt;/p&gt;

&lt;h2&gt;
  
  
  The good, the bad, and the product-category-mesh
&lt;/h2&gt;

&lt;p&gt;The way that most B2B pages choose to categorize products can best be described as a product-category-mesh.&lt;/p&gt;

&lt;p&gt;Many shops, take the first step of bundling their products into categories (Hurrah!). But from that point on they just bundle it all together in one big mesh, leaving it to the customer to navigate their way through the assortment.&lt;/p&gt;

&lt;p&gt;Sometimes I saw this leading to the creation of +1,000 categories with no clear linkages that made it easy for the customer to navigate unless using the search function.&lt;/p&gt;

&lt;p&gt;In many instances, this random bundling led to category overlaps, making it unclear for users where and how to start.&lt;/p&gt;

&lt;p&gt;Take the example below from a tool manufacturer and try to figure out for yourself whether the &lt;em&gt;electrical saw&lt;/em&gt; was stashed under &lt;strong&gt;Electrical&lt;/strong&gt;, &lt;strong&gt;Power Tools&lt;/strong&gt;, &lt;strong&gt;Hand Tools&lt;/strong&gt;, &lt;strong&gt;Cutting&lt;/strong&gt; &lt;strong&gt;Tools&lt;/strong&gt; or &lt;strong&gt;Machinery&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ay96014279kx9koeyd4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ay96014279kx9koeyd4.png" alt="Image description" width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If this is the worst practice, let us see how some companies managed to turn this for the better. &lt;/p&gt;

&lt;h2&gt;
  
  
  5 Rules for Best Product Categorization
&lt;/h2&gt;

&lt;h3&gt;
  
  
  #1 - MECE sub-categories
&lt;/h3&gt;

&lt;p&gt;The above example quickly becomes a problem for B2B shops that have large and complex product catalogs with several thousand products.&lt;/p&gt;

&lt;p&gt;One effective way some ecommerce sites avoided the mesh was to bundle all categories into main, sub, and sub-sub-… categories. &lt;/p&gt;

&lt;p&gt;These categories must be &lt;strong&gt;&lt;a href="https://blog.felix-seifert.com/structure-with-mece-principle/" rel="noopener noreferrer"&gt;MECE&lt;/a&gt;&lt;/strong&gt; (&lt;strong&gt;M&lt;/strong&gt;utually &lt;strong&gt;E&lt;/strong&gt;xclusive, &lt;strong&gt;C&lt;/strong&gt;ollectively &lt;strong&gt;E&lt;/strong&gt;xhaustive). Meaning that categories cannot overlap (mutually exclusive) while they still have to cover the full product assortment (collectively exhaustive). See example below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa5eeetdd218sieq6e8ye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa5eeetdd218sieq6e8ye.png" alt="Image description" width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://my.indiamart.com/" rel="noopener noreferrer"&gt;Indiamart&lt;/a&gt;&lt;/strong&gt; applies this type of segmentation to its product assortment. Despite an assortment of several million products, they still manage to make it easily digestible by breaking it down into six distinguishable &lt;strong&gt;business areas&lt;/strong&gt; (Building &amp;amp; Construction, Electronics &amp;amp; Electrical, Drugs &amp;amp; Pharma etc…). &lt;/p&gt;

&lt;p&gt;Beneath that, they further segment each business area into high-level &lt;strong&gt;product categories&lt;/strong&gt; (e.g. Solar &amp;amp; Renewable Energy Products, Office Automation Products &amp;amp; Devices) and then further down into individual &lt;strong&gt;product categories&lt;/strong&gt; (e.g. Solar Panels and Water Pumps). &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2lmqbbj1y6x4u3s00hz1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2lmqbbj1y6x4u3s00hz1.png" alt="Image description" width="800" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  #2 - Rule of 3
&lt;/h3&gt;

&lt;p&gt;When trying to make this type of product (sub-)categorization, the golden rule seems to be &lt;strong&gt;3&lt;/strong&gt;. For the vast majority of shops that applied the sub-categorization, they had at maximum 3 category layers; one main category with up to two levels below. &lt;/p&gt;

&lt;p&gt;See an example below from &lt;a href="https://www.morgansports.com.au/" rel="noopener noreferrer"&gt;Morgan Sports&lt;/a&gt; (supplier of fitness equipment) which has 8 main categories with two layers underneath. For instance, &lt;strong&gt;Functional Fitness &amp;gt; Strength Equipment &amp;gt; Dumbbell Sets &amp;amp; Dumbbell Racks&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1wzuw8ntdbrjyyz4lu1h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1wzuw8ntdbrjyyz4lu1h.png" alt="Image description" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The 3-layer-categorization rule does not always apply when moving deeper into the product grid, but rarely will you see more than 3 layers upfront in the dropdown navigation.&lt;/p&gt;

&lt;p&gt;When you want customers to dig deeper into a category with thousands of products, it can be useful to start using more advanced product filtering, which can make it extremely easy to navigate a larger product assortment. &lt;/p&gt;

&lt;p&gt;A good example of this can be seen below from &lt;a href="https://www.blake-envelopes.com/" rel="noopener noreferrer"&gt;Blake Envelopes&lt;/a&gt;, which breaks down its product categories in easy-to-navigate filtering whenever customers enter the product grid. Read more about their advanced product filtering processes, &lt;a href="https://medusajs.com/blog/top-5-b2b-ecommerce-sites-blake/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv7qb0mhhdd32m3200682.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv7qb0mhhdd32m3200682.png" alt="Image description" width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  #3 - 3 seconds to comprehend
&lt;/h3&gt;

&lt;p&gt;Another problem encountered with many of the categorizations was simply that the categorization was too complex to decode easily. This puts the B2B customer in a position, where the person has to spend a lot of time comprehending how to navigate the assortment in the first place.&lt;/p&gt;

&lt;p&gt;Below is one example of a dropdown without any meaningful logic to it, which leaves the customer questioning which direction to move.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxuwktyk1fbfsseef1c32.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxuwktyk1fbfsseef1c32.png" alt="Image description" width="800" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ideally, a product categorization should be easy to comprehend within 3 seconds. This is all about systemizing the categorization in a meaningful way based on attributes like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product types&lt;/li&gt;
&lt;li&gt;Application areas&lt;/li&gt;
&lt;li&gt;Format and sizes&lt;/li&gt;
&lt;li&gt;Customer types&lt;/li&gt;
&lt;li&gt;etc...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A prime example of this in a B2B context comes again from &lt;a href="https://www.blake-envelopes.com/" rel="noopener noreferrer"&gt;Blake Envelopes&lt;/a&gt;. They break down their assortment into multiple categories at once (e.g. envelope size, color, type etc...) for the customer to easily find the system most meaningful to their own situation. They also combine it with a lot of visual elements to make the categorization very easy to decode even from a quick look at it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2yxvmogm7gbt2pqqhvlj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2yxvmogm7gbt2pqqhvlj.png" alt="Image description" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  #4 - KISS navigation
&lt;/h3&gt;

&lt;p&gt;Granted, Blake Envelopes benefits from its product simplicity (envelopes), and not all B2B brands share that luxury. &lt;/p&gt;

&lt;p&gt;However, some stores managed to still make their product categories easy to navigate despite large and complex catalogs. The secret? The &lt;a href="https://www.freecodecamp.org/news/keep-it-simple-stupid-how-to-use-the-kiss-principle-in-design/" rel="noopener noreferrer"&gt;&lt;strong&gt;K&lt;/strong&gt;eep &lt;strong&gt;I&lt;/strong&gt;t &lt;strong&gt;S&lt;/strong&gt;imple &lt;strong&gt;S&lt;/strong&gt;tupid (KISS) principle&lt;/a&gt; was applied throughout their assortment.&lt;/p&gt;

&lt;p&gt;Their product catalogs most often were based on product types, with simple alphabetical orders to systemize sub-categories. No fancy titles, no overly visual designs or anything similar. &lt;/p&gt;

&lt;p&gt;Below is an example from &lt;a href="http://Alibaba.com" rel="noopener noreferrer"&gt;Alibaba.com&lt;/a&gt; showcasing a very lean and simple setup despite guarding several thousand products underneath each sub-category.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6i5qp4psd6wsmva6pser.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6i5qp4psd6wsmva6pser.png" alt="Image description" width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notice, as well, that even the world's largest B2B commerce sites stick to only 3 layers of product categories in their category dropdowns (the same goes for other large B2B sites such as Amazon and Eworldtrade).&lt;/p&gt;

&lt;p&gt;Does KISS mean you cannot spice up your categorization when having a large B2B product catalog? Absolutely not. Below are a few examples of how some B2B ships add creativity to the categorization via cross-categories.&lt;/p&gt;

&lt;h3&gt;
  
  
  #5 - Cross-categories with purpose
&lt;/h3&gt;

&lt;p&gt;Although the MECE principle applies to the overall categorization, there are a few examples of categories that can be used to collect products across different category types&lt;/p&gt;

&lt;p&gt;The three most common types of categories are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Most popular:&lt;/strong&gt; Guided by total sales (in $) or number of items sold.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discounts:&lt;/strong&gt; Often just filtering all discounted products across the site. In some instances, only selected products are displayed here to bring special attention to products the shop wants to get rid of quickly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New arrivals:&lt;/strong&gt; This category was used not only in seasonal shops (e.g. fashion and beauty) but also in more traditional B2B product sites where B2B purchasers might be looking primarily to stay updated on new additions to the catalog.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether the above cross-categories make sense obviously depends on the business type and the type of B2B customers expected. In all regards, these methods are great to use when you have a specific target to optimize for. For example, you can use this method to bring attention to your newest collection, clearing inventory with discounts, or similar.&lt;/p&gt;

&lt;p&gt;Aside from the above more traditional cross-categories, I also experienced a few more “exotic” cross-categories in a few stores. Namely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Delivery time:&lt;/strong&gt; An interesting cross-category was Delivery Time (found in &lt;a href="https://www.dhgate.com/" rel="noopener noreferrer"&gt;DHgate&lt;/a&gt;). This one caters to the need for quick delivery, which is more associated with B2C-styled shops. In some instances, this category might prove useful when quick replenishment and/or assortment replacement is needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trending searches:&lt;/strong&gt; Some of the largest B2B shops had this category included (for example, &lt;a href="https://www.snapdeal.com/" rel="noopener noreferrer"&gt;Snapdeal&lt;/a&gt; and &lt;a href="http://Made-in-China.com" rel="noopener noreferrer"&gt;Made-in-China.com&lt;/a&gt;) to improve customer navigation. One of the more nuanced variations of it comes from &lt;a href="https://www.ec21.com/" rel="noopener noreferrer"&gt;ec21&lt;/a&gt;, which almost treats Top Searching Keywords as a subcategory of its own (see below).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftry3122p0raszckectm9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftry3122p0raszckectm9.png" alt="Image description" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Similar to the other cross-categories, these can be highly beneficial when you purposefully emphasize a trait across many categories, e.g. highlighting delivery time as a strength or hinting customers to top queries.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Too many B2B companies today do not focus enough on their ecommerce product categorization, despite it being one of the primary ways of site navigation.&lt;/p&gt;

&lt;p&gt;Below are 5 simple rules that I learned that made some B2B ecommerce sites stand out on product categorization:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;#1 - MECE sub-categories&lt;/strong&gt;: Product sub-categories should be Mutually Exclusive and Collectively Exhaustive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;#2 - Rule of three:&lt;/strong&gt; Have at maximum three layers of product categories showcased on your site (especially in the dropdown navigation).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;#3 - Three seconds to comprehend&lt;/strong&gt;: Systemize and structure your categories in a way that takes less than 3 seconds to comprehend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;#4 - KISS navigation:&lt;/strong&gt; When your catalog is large and diverse, keep the navigation simple with to-the-point category names and less distracting visuals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;#5 - Cross-categories with purpose:&lt;/strong&gt; Use cross-categories when you purposefully want to emphasize a trait across many categories&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more articles on how to build a great B2B ecommerce experience, check out our articles on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://medusajs.com/blog/9-best-ecommerce-ux-practices-with-examples/" rel="noopener noreferrer"&gt;9 Best Ecommerce UX Practices From the World's Best Ecommerce Site&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://medusajs.com/blog/5-b2b-ecommerce-sites-to-learn-ux-design/" rel="noopener noreferrer"&gt;5 B2B Ecommerce Sites to Learn UX Design&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://medusajs.com/blog/top-5-open-source-ecommerce-platforms/" rel="noopener noreferrer"&gt;Best open source ecommerce platforms for B2B: A feature-by-feature review&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://medusajs.com/blog/medusa-b2b-part-1/" rel="noopener noreferrer"&gt;Medusa B2B: How to set Up B2B Store&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>crypto</category>
      <category>blockchain</category>
      <category>web3</category>
      <category>offers</category>
    </item>
    <item>
      <title>9 UX Learnings From the World's Best Ecommerce Site</title>
      <dc:creator>Nicklas Gellner</dc:creator>
      <pubDate>Thu, 15 Dec 2022 13:47:06 +0000</pubDate>
      <link>https://dev.to/medusajs/9-ux-best-practices-for-ecommerce-1oao</link>
      <guid>https://dev.to/medusajs/9-ux-best-practices-for-ecommerce-1oao</guid>
      <description>&lt;p&gt;Ecommerce websites require great user experience (UX) to achieve the reason for which they’re created—drive sales and conversion. &lt;/p&gt;

&lt;p&gt;In B2B this is often a neglected topic, which is why we wanted to shed more light on the best practices in the area.&lt;/p&gt;

&lt;p&gt;This article will use an example case from a B2B site that recently made the top of HackerNews as &lt;em&gt;the best e-commerce site&lt;/em&gt;, &lt;a href="https://www.mcmaster.com/" rel="noopener noreferrer"&gt;mcmaster.com&lt;/a&gt; by McMaster-Carr.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fojr6kvnmppqu3fp1ph65.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fojr6kvnmppqu3fp1ph65.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this article, you’ll get a breakdown of what McMaster-Carr does particularly well in its UX practices.&lt;/p&gt;

&lt;h3&gt;
  
  
  Medusa’s B2B Focus
&lt;/h3&gt;

&lt;p&gt;Recently, we launched &lt;a href="https://medusajs.com/blog/medusa-b2b-part-1" rel="noopener noreferrer"&gt;a new B2B starter&lt;/a&gt; to our headless open source commerce platform, Medusa. In this regard, we are particularly interested to showcase how a headless setup allows developers to build fine-tuned storefronts using the case of McMaster-Carr.&lt;/p&gt;

&lt;p&gt;If you’d like to know more about our product and how we serve B2B users, feel free to visit &lt;a href="https://medusajs.com/b2b-commerce-platform/" rel="noopener noreferrer"&gt;medusajs.com/b2b-commerce-platform&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What is McMaster-Carr?
&lt;/h2&gt;

&lt;p&gt;McMaster-Carr is a business-to-business (B2B) industrial supply company founded in 1901. Their website has been around since the early days of the internet and continues to be a popular place for businesses and hobbyists to buy hardware and accessories.&lt;/p&gt;

&lt;p&gt;In fact, a post titled “Mcmaster.com is the best e-commerce site I've ever used” recently trended on &lt;a href="https://news.ycombinator.com/item?id=32976978" rel="noopener noreferrer"&gt;Hacker News&lt;/a&gt;. What seemed like an innocuous statement ended up receiving over 490 comments as people discussed the merits of the B2B ecommerce businesses alongside personal anecdotes from using it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the McMaster-Carr Website Has the Best Ecommerce UX
&lt;/h2&gt;

&lt;p&gt;The McMaster-Carr website is indeed an excellent one and stands out; here’s how they’ve helped create the best UX for their customers:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Seamless Customer Journey
&lt;/h3&gt;

&lt;p&gt;Today’s online shopping experiences are rife with distractions: pop-up ads with coupon codes, hero sections advertising new deals and steals, and product carousels with upselling and cross-selling recommendations.&lt;/p&gt;

&lt;p&gt;McMaster-Carr shoppers don’t encounter distractions; you can see proof of this on the homepage which jumps right into the action:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftzuy5nw2ylyo8nwaxclk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftzuy5nw2ylyo8nwaxclk.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In addition, the designers have done a great job in minimizing the number of landing pages shoppers have to visit before buying something.&lt;/p&gt;

&lt;p&gt;As a result, they’ve reduced the number of clicks their shoppers have to make from the point of entry to conversion. This reduced workload makes the website feel easier to use. It also means they get their shopping done more quickly.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Uncluttered UI
&lt;/h3&gt;

&lt;p&gt;McMaster-Carr currently has over 700,000 products in its store. That amount of inventory alone would be enough to overwhelm some shoppers. That’s why it’s crucial that the design and layout of the store be as uncluttered and straightforward as possible.&lt;/p&gt;

&lt;p&gt;Many of the best ecommerce UX these days have well-laid-out architectures. The main difference between those stores and McMaster’s is the level of detail put into the user interface (UI).&lt;/p&gt;

&lt;p&gt;You won’t find eye-catching gradients, fun animations, or anything like that here. The visual design of the McMaster-Carr website more closely resembles a detailed yet raw-looking wireframe than it does a fully fleshed-out and branded store.&lt;/p&gt;

&lt;p&gt;Considering this is an industrial supply store, the lowkey UI design makes a lot of sense. Hardware doesn’t need to be pretty in order to be effective. This frill-less design keeps visual distractions at bay so shoppers can focus on the products and their specifications.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ykq6sxjyyqoi017tg2o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ykq6sxjyyqoi017tg2o.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example, colors are kept to a minimum. In addition, the images are all presented in greyscale. This basic color palette and presentation of images make it easy for shoppers to focus on product details instead of getting caught up in flashy design choices on the site.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Sticky Left-Side Navigation
&lt;/h3&gt;

&lt;p&gt;The placement and design of the navigation matter a good deal. On most ecommerce websites, you’ll find the navigation inside of the header, with each top-level product category spread out across the width of it. Shoppers can then hover over each category to explore sub-categories of products.&lt;/p&gt;

&lt;p&gt;McMaster-Carr’s designers have handled this much differently. The navigation is a sticky sidebar that sits alongside the left rail of the website. It can also be accessed by clicking the “BROWSE CATALOG” hamburger menu button in the top-left corner.&lt;/p&gt;

&lt;p&gt;This design is beneficial. There’s been no compromise in terms of which product categories get top billing. All of them are present. Not only that, the categories fit without forcing shoppers to scroll.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4p2069yw3hjn5gpcw35n.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4p2069yw3hjn5gpcw35n.gif" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Effective Header Design
&lt;/h3&gt;

&lt;p&gt;While navigation is a primary component of the online shopping UX, it often takes up so much room that other important elements are sidelined. Thanks to sticky sidebar navigation, McMaster-Carr’s header design isn’t weighed down by product category links.&lt;/p&gt;

&lt;p&gt;Instead, what shoppers find is a light, airy website header design where it’s easy to find all the important tools they need.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsesuhrmijo66qjlfip5r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsesuhrmijo66qjlfip5r.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The different header components are sized and styled based on importance. For example, the search bar is about a third of the width of the header. Its prominent size ensures that shoppers can quickly find and use it when they have something specific they are shopping for.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Smart Site Search
&lt;/h3&gt;

&lt;p&gt;The importance of the search bar [add article link] cannot be understated in ecommerce. Without it, the online shopping experience would be more time-consuming and stressful than it often already is.&lt;/p&gt;

&lt;p&gt;That said, stores the size and complexity of McMaster-Carr need to equip shoppers with advanced search functionality — one that can fix any spelling errors and predict what they’re searching for.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyweq6po5o3dxexck7fpj.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyweq6po5o3dxexck7fpj.gif" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Without a smart search feature, shoppers would likely run into a ton of stumbling blocks. Not only does this search bar fix entry errors, but it provides alternative matching results. This maximizes the chances that shoppers will find exactly what they’re looking for the first time they search for it.&lt;/p&gt;

&lt;p&gt;What’s more, results don’t just get updated in the search’s dropdown bar. They get updated on the page, providing shoppers with even more results and product sub-categories to consider.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Helpful Search Filters
&lt;/h3&gt;

&lt;p&gt;The search bar and navigation are the entry point into the McMaster-Carr shopping experience. They alone won’t get shoppers where they need to go, which is why the filters sidebar is needed.&lt;/p&gt;

&lt;p&gt;Regardless of which tool shoppers use to get there, the left-aligned filters sidebar will help them whittle down their product search results page. This is yet another way in which the designers have streamlined the shopping experience.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzdrj69foursf68pzid59.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzdrj69foursf68pzid59.gif" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Scroll through the filters and you’ll notice these don’t look like your typical ecommerce controls.&lt;/p&gt;

&lt;p&gt;For example, you won’t find sliders, which can be unwieldy depending on how large of a dataset you’re trying to pick a number from. What’s more, when scrollable lists of data are presented, a mini search bar is always present at the top as a shortcut to scrolling.&lt;/p&gt;

&lt;p&gt;These filters enhance an already streamlined ecommerce UX. With descriptive matching visuals, companion search bars, and easy-to-find clickable links, these filters make shopping on McMaster-Carr a breeze.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Simplified Content
&lt;/h3&gt;

&lt;p&gt;One of the problems with modern ecommerce design is the idea that a product page needs to be long. Product images dominate above the fold. Product descriptions and specifications sit just below the fold. Then there are sections for related product recommendations, product comparison tables, FAQs, customer reviews, and so on.&lt;/p&gt;

&lt;p&gt;The longer the page becomes, the longer the decision-making process is going to take. And the longer those decisions take, the more chances there are for distractions and doubts to keep shoppers from converting.&lt;/p&gt;

&lt;p&gt;McMaster-Carr’s product page design is a beautiful lesson in simplicity.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj8d2c1ebmyn2p53pa6t6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj8d2c1ebmyn2p53pa6t6.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Shoppers see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The product type&lt;/li&gt;
&lt;li&gt;Accompanying product photo&lt;/li&gt;
&lt;li&gt;Short description&lt;/li&gt;
&lt;li&gt;Table breaking down the specifications for each size&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If shoppers want more details on the product type, they can expand the information provided under the accordion dropdowns at the top. If they want more information on the product specification, they can click the “Product Detail” button beneath to see more or to download the CAD file in their preferred format.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdfwvecderqv0n7vafp33.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdfwvecderqv0n7vafp33.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With the way these pages are designed, there’s no need for users to scroll or to worry that they’re missing important details. It’s all clearly laid out in an easy-to-follow format.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Custom Cart Page Design
&lt;/h3&gt;

&lt;p&gt;The purpose of the cart page is to give shoppers the chance to review their items, make modifications, and add relevant notes before they check out. McMaster-Carr calls this page “ORDER” and it includes important features like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Field to enter the purchase order number&lt;/li&gt;
&lt;li&gt;Option to add reference info on each line&lt;/li&gt;
&lt;li&gt;Ability to convert to table view&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdry96wx599ovhvf8oxmb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdry96wx599ovhvf8oxmb.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The one drawback about the way this cart page is designed — and how checkout is handled, in general — is that customers never get to see their true total costs. They can see the merchandise total on the right. However, shipping fees and taxes get added on post-purchase because of the way McMaster-Carr handles product fulfilment.&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Seamless Checkout Experience
&lt;/h3&gt;

&lt;p&gt;Many shoppers have come to expect the shopping cart page and ecommerce checkout flow to be two separate parts. It’s not necessarily done this way because it’s in the shoppers’ best interests. Instead, it’s usually because the ecommerce software generates the shopping cart while the payment gateway plugin creates the checkout flow.&lt;/p&gt;

&lt;p&gt;McMaster-Carr’s website makes no distinction between the two. Instead, there is a seamless transition from the cart to checkout.&lt;/p&gt;

&lt;p&gt;Shoppers log into their accounts on the right side of the “ORDERS” page. The checkout form then takes the place of the login form.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8dsve9l0ckyc74q9v9o4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8dsve9l0ckyc74q9v9o4.gif" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Shoppers won't encounter a checkout page that looks foreign compared to the rest of the site. Nor will they have to deal with multi-step checkout flows. There’s a single form built right into the “ORDER” page where they:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose the delivery method.&lt;/li&gt;
&lt;li&gt;Enter delivery address details.&lt;/li&gt;
&lt;li&gt;Provide payment information.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The form responds to every choice they make as well as to everything they input into the fields (if anything at all). This ensures that, when they’re ready to click the sticky “PLACE ORDER” button at the top, no errors occur.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Want to get more inspiration on UX best practices? Sign-up for our newsletter on &lt;a href="http://medusajs.com" rel="noopener noreferrer"&gt;medusajs.com&lt;/a&gt; as we will share no less than 5 more ecommerce deep dives on best practice UX for B2B.&lt;/p&gt;

&lt;p&gt;For more B2B specific readings, check out Medusa’s recent tutorials and perspectives:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Our tutorial on how you set up Medusa to support B2B: &lt;a href="https://medusajs.com/blog/medusa-b2b-part-1" rel="noopener noreferrer"&gt;Part 1&lt;/a&gt; &amp;amp; &lt;a href="https://medusajs.com/blog/medusa-b2b-part-2" rel="noopener noreferrer"&gt;Part 2&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Our &lt;a href="https://medusajs.com/blog/open-source-b2b-ecommerce-industry-perspective/" rel="noopener noreferrer"&gt;Perspective on Open Source B2B Ecommerce&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Our &lt;a href="https://medusajs.com/blog/top-5-open-source-ecommerce-platforms/" rel="noopener noreferrer"&gt;Comparison of the Top 5 Open Source B2B Ecommerce Platforms&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ux</category>
      <category>opensource</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Uncovering Open Source B2B Ecommerce</title>
      <dc:creator>Nicklas Gellner</dc:creator>
      <pubDate>Wed, 14 Dec 2022 13:55:30 +0000</pubDate>
      <link>https://dev.to/medusajs/uncovering-open-source-b2b-ecommerce-4lbp</link>
      <guid>https://dev.to/medusajs/uncovering-open-source-b2b-ecommerce-4lbp</guid>
      <description>&lt;p&gt;At &lt;a href="https://github.com/medusajs/medusa"&gt;Medusa&lt;/a&gt;, we recently published our Perspective on Open Source B2B ecommerce as part of the launch of our &lt;a href="https://medusajs.com/blog/medusa-b2b-part-1"&gt;new B2B starter template&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I believe that more focus should be put on open source solutions in the context of B2B ecommerce. The field presents a major opportunity for open source platforms as B2B commerce cases often require a lot more customization and flexibility than proprietary platforms can handle.&lt;/p&gt;

&lt;p&gt;In this short article, I will present a summary of our thesis on why B2B businesses should consider open source platforms to power their ecommerce setup. We will also share a comparison of existing platforms open source platforms in the end.&lt;/p&gt;

&lt;p&gt;You can download the &lt;a href="https://medusajs.com/b2b-commerce-platform"&gt;full PDF version of this Perspective on our website&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ecommerce is becoming a key revenue channel in B2B sales
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pmWkcwTS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/de0x39l5dsq9rxjt3sci.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pmWkcwTS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/de0x39l5dsq9rxjt3sci.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It has long been a myth that B2B businesses don’t offer ecommerce. That’s wrong. A recent &lt;a href="https://www.mckinsey.com/capabilities/growth-marketing-and-sales/our-insights/busting-the-five-biggest-b2b-e-commerce-myths"&gt;McKinsey study&lt;/a&gt; shows that 65% of B2B companies across industry sectors now offer ecommerce. In fact, ecommerce is becoming one of the main revenue channels for B2B.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open source ecommerce platforms best serve the customization needs of B2B businesses
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tycW3xor--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/teemgt5ga5clgoj8in1x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tycW3xor--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/teemgt5ga5clgoj8in1x.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Businesses and their development teams benefit from open source platforms due to their flexibility. B2B commerce is complex as you need to handle aspects like customer groups, differentiated pricing, multiple integrations, and so on.&lt;/p&gt;

&lt;p&gt;The flexibility of open source platforms makes them well-suited to handle these complexities as they can be better customized to individual business needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open source and custom build ecommerce platforms are the preferred options among the top 250k ecommerce sites
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JFiz_knG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pyx2zqntkdhybwaxe5u3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JFiz_knG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pyx2zqntkdhybwaxe5u3.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We used &lt;a href="http://builtwith.com"&gt;builtwith.com&lt;/a&gt; to categorize the checkout flows of the top 250k ecommerce sites online measured by traffic. &lt;strong&gt;56% of the largest ecommerce sites online use an open source or custom build ecommerce platform.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a strong testimony to the fact that as the complexity of businesses increases - as in the case of B2B - the greater the need is for flexibility and open architectures.&lt;/p&gt;

&lt;h2&gt;
  
  
  For open source platforms to be relevant, they need to support B2B-specific ecommerce features
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--30BkiaXQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y466s0m38e40w8shatn5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--30BkiaXQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y466s0m38e40w8shatn5.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To understand what open source ecommerce platforms best support B2B, we categorized the 10 most important features to support a modern B2B business.&lt;/p&gt;

&lt;p&gt;This includes core features such as &lt;strong&gt;Customer groups&lt;/strong&gt; to set up individual B2B customer rules, &lt;strong&gt;Price lists&lt;/strong&gt; to differentiate pricing across customers, and &lt;strong&gt;Sales channels&lt;/strong&gt; to separate B2B and B2C experiences.&lt;/p&gt;

&lt;p&gt;These are some of the core features that B2B clients have requested from us in the past.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview of critical B2B features supported by existing open source platforms
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OIfiNVwN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0zq8oaxll4k1bj3u0d9g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OIfiNVwN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0zq8oaxll4k1bj3u0d9g.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At last, we looked at the most well-recognized open source platforms for B2B and compared them across the feature sets - &lt;a href="https://medusajs.com/blog/top-5-open-source-ecommerce-platforms/"&gt;read the in-depth comparison here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Obviously, we built Medusa with this specific feature set in mind giving us an unfair advantage. However, it was still striking to see how many of the traditional B2B OS platforms failed to support elements we would consider core B2B functionality. &lt;/p&gt;

&lt;p&gt;The research across competing platforms was undertaken by an independent researcher to ensure we got unbiased inputs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Want more?
&lt;/h2&gt;

&lt;p&gt;Discover more about B2B and open source ecommerce:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download our full Perspective presented above on our &lt;a href="https://medusajs.com/b2b-commerce-platform"&gt;B2B-page.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Check out our tutorial on how you set up Medusa to support B2B: &lt;a href="https://medusajs.com/blog/medusa-b2b-part-1"&gt;Part 1&lt;/a&gt; &amp;amp; &lt;a href="https://medusajs.com/blog/medusa-b2b-part-2"&gt;Part 2&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Reach out in our &lt;a href="https://discord.com/invite/medusajs"&gt;Discord&lt;/a&gt; for a chat on the topic&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>opensource</category>
      <category>programming</category>
      <category>showdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>5 best open source platforms for B2B ecommerce</title>
      <dc:creator>Nicklas Gellner</dc:creator>
      <pubDate>Tue, 13 Dec 2022 13:23:36 +0000</pubDate>
      <link>https://dev.to/medusajs/5-best-open-source-platforms-for-b2b-ecommerce-1kg4</link>
      <guid>https://dev.to/medusajs/5-best-open-source-platforms-for-b2b-ecommerce-1kg4</guid>
      <description>&lt;p&gt;B2B ecommerce can be a complicated matter and imposes new requirements for an ecommerce platform compared to what is required to handle regular B2C commerce.&lt;/p&gt;

&lt;p&gt;Getting an overview of the B2B features that are supported out-of-the-box in the different open source solutions available in the market can likewise be challenging. Therefore, I spent some time together with &lt;a href="https://www.linkedin.com/in/carlos-padilla-3a7679139/" rel="noopener noreferrer"&gt;Carlos Padilla&lt;/a&gt; researching:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What are the 10 most critical features to support a scaleable B2B ecommerce setup?&lt;/li&gt;
&lt;li&gt;How well do the 5 most popular open source platforms compare across these features?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Below is a summary of the findings.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdfoxbpg6ouv9qwvobko2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdfoxbpg6ouv9qwvobko2.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why use open source for B2B commerce
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is an open source commerce platform
&lt;/h3&gt;

&lt;p&gt;Before jumping into it, let’s get the definitions right.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open source&lt;/strong&gt; refers to the source code of the platform being fully publicly available for anyone to view, modify, and distribute freely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;B2B ecommerce&lt;/strong&gt; refers to the direct sale of products or services between two businesses through an online sales portal. For instance, between a manufacturer and a wholesaler.&lt;/p&gt;

&lt;h3&gt;
  
  
  The benefits of open source commerce platforms
&lt;/h3&gt;

&lt;p&gt;Businesses and their development teams often benefit from open source commerce platforms as they can take full control of the code base. This gives them the flexibility to build bespoke commerce setups. &lt;/p&gt;

&lt;p&gt;Newer open source commerce platforms have especially focused on the composability of the platform. This makes it possible for merchants to set up a tech stack of their preference while giving their development teams the possibility of mingling directly with the core to customize it to their preference. This is not possible with proprietary platforms.&lt;/p&gt;

&lt;p&gt;This flexibility is the reason why the majority of the world’s top 250k ecommerce sites today use either open source or custom-built platforms to power their ecommerce setups. You can read more about this in &lt;a href="https://medusajs.com/b2b-commerce-platform" rel="noopener noreferrer"&gt;our recent Open Source B2B Ecommerce Perspective&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why does flexibility matter for B2B businesses
&lt;/h3&gt;

&lt;p&gt;The benefits of platform flexibility are only amplified in the world of B2B-oriented businesses.&lt;/p&gt;

&lt;p&gt;B2B is a complex area in commerce as you need to handle a lot of aspects that not considered in B2C. This includes customer groups, customer-differentiated pricing &amp;amp; discounts, separate B2B product catalogs, and more. &lt;/p&gt;

&lt;p&gt;In addition, the integration landscape becomes more complex due to the need for integrations with ERP systems, more advanced fulfillment systems, new omnichannel experiences on the frontend, etc.&lt;/p&gt;

&lt;p&gt;This requires flexible systems that are geared toward handling more bespoke cases. That is the reason why most B2B businesses end up building completely from scratch or hacking their setup together using a proprietary platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 10 Most Important B2B Ecommerce Features
&lt;/h2&gt;

&lt;p&gt;First, we identified the 10 most important features to have for an ecommerce platform that needs to support B2B cases. We determined the features based on conversations with existing B2B ecommerce managers &amp;amp; developers, along with requirement specifications from our own B2B cases.&lt;/p&gt;

&lt;p&gt;Below are the 10 features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Customer groups&lt;/strong&gt; are a way to group customers with similar characteristics. This feature helps define unique B2B and custom logic for one particular subset of customers, for instance, specific pricing, promotions, or access levels.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Price lists&lt;/strong&gt; allow setting different B2B prices for different customer groups. This is used to add a sale or override the pricing of one or more products based on specific conditions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sales Channels&lt;/strong&gt; allow separating B2C and B2B customer experiences. Businesses can define different products for different channels. For example, B2B customers can see and purchase different products than B2C customers on the same interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic order management&lt;/strong&gt; allows businesses to perform granular order handling for B2B customers, including creating a new order on their behalf, adding payments, defining shipping addresses, or changing the order status.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bulk imports&lt;/strong&gt; allow for the handling of larger B2B product catalogs by importing them from files, such as CSV files. Resources can be products, orders, customers, prices, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-currency support&lt;/strong&gt; enables B2B customers to order in their local currency catering to global B2B customers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payment flexibility&lt;/strong&gt; means the ability to configure different payment methods based on regional settings. This allows global B2B customers to choose the payment method that is available in their region.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Product configurations&lt;/strong&gt; allow merchants to associate unlimited custom attributes and options with their products. For a B2B case, the product catalog can get very complex. So, advanced product configurations provide additional information about a product to help customers make better purchase decisions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced search&lt;/strong&gt; allows B2B customers with large catalogs to refine the search and discovery criteria and to display results quickly and accurately. Some advanced search strategies include typo tolerance, intuitive search, synonyms, keyword discovery, and faceted search.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Native headless ecommerce&lt;/strong&gt; refers to offering a solution where the frontend and backend of an ecommerce system are independent. From a B2B perspective, this allows businesses to offer omnichannel support by simultaneously developing different implementations for different channels. For example, developing a mobile application and a web app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Legend&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;✅ = Supported&lt;/p&gt;

&lt;p&gt;➕ = Supported via plugin&lt;/p&gt;

&lt;p&gt;❌ = Not supported&lt;/p&gt;

&lt;h2&gt;
  
  
  Medusa (JS/TS)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Customer groups&lt;/strong&gt; are available out-of-the-box and can be used for making discounts and promotions available for B2B wholesalers or retailer groups.&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Price lists&lt;/strong&gt; are available out-of-the-box and allow you to specify custom pricing for each B2B customer group. Importing prices from a CSV file into a price list is available to better handle larger assortments.&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Sales channels&lt;/strong&gt; allow you to manage order logistics and product data differently for each sales channel. You can create a B2B sales channel, specify which products are available in it, and process B2B orders in its own flow. You can do all of that from the same platform you manage B2C customers. At the moment of writing this, sales channels must be manually enabled using &lt;a href="https://docs.medusajs.com/advanced/backend/feature-flags/toggle/" rel="noopener noreferrer"&gt;feature flags&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;✅ The &lt;strong&gt;dynamic order management&lt;/strong&gt; allows you to create manual draft orders, add existing or custom products as purchased items, and specify custom shipping amounts. Moreover, you can cancel the draft order or mark it as paid.&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Bulk imports&lt;/strong&gt; for products and prices are available out-of-the-box; you can see the import process and check its status or cancel it. It's also effortless to extend the functionality to import other resources like orders or customers by &lt;a href="https://docs.medusajs.com/advanced/backend/batch-jobs/create" rel="noopener noreferrer"&gt;creating batch jobs&lt;/a&gt; with the Admin API.&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Multi-currency support&lt;/strong&gt; is available out of the box; you can add multiple currencies and set product prices for each currency and region. Regions represent one or more countries and have their own currency. Customers can choose the region based on their currency and location.&lt;/li&gt;
&lt;li&gt;✅ Medusa offers &lt;strong&gt;payment flexibility&lt;/strong&gt; as you can specify which payment providers and methods are available for each region. Medusa offers plugins for &lt;a href="https://docs.medusajs.com/add-plugins/paypal" rel="noopener noreferrer"&gt;PayPal&lt;/a&gt; and &lt;a href="https://docs.medusajs.com/add-plugins/stripe" rel="noopener noreferrer"&gt;Stripe&lt;/a&gt;, but there are many payment community plugins.&lt;/li&gt;
&lt;li&gt;✅ Aside from basic product configuration such as general details or product collection, Medusa allows you to add &lt;strong&gt;advanced product configurations&lt;/strong&gt; including unlimited options and variants, a metadata field to include any custom configurations, pricing per currency and region, and more.&lt;/li&gt;
&lt;li&gt;➕ In Medusa, &lt;strong&gt;advanced search&lt;/strong&gt; can be implemented by integrating any search engine. Medusa offers official plugins for &lt;a href="https://docs.medusajs.com/add-plugins/algolia" rel="noopener noreferrer"&gt;Algolia&lt;/a&gt; and &lt;a href="https://docs.medusajs.com/add-plugins/meilisearch" rel="noopener noreferrer"&gt;MeiliSearch&lt;/a&gt;. By integrating these powerful search engines, you can utilize their advanced search functionalities. When you add or update products on your Medusa server, the changes are reflected on the indices in the integrated search engine.&lt;/li&gt;
&lt;li&gt;✅ Medusa is a flexible &lt;strong&gt;headless commerce&lt;/strong&gt; platform with a backend that holds all the store's logic and data. It offers Admin and Store REST APIs to interact with the backend. It also offers an intuitive Medusa admin and Jamstack storefront starters.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Who should use Medusa
&lt;/h3&gt;

&lt;p&gt;Medusa covers nine of the ten features, leaving out only one feature you can add by using plugins. &lt;/p&gt;

&lt;p&gt;Medusa is one of the newest solutions on the market but has been used in production since 2018. It provides a powerful and flexible solution built on a composable architecture making it easy to customize the solution to specific user needs.&lt;/p&gt;

&lt;p&gt;Businesses with a B2B ecommerce model should consider Medusa as it provides scalability, extendibility, and strong customization options. It’s also a powerful solution for developers preferring Node.js as it is the most used option in the Javascript and Typescript categories.&lt;/p&gt;

&lt;h2&gt;
  
  
  Magento (PHP)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;✅ Magento uses &lt;strong&gt;customer groups&lt;/strong&gt; to determine available discounts and taxes associated with the group. You can also set pricing rules for groups.&lt;/li&gt;
&lt;li&gt;❌ &lt;strong&gt;Prices lists&lt;/strong&gt; aren't offered, but it has catalog and cart price rules where you can apply discounts to specific products based on conditions. However, you can't override the price of products explicitly.&lt;/li&gt;
&lt;li&gt;❌ The &lt;strong&gt;sales channels&lt;/strong&gt; feature is not available in the open source version. This feature is available through extensions for Adobe Commerce but only supports specific sales channels such as Walmart or Amazon. However, it doesn't offer customizable sales channels.&lt;/li&gt;
&lt;li&gt;✅ The &lt;strong&gt;dynamic order management&lt;/strong&gt; lets you create manual orders from the Admin by selecting the customer and adding products. Also, you can fill up the order currency and apply coupon codes, payment, and shipping methods.&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Bulk imports&lt;/strong&gt; are available out-of-the-box, allowing users to import many records in a single operation. They can import new products and update, replace, and delete existing sets of products.&lt;/li&gt;
&lt;li&gt;✅ Magento supports &lt;strong&gt;multi-currency&lt;/strong&gt; as it allows you to accept currencies from more than 200 countries worldwide. You can customize the currency symbols, change the displayed symbol of currencies, and import currency rates.&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Payment flexibility&lt;/strong&gt; is supported by offering various offline methods such as cash on delivery, bank transfer payment, or check/money order methods that you can set for each store. For online methods, there are numerous integrations and gateways for third-party providers.&lt;/li&gt;
&lt;li&gt;✅ You can edit the general product information and add media such as images or videos for &lt;strong&gt;product configuration&lt;/strong&gt;. Also, you can customize product options and generate product variations with those options, and manage pricing and inventory.&lt;/li&gt;
&lt;li&gt;✅ You must install and configure Elasticsearch or OpenSearch for a basic search or use the paid module Live search for an &lt;strong&gt;advanced search&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;❌ Magento is not a &lt;strong&gt;native headless commerce&lt;/strong&gt; platform. However, you can access its data through a REST API by making a new integration in the Admin panel or using the GraphQl API developed for the Storefront.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Who Should Use Magento
&lt;/h3&gt;

&lt;p&gt;Magento covers seven of ten parameters and lacks price lists, sales channels, and a native headless solution. Although Magento provides powerful ecommerce features, the lack of these important B2B features can make it an unfit platforms for B2B businesses.&lt;/p&gt;

&lt;p&gt;Putting the missing features aside, B2B ecommerce models can consider Magento if they need a centralized ecommerce system and want to be on the market fast. Also, they want a convenient website builder that meets all their needs, such as integrations or automated wholesale web applications.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can &lt;a href="https://medusajs.com/blog/medusa-vs-magento-comparing-two-open-source-ecommerce-frameworks/" rel="noopener noreferrer"&gt;read this article&lt;/a&gt; to directly compare Medusa and Magento in terms of ecommerce features and developer experience.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Sylius (PHP)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Customer groups&lt;/strong&gt; are available by default and are used to attach cart promotions to offer a discount to customers that belong to specific groups. You can't add customers in bulk to a group.&lt;/li&gt;
&lt;li&gt;❌ &lt;strong&gt;Price lists&lt;/strong&gt; are not available since Sylius provides product prices per channel. Inside each product, you must set a current, an original, and a minimum price for each channel.&lt;/li&gt;
&lt;li&gt;✅ The &lt;strong&gt;sales channels&lt;/strong&gt; feature is available out of the box. You can configure general information, shop billing data, currencies and countries, and look and feel for each channel.&lt;/li&gt;
&lt;li&gt;➕ Sylius doesn't offer &lt;strong&gt;dynamic order management&lt;/strong&gt; by default. However, there is an official plugin that allows administrators to create &lt;strong&gt;manual orders&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;➕ Sylius doesn't have &lt;strong&gt;bulk import&lt;/strong&gt; by default. However, there is an approved plugin in the community that allows importing countries, customer groups, payment methods, tax categories, customers, and products.&lt;/li&gt;
&lt;li&gt;✅ Sylius offers &lt;strong&gt;multi-currency support&lt;/strong&gt; because you can set the base currency for each channel. However, you can't specify the price of a product per currency.&lt;/li&gt;
&lt;li&gt;✅ Sylius has &lt;strong&gt;payment flexibility&lt;/strong&gt; because you can set different payment methods for each channel. They offer a default configuration to use PayPal and Stripe as payment providers.&lt;/li&gt;
&lt;li&gt;✅ In Sylius, &lt;strong&gt;configurable products&lt;/strong&gt; can have different variations and attributes. You can edit products' general information, set their categories, and add many product attributes and images.&lt;/li&gt;
&lt;li&gt;➕ They have a grid filter to search by product name for a basic search. Sylius don't support &lt;strong&gt;advanced search&lt;/strong&gt; by default, but you can use a plugin to extend Sylius’ basic search functionality with ElasticSearch.&lt;/li&gt;
&lt;li&gt;✅ Sylius is a &lt;strong&gt;headless native platform&lt;/strong&gt; that offers Admin and Shop APIs. A new unified Sylius API is still under development and is tagged as experimental.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Who should use Sylius
&lt;/h3&gt;

&lt;p&gt;Sylius covers six of ten parameters, but two can be added through integrations. It fails to provide some essential features that B2B ecommerce businesses need to create different user experiences for different types of customers.&lt;/p&gt;

&lt;p&gt;On the other hand, a B2B ecommerce business can use Sylius if it wants to provide excellent conditions to maintain extensive data and have a proven track of flexibility towards customers' needs and scale of operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Spree (Ruby)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;❌ &lt;strong&gt;Customer groups&lt;/strong&gt; are unavailable in Spree, and there isn't an official extension to add them.&lt;/li&gt;
&lt;li&gt;❌ There are no &lt;strong&gt;price lists&lt;/strong&gt;, and you can’t override product prices explicitly or bulk import prices. However, you can use promotions with rules and conditions to set custom pricing for products, users, and carts.&lt;/li&gt;
&lt;li&gt;❌ In Spree, the &lt;strong&gt;sales channels&lt;/strong&gt; feature is unavailable, and there isn't an official extension to add it.&lt;/li&gt;
&lt;li&gt;✅ Spree offers &lt;strong&gt;dynamic order management&lt;/strong&gt; by default. You can create &lt;strong&gt;manual orders&lt;/strong&gt; from the admin panel, add products, quantities, and customer details, and choose the shipping method. You can also add order discounts and payments.&lt;/li&gt;
&lt;li&gt;❌ &lt;strong&gt;Bulk imports&lt;/strong&gt; are not supported, and there isn't an official integration to add this functionality. Some plugins can help to make bulk imports, but they seem outdated on GitHub.&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Multi-currency support&lt;/strong&gt; is available out-of-the-box; each store can have multiple locales and currencies, but you can't specify the price of a product per currency. If there is more than one currency, visitors can choose which they would like to use to browse the store.&lt;/li&gt;
&lt;li&gt;❌ Spree doesn't offer &lt;strong&gt;payment flexibility&lt;/strong&gt; because you can't specify payment methods by region or country, even if you have multiple payment methods, including online and offline options.&lt;/li&gt;
&lt;li&gt;✅ For &lt;strong&gt;product configurations&lt;/strong&gt;, you can edit product details and taxonomies. You can also set product option types to manage variant types and add custom attributes and prices for each product.&lt;/li&gt;
&lt;li&gt;➕ In Spree, there isn't any &lt;strong&gt;advanced search&lt;/strong&gt; functionality. Still, you can add an Elasticsearch integration with an extension that allows full-text searching and advanced product filtering.&lt;/li&gt;
&lt;li&gt;✅ Spree is a modular &lt;strong&gt;headless ecommerce&lt;/strong&gt; platform with two APIs. You can build an application-to-application integration and leverage its permission sets based on resource access.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Who should use Spree
&lt;/h3&gt;

&lt;p&gt;Spree only covers four features out-of-the-box and one more through integrations. So, using Spree can be a challenge for B2B businesses as they have to implement these features themselves for a full B2B experience.&lt;/p&gt;

&lt;p&gt;If B2B ecommerce businesses choose Spree they’ll benefit from its versatile, modular open-source ecommerce platform that allows for easy integrations. Also, Spree's order handling system is the best fit for business models needing to do multiple actions on their customers' orders.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prestashop (PHP)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;✅ PrestaShop allows you to give customers certain privileges by assigning them to &lt;strong&gt;customer&lt;/strong&gt; &lt;strong&gt;groups&lt;/strong&gt;. By default, there are three groups available: visitor, guest, and customer. You can’t delete the default groups, but you can add new ones.&lt;/li&gt;
&lt;li&gt;❌ &lt;strong&gt;Price lists&lt;/strong&gt; aren't available by default and you can't override the price of products explicitly. It has catalog price rules to assign price reductions by category, brand, supplier, attribute, or feature, to a range of products using conditions.&lt;/li&gt;
&lt;li&gt;❌ The &lt;strong&gt;sales channels&lt;/strong&gt; feature is unavailable in Prestashop, and there isn't an official extension to add it.&lt;/li&gt;
&lt;li&gt;✅ In Prestashop, &lt;strong&gt;dynamic&lt;/strong&gt; &lt;strong&gt;order management&lt;/strong&gt; is available by default. You can create &lt;strong&gt;manual orders&lt;/strong&gt;, but they are called back-office orders. You can provide customer details, products, vouchers, and addresses and organize the shipping and payment. Also, you can send pre-filled orders to customers.&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Bulk imports&lt;/strong&gt; are available out of the box. You can import everything into Prestashop: categories, products, customers, addresses, brands, suppliers, etc. You can also use other file formats besides CSV for the import.&lt;/li&gt;
&lt;li&gt;✅ PrestaShop has &lt;strong&gt;multi-currency support&lt;/strong&gt;, but you can't specify the price of a product per currency. You can add and configure new currencies to meet customers' needs. Currency exchange rates are calculated from one store's default currency unit.&lt;/li&gt;
&lt;li&gt;✅ In Prestashop, you can set &lt;strong&gt;payment methods&lt;/strong&gt; by currency, customer groups, or countries. Check and bank wire is the only payment methods enabled by default. However, you can install other payment modules from the Prestashop add-ons marketplace.&lt;/li&gt;
&lt;li&gt;✅ You can edit product details on the &lt;strong&gt;product configuration&lt;/strong&gt; page and add quantities, combinations, virtual products, and other stock-related options. You can set pricing options and manage your product's visibility, particular references, attached files, or suppliers.&lt;/li&gt;
&lt;li&gt;➕ Prestashop has an internal search engine from which you can configure its behavior. Also, you can install a community or paid extension from their marketplace for &lt;strong&gt;advanced search&lt;/strong&gt; functionalities.&lt;/li&gt;
&lt;li&gt;❌ Prestashop is a web application, not a &lt;strong&gt;headless native platform&lt;/strong&gt;. You can enable the shop's web service so third-party tools can access the data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Who should use Prestashop
&lt;/h3&gt;

&lt;p&gt;Prestashop covers out-of-the-box six of ten parameters, and you can add one more feature through their marketplace integration.&lt;/p&gt;

&lt;p&gt;For B2B ecommerce businesses looking for essential features like page management and a Multi-store to sell internationally, Prestashop could be a good option; it supports over 60 languages. Prestashop's administrative panel can be adapted to the business's needs and developed in line with the growth goals.&lt;/p&gt;

&lt;p&gt;However, Prestashop doesn't offer price lists and sales channels nor provide a native headless architecture, which is unsuitable for B2B business models looking for extensibility and customization.&lt;/p&gt;

&lt;h2&gt;
  
  
  Want more?
&lt;/h2&gt;

&lt;p&gt;There are plenty of good resources to discover more about B2B and open source ecommerce:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download our Perspective on the Open Source B2B Ecommerce industry on our &lt;a href="https://medusajs.com/b2b-commerce-platform" rel="noopener noreferrer"&gt;B2B-page.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Check out our tutorial on how you set up Medusa to support B2B: &lt;a href="https://medusajs.com/blog/medusa-b2b-part-1" rel="noopener noreferrer"&gt;Part 1&lt;/a&gt; &amp;amp; &lt;a href="https://medusajs.com/blog/medusa-b2b-part-2" rel="noopener noreferrer"&gt;Part 2&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>opensource</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>I asked OpenAI's chatGPT to write a ballad about Open source tech 😂</title>
      <dc:creator>Nicklas Gellner</dc:creator>
      <pubDate>Sat, 03 Dec 2022 21:04:02 +0000</pubDate>
      <link>https://dev.to/nicklasgellner/i-asked-openais-chatgpt-to-write-a-ballad-about-open-source-tech-333o</link>
      <guid>https://dev.to/nicklasgellner/i-asked-openais-chatgpt-to-write-a-ballad-about-open-source-tech-333o</guid>
      <description>&lt;p&gt;Normally I mostly write about everything &lt;a href="https://medusajs.com/"&gt;Medusa&lt;/a&gt; related, but could not help sharing this one. &lt;/p&gt;

&lt;p&gt;Also, used OpenAI for the cover photo 😉&lt;/p&gt;




&lt;p&gt;&lt;em&gt;In the world of technology,&lt;br&gt;
Where innovation knows no bounds,&lt;br&gt;
A new way of building rose,&lt;br&gt;
With a philosophy that astounds.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Open source, the name it bears,&lt;br&gt;
A community united,&lt;br&gt;
Sharing knowledge and skills,&lt;br&gt;
To create tools that excite.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;From Linux to WordPress,&lt;br&gt;
And countless projects in between,&lt;br&gt;
Open source tech has flourished,&lt;br&gt;
A force that cannot be seen.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;No longer bound by profit,&lt;br&gt;
Or the will of just a few,&lt;br&gt;
Open source gives us all,&lt;br&gt;
The power to create anew.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;With open source, we are free,&lt;br&gt;
To use, modify, and share,&lt;br&gt;
A world of possibilities,&lt;br&gt;
A future beyond compare.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;So let us sing its praises,&lt;br&gt;
And join the open source movement,&lt;br&gt;
Together we can build,&lt;br&gt;
A future that's worth the toil.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A future that's bright and bold,&lt;br&gt;
A future that's ours to hold,&lt;br&gt;
A future that's open and free,&lt;br&gt;
A future that's meant to be.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>webdev</category>
      <category>github</category>
      <category>python</category>
    </item>
    <item>
      <title>15,000 GH stars in a year: how we did it 🤩</title>
      <dc:creator>Nicklas Gellner</dc:creator>
      <pubDate>Thu, 24 Nov 2022 08:35:06 +0000</pubDate>
      <link>https://dev.to/medusajs/15000-gh-stars-in-a-year-how-we-did-it-4b0h</link>
      <guid>https://dev.to/medusajs/15000-gh-stars-in-a-year-how-we-did-it-4b0h</guid>
      <description>&lt;p&gt;It has only been a bit more than a year since we decided to raise funding in the quest of building &lt;em&gt;the best OS composable commerce platform for developers&lt;/em&gt; with &lt;a href="https://github.com/medusajs/medusa" rel="noopener noreferrer"&gt;&lt;strong&gt;Medusa&lt;/strong&gt;&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Since starting, we have had &lt;strong&gt;+10,000 project starts&lt;/strong&gt;, raised &lt;strong&gt;$9M in funding&lt;/strong&gt;, and gone from &lt;strong&gt;30 to +15,000 GitHub stars&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Below are some of my takeaways on how we managed to build strong early traction. While at it, please leave a 🌟 on our repo if you like this article: &lt;strong&gt;&lt;a href="https://github.com/medusajs/medusa" rel="noopener noreferrer"&gt;github.com/medusajs/medusa&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  TL;DR - 10 lessons:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Solve a problem that hurts:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1. &lt;strong&gt;Clear user pain point:&lt;/strong&gt; Make sure you understand the user pain point you are trying to solve.&lt;/li&gt;
&lt;li&gt;2. &lt;strong&gt;No good alternatives:&lt;/strong&gt; What you are building needs to clearly differentiated from what is already out there.&lt;/li&gt;
&lt;li&gt;3. &lt;strong&gt;Why does it need to be open source:&lt;/strong&gt; Ask yourself whether an OS solution is needed or if proprietary solutions actually solve it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Create a delightful product experience&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;4. &lt;strong&gt;A focused product approach:&lt;/strong&gt; It can be easy to get distracted, so keep the focus on your core product priorities.&lt;/li&gt;
&lt;li&gt;5. &lt;strong&gt;Support your community:&lt;/strong&gt; Building traction requires you to ensure that your community feels your commitment to their success.&lt;/li&gt;
&lt;li&gt;6. &lt;strong&gt;Invest in your DevEx:&lt;/strong&gt; Make it easy to get started with Docs, quick onboarding flows and supporting tools.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Get the word out there&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;7. &lt;strong&gt;Make it easy to understand:&lt;/strong&gt; Have a simple product description ready that makes it easy to comprehend what you are building.&lt;/li&gt;
&lt;li&gt;8. &lt;strong&gt;Focus on dev channels:&lt;/strong&gt; Ensure your product gets attention in forums and blogs where developers are present.&lt;/li&gt;
&lt;li&gt;9. &lt;strong&gt;Make big bets and follow through:&lt;/strong&gt; Prioritize events you know have the potential to send your product viral and make sure you execute these well.&lt;/li&gt;
&lt;li&gt;10. &lt;strong&gt;Make it authentic:&lt;/strong&gt; Build content that is authentic and useful to developers instead of regular marketing messages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Below I will go into a bit more depth with each of these steps&lt;/p&gt;




&lt;h2&gt;
  
  
  Find a problem that hurts
&lt;/h2&gt;

&lt;p&gt;Your project must address a pain point for developers that really are meaningful to them. Three things to watch out for are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1. &lt;strong&gt;Clear user pain point:&lt;/strong&gt; &lt;em&gt;Make sure you understand the user pain point you are trying to solve.&lt;/em&gt; In the world of ecommerce, we knew from experience how painful the developer experience was with many proprietary tools (e.g. Shopify) and legacy open source tools (e.g. Magento and Woo). All of them build with an all-in-one monolith architecture, that forces developers to pursue hacky workarounds for customizations and new integrations. Having experienced the pain points ourselves from our previous careers made it easier to verify, that there indeed was a problem to solve in this space.&lt;/li&gt;
&lt;li&gt;2. &lt;strong&gt;No good alternatives:&lt;/strong&gt; &lt;em&gt;What you are building needs to clearly differentiated from what is already out there.&lt;/em&gt; In our view, the ecommerce landscape seemed to crave innovation. API-first solutions like Elasticpath, Commercetools, etc. seemed to focus on enterprise sales and less so on developer experience while their proprietary nature made it difficult for them to offer the same customization options as an OS tool. On the open source side, most existing solutions were offering PHP-based backends staying out-of-touch with modern developers, and no one had nailed it with a JS-based alternative yet.&lt;/li&gt;
&lt;li&gt;3. &lt;strong&gt;Why does it need to be open source:&lt;/strong&gt; &lt;em&gt;Ask yourself whether an OS solution is needed in the space, or if proprietary solutions actually solve it.&lt;/em&gt; It can be tempting to assume that open source is always the path forward, but it might not always hold true. With ecommerce platforms, the complication is that user needs vary a lot for different business types (e.g. just from serving B2C to B2B customers) and this means a proprietary one-fits-all-solution is seldom the right path when a use case is a bit outside the box - which explains why more than half of the world largest ecommerce sites are still built with a custom or open-source commerce backends.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Create a delightful product experience
&lt;/h2&gt;

&lt;p&gt;Identifying the problem is not merely enough. Building a product to solve it and investing in the community and DevEx around it is key as well.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;4. &lt;strong&gt;A focused product approach:&lt;/strong&gt; &lt;em&gt;It can be easy to get distracted, so keep the focus on your core product priorities.&lt;/em&gt; Building open source, the community will have lots of opinions on additional features, plugins or functionalities to build. Some of this feedback will be less relevant to your core audience. Therefore, be selective of the inputs you get and build the few features that will make a meaningful impact for your core audience instead of a lot of half-decent features for everyone.&lt;/li&gt;
&lt;li&gt;5. &lt;strong&gt;Support your community:&lt;/strong&gt; &lt;em&gt;Building traction requires you to ensure that your community feels your commitment to their success.&lt;/em&gt; From our early days, we have been razor focused on our community. We do this through a wide array of activities from community events to our transparent product discussions to our continuous focus on building community support materials. Likewise, we are dedicating a lot of time to answering community inquiries on GitHub and Discord helping devs get started.&lt;/li&gt;
&lt;li&gt;6. &lt;strong&gt;Invest in your DevEx:&lt;/strong&gt; &lt;em&gt;Make it easy to get started with Docs, quick onboarding flows and supporting tools.&lt;/em&gt; We prioritize the developer experience by putting a lot of focus into areas such as our Documentation - which we treat as a product of its own with a full-time team member dedicated to it - while ensuring that our onboarding flow is easy to get through with supporting project starter templates.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Get the word out there
&lt;/h2&gt;

&lt;p&gt;When you have a great developer experience set up, your key task becomes to create awareness around the project.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;7. &lt;strong&gt;Make it easy to understand:&lt;/strong&gt; &lt;em&gt;Have a simple product description ready that makes it easy to comprehend what you are building.&lt;/em&gt; We focused a lot of our messaging around being “the open source Shopify alternative” which instantly resonated with developers (see e.g. our &lt;a href="https://news.ycombinator.com/item?id=28481913" rel="noopener noreferrer"&gt;HN launch&lt;/a&gt;). In reality, Medusa is much more than open source Shopify as our modular architecture better fits more bespoke ecommerce cases than typical “mom and pops” Shopify stores. Yet, the simplicity of the messaging makes it very easy for developers to categorize the solution when quickly hearing about it for the first time.&lt;/li&gt;
&lt;li&gt;8. &lt;strong&gt;Focus on dev channels:&lt;/strong&gt; &lt;em&gt;Ensure your product gets attention in forums and blogs where developers are present.&lt;/em&gt; We have always remained focused on developer channels and spent energy creating content and initiatives to target these; e.g. leveraging Reddit to make a lot of “mini launches” or setting up a Writers Program to produce content for channels like &lt;a href="http://Dev.to" rel="noopener noreferrer"&gt;Dev.to&lt;/a&gt;, Medium and Hashnode. Other tools like Supabase focuses on Twitter, while Digital Ocean is a prime example of own channel content done right.&lt;/li&gt;
&lt;li&gt;9. &lt;strong&gt;Make big bets and follow through:&lt;/strong&gt; &lt;em&gt;Prioritize events you know have the potential to send your product viral and make sure you execute these well.&lt;/em&gt; Once in a while, we have events we believe have the potential to make Medusa go viral, e.g. &lt;a href="https://www.google.com/search?q=product+hunt+medusa&amp;amp;oq=product+hunt+medusa&amp;amp;aqs=chrome..69i57j0i546l2j69i64j69i60l2.2891j0j4&amp;amp;sourceid=chrome&amp;amp;ie=UTF-8" rel="noopener noreferrer"&gt;ProductHunt launch&lt;/a&gt;, &lt;a href="https://techcrunch.com/2022/07/15/medusa-shopify-open-source-e-commerce-javascript-developers/" rel="noopener noreferrer"&gt;Series Seed investment announcement&lt;/a&gt; or our &lt;a href="https://medusajs.com/blog/hackathon-winners/" rel="noopener noreferrer"&gt;recent Medusa Hackathon&lt;/a&gt;. For all of them, we prioritized planning ahead and making a structured campaign around it to ensure maximal exposure, sometimes preparing videos, announcement content, and website updates weeks or months in advance.&lt;/li&gt;
&lt;li&gt;10. &lt;strong&gt;Make it authentic:&lt;/strong&gt; &lt;em&gt;Build content that is authentic and useful to developers instead of regular marketing messages.&lt;/em&gt; In our 12 months, we did not spend a single dollar on ads for Medusa. Instead, we focused our resources on building content that was authentic to developers through articles and tutorials that were centered around explaining &lt;em&gt;what our product did&lt;/em&gt; instead of more sales-oriented messaging.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  A word of caution
&lt;/h2&gt;

&lt;p&gt;I hope the above gave some useful inputs from our journey. One last disclaimer: In all honesty, GH stars can be a bit of a vanity measure for a project's popularity when used as a standalone metric. &lt;/p&gt;

&lt;p&gt;I will be an advocate for looking into more usage-related metrics as well such as project starts, active developers, monthly contributors etc. &lt;/p&gt;

&lt;p&gt;Where GitHub stars do serve as a fine indicator is to understand &lt;em&gt;if people are interested in what you are building&lt;/em&gt; - and it is one of the few OS metrics that are comparable across projects.&lt;/p&gt;

</description>
      <category>learning</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>From PHP to JS ecommerce: Migrate from Magento and stay open source 🤩</title>
      <dc:creator>Nicklas Gellner</dc:creator>
      <pubDate>Tue, 15 Nov 2022 10:39:52 +0000</pubDate>
      <link>https://dev.to/medusajs/from-php-to-js-ecommerce-migrate-from-magento-and-stay-open-source-2ba3</link>
      <guid>https://dev.to/medusajs/from-php-to-js-ecommerce-migrate-from-magento-and-stay-open-source-2ba3</guid>
      <description>&lt;p&gt;If you are a fan of open source and ever been wanting to build ecommerce, you've probably been considering Magento.&lt;/p&gt;

&lt;p&gt;But then again you might have hesitated because it is in PHP and not JS / Typescript-based.&lt;/p&gt;

&lt;p&gt;We got your back. Here's how to quickly shift to a ecom framework that is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open source&lt;/strong&gt; (MIT licensed)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Javascript&lt;/strong&gt; and &lt;strong&gt;Typescript&lt;/strong&gt; based&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Easier to handle&lt;/strong&gt; than Magento with better DevEx&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv8mna7mje7hdz80mxcxa.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv8mna7mje7hdz80mxcxa.gif" alt="Tell me more"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this article, we’ll share with you the brand new &lt;a href="https://github.com/medusajs/medusa" rel="noopener noreferrer"&gt;Medusa&lt;/a&gt; plugin, &lt;a href="https://www.npmjs.com/package/medusa-source-magento" rel="noopener noreferrer"&gt;Magento Source Plugin&lt;/a&gt;, which allows you to import your products and categories from Magento into Medusa - an open source Node.js ecommerce platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Migrate
&lt;/h2&gt;

&lt;p&gt;Medusa and Magento both provide essential ecommerce features. However, some of Medusa’s advantages include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Composable Architecture:&lt;/strong&gt; Medusa’s composable architecture speeds up development processes and gives absolute freedom in building the full architecture of the ecommerce system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility and Customization:&lt;/strong&gt; You have full freedom in choosing what components go into your tech stack, including storefront, third-party services, and custom features.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use of Modern Technologies:&lt;/strong&gt; You can handpick different components of your tech stack (e.g. Jamstack storefronts) or update the different components of your stack independent of one another.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a thorough comparison, please see &lt;a href="https://medusajs.com/blog/medusa-vs-magento-comparing-two-open-source-ecommerce-frameworks/" rel="noopener noreferrer"&gt;this post&lt;/a&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;em&gt;If you like Medusa, please give Medusa a 🌟 on GH&lt;/em&gt;
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/medusajs" rel="noopener noreferrer"&gt;
        medusajs
      &lt;/a&gt; / &lt;a href="https://github.com/medusajs/medusa" rel="noopener noreferrer"&gt;
        medusa
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Building blocks for digital commerce
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a href="https://www.medusajs.com" rel="nofollow noopener noreferrer"&gt;
  
    
    
    &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F59018053%2F229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg" class="article-body-image-wrapper"&gt;&lt;img alt="Medusa logo" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F59018053%2F229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg"&gt;&lt;/a&gt;
    
  &lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;
  Medusa
&lt;/h1&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;
  &lt;a href="https://docs.medusajs.com" rel="nofollow noopener noreferrer"&gt;Documentation&lt;/a&gt; |
  &lt;a href="https://www.medusajs.com" rel="nofollow noopener noreferrer"&gt;Website&lt;/a&gt;
&lt;/h4&gt;
&lt;/div&gt;

&lt;p&gt;
  Building blocks for digital commerce
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/medusajs/medusa/blob/develop/LICENSE" rel="noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/6581c31c16c1b13ddc2efb92e2ad69a93ddc4a92fd871ff15d401c4c6c9155a4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667" alt="Medusa is released under the MIT license."&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/medusajs/medusa/blob/develop/CONTRIBUTING.md" rel="noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/11c502cb0edd6eac274e462c7a70981ee26fde99043dba967b732d371efa2b87/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5052732d77656c636f6d652d627269676874677265656e2e7376673f7374796c653d666c6174" alt="PRs welcome!"&gt;
  &lt;/a&gt;
 &lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://twitter.com/intent/follow?screen_name=medusajs" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/6c164f14e4a24c801d3396eff84dbc5a7d8a3a6458b1c09ebbaaa0006d244a8c/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f6d65647573616a732e7376673f6c6162656c3d466f6c6c6f77253230406d65647573616a73" alt="Follow @medusajs"&gt;
  &lt;/a&gt;&lt;a href="https://discord.gg/medusajs" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/4921ed6603bc6780b3892f60abb1cd1143568cf1595701546c32f7a2619d9daf/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636861742d6f6e253230646973636f72642d3732383944412e737667" alt="Discord Chat"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Getting Started&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Visit the &lt;a href="https://docs.medusajs.com/create-medusa-app" rel="nofollow noopener noreferrer"&gt;Quickstart Guide&lt;/a&gt; to set up a server.&lt;/p&gt;

&lt;p&gt;Visit the &lt;a href="https://docs.medusajs.com/development/backend/prepare-environment" rel="nofollow noopener noreferrer"&gt;Docs&lt;/a&gt; to learn more about our system requirements.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What is Medusa&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Medusa is a set of commerce modules and tools that allow you to build rich, reliable, and performant commerce applications without reinventing core commerce logic. The modules can be customized and used to build advanced ecommerce stores, marketplaces, or any product that needs foundational commerce primitives. All modules are open-source and freely available on npm.&lt;/p&gt;

&lt;p&gt;Learn more about &lt;a href="https://docs.medusajs.com/development/fundamentals/architecture-overview" rel="nofollow noopener noreferrer"&gt;Medusa’s architecture&lt;/a&gt; and &lt;a href="https://docs.medusajs.com/modules/overview" rel="nofollow noopener noreferrer"&gt;commerce modules&lt;/a&gt; in the Docs.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Roadmap, Upgrades &amp;amp; Plugins&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;You can view the planned, started and completed features in the &lt;a href="https://github.com/medusajs/medusa/discussions/categories/roadmap" rel="noopener noreferrer"&gt;Roadmap discussion&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Follow the &lt;a href="https://docs.medusajs.com/upgrade-guides/" rel="nofollow noopener noreferrer"&gt;Upgrade Guides&lt;/a&gt; to keep your Medusa project up-to-date.&lt;/p&gt;

&lt;p&gt;Check out all &lt;a href="https://medusajs.com/plugins/" rel="nofollow noopener noreferrer"&gt;available Medusa plugins&lt;/a&gt;.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Community &amp;amp; Contributions&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;The community and core team are available in &lt;a href="https://github.com/medusajs/medusa/discussions" rel="noopener noreferrer"&gt;GitHub Discussions&lt;/a&gt;, where you…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/medusajs/medusa" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;





&lt;h2&gt;
  
  
  Magento Source Plugin
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://www.npmjs.com/package/medusa-source-magento" rel="noopener noreferrer"&gt;Magento source plugin&lt;/a&gt; is a plugin that you can install on a Medusa server to import your products and categories from a deployed Magento store. This plugin facilitates your move from a Magento store to a Medusa store.&lt;/p&gt;

&lt;h3&gt;
  
  
  Limitations
&lt;/h3&gt;

&lt;p&gt;Magento has 6 product types. As some of those types don't exist in Medusa, only the Configurable and Simple products can be imported.&lt;/p&gt;

&lt;p&gt;Simple and Configurable products that are part of Bundled or Grouped products will still be imported into Medusa.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;You must have a Medusa server installed. You can follow the &lt;a href="https://docs.medusajs.com/quickstart/quick-start" rel="noopener noreferrer"&gt;Quickstart guide&lt;/a&gt; to install a Medusa server in three steps.&lt;/p&gt;

&lt;p&gt;Furthermore, the Medusa server should have &lt;a href="https://docs.medusajs.com/tutorial/set-up-your-development-environment#postgresql" rel="noopener noreferrer"&gt;PostgreSQL&lt;/a&gt; and &lt;a href="https://docs.medusajs.com/tutorial/set-up-your-development-environment#redis" rel="noopener noreferrer"&gt;Redis&lt;/a&gt; installed and configured on your Medusa server.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create Magento Integration
&lt;/h3&gt;

&lt;p&gt;For Medusa to connect to Magento’s APIs, you need to create an integration in Magento. You’ll then receive the authentication keys that you need for the Medusa plugin.&lt;/p&gt;

&lt;p&gt;Log in to your Magento admin, then go to System -&amp;gt; Integrations and click on Add New Integrations.&lt;/p&gt;

&lt;p&gt;You need to give the integration access to the following resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Catalog (with its child resources).&lt;/li&gt;
&lt;li&gt;Stores -&amp;gt; Settings (with its child resources).&lt;/li&gt;
&lt;li&gt;Stores -&amp;gt; Attributes (with its child resources).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you’re done, click Save.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fasb6xh5b76cnsi730gpy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fasb6xh5b76cnsi730gpy.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, on the Integrations listing page, click on the Activate link. Click on the Allow button to confirm allowing access to the requested resources.&lt;/p&gt;

&lt;p&gt;You’ll then see four keys: Consumer Key, Consumer Secret, Access Token, and Access Token Secret. You’ll need these keys for the Medusa plugin.&lt;/p&gt;

&lt;h3&gt;
  
  
  Install Magento Source Plugin
&lt;/h3&gt;

&lt;p&gt;On your Medusa server, run the following command to install the Magento Source plugin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;medusa-source-magento
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, in &lt;code&gt;.env&lt;/code&gt;, add the following environment variables:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;MAGENTO_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;YOUR_MAGENTO_URL&amp;gt;
&lt;span class="nv"&gt;CONSUMER_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;INTEGRATION_CONSUMER_KEY&amp;gt;
&lt;span class="nv"&gt;CONSUMER_SECRET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;INTEGRATION_CONSUMER_SECRET&amp;gt;
&lt;span class="nv"&gt;ACCESS_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;INTEGRATION_ACCESS_TOKEN&amp;gt;
&lt;span class="nv"&gt;ACCESS_TOKEN_SECRET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;INTEGRATION_ACCESS_TOKEN_SECRET&amp;gt;

&lt;span class="c"&gt;# optional&lt;/span&gt;
&lt;span class="nv"&gt;MAGENTO_IMAGE_PREFIX&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;YOUR_MAGENTO_IMAGE_PREFIX&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;YOUR_MAGENTO_URL&amp;gt;&lt;/code&gt; is the URL of your Magento service. It shouldn’t end with a backslash.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;INTEGRATION_CONSUMER_KEY&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;INTEGRATION_CONSUMER_SECRET&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;INTEGRATION_ACCESS_TOKEN&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;INTEGRATION_ACCESS_TOKEN_SECRET&amp;gt;&lt;/code&gt; are the keys you received after creating the integration&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;YOUR_MAGENTO_IMAGE_PREFIX&amp;gt;&lt;/code&gt; is optional and should only be used if you don’t use Magento’s default media storage. If you use, for example, S3, then you should include the URL prefix of media files here to retrieve the images properly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next, add the following in &lt;code&gt;medusa-config.js&lt;/code&gt; to the &lt;code&gt;plugins&lt;/code&gt; array:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;plugins&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="c1"&gt;//...&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`medusa-source-magento`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="c1"&gt;//if your plugin has configurations&lt;/span&gt;
    &lt;span class="na"&gt;options&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;magento_url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;MAGENTO_URL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;consumer_key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;CONSUMER_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;consumer_secret&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;CONSUMER_SECRET&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;access_token&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ACCESS_TOKEN&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;access_token_secret&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ACCESS_TOKEN_SECRET&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="c1"&gt;//optional&lt;/span&gt;
      &lt;span class="na"&gt;image_prefix&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;MAGENTO_IMAGE_PREFIX&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you didn’t add the &lt;code&gt;MAGENTO_IMAGE_PREFIX&lt;/code&gt; environment variable then don’t pass the &lt;code&gt;image_prefix&lt;/code&gt; property.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Use the Plugin
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Server Start-Up
&lt;/h3&gt;

&lt;p&gt;After installing the plugin, every time you start the Medusa server the plugin will import the products and categories from Magento in the background.&lt;/p&gt;

&lt;p&gt;You can start the Medusa server with the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can check that the products are added either using the &lt;a href="https://docs.medusajs.com/api/store/#tag/Product/operation/GetProducts" rel="noopener noreferrer"&gt;List Products endpoint&lt;/a&gt; or using the Medusa Admin.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyf8uep4av3vuwrwivpqo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyf8uep4av3vuwrwivpqo.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Triggering Import
&lt;/h3&gt;

&lt;p&gt;Alternatively, you can trigger importing products while the Medusa server is running using Batch Jobs. Batch Jobs in Medusa allows you to run an extensive task asynchronously.&lt;/p&gt;

&lt;p&gt;To trigger an import, send a request to the &lt;a href="https://docs.medusajs.com/api/admin/#tag/Batch-Job/operation/PostBatchJobs" rel="noopener noreferrer"&gt;Create Batch Job endpoint&lt;/a&gt; with the following payload:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="s2"&gt;"type"&lt;/span&gt;: &lt;span class="s2"&gt;"import-magento"&lt;/span&gt;,
    &lt;span class="s2"&gt;"context"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,
    &lt;span class="s2"&gt;"dry_run"&lt;/span&gt;: &lt;span class="nb"&gt;false&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What’s Next?
&lt;/h2&gt;

&lt;p&gt;You can do so much more with Medusa after importing your data! You can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install the &lt;a href="https://docs.medusajs.com/starters/nextjs-medusa-starter" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt; or &lt;a href="https://docs.medusajs.com/starters/gatsby-medusa-starter" rel="noopener noreferrer"&gt;Gatsby&lt;/a&gt; storefronts.&lt;/li&gt;
&lt;li&gt;Install the &lt;a href="https://docs.medusajs.com/admin/quickstart" rel="noopener noreferrer"&gt;Medusa Admin&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Check other plugins such as &lt;a href="https://docs.medusajs.com/add-plugins/stripe" rel="noopener noreferrer"&gt;Stripe&lt;/a&gt;, &lt;a href="https://docs.medusajs.com/add-plugins/sendgrid" rel="noopener noreferrer"&gt;SendGrid&lt;/a&gt;, and &lt;a href="https://docs.medusajs.com/add-plugins/algolia" rel="noopener noreferrer"&gt;Algolia&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Should you have any issues or questions related to Medusa, then feel free to reach out to the Medusa team via &lt;a href="https://discord.gg/F87eGuwkTp" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>opensource</category>
      <category>javascript</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Medusa Hackathon Winner Announcement</title>
      <dc:creator>Nicklas Gellner</dc:creator>
      <pubDate>Thu, 27 Oct 2022 18:31:00 +0000</pubDate>
      <link>https://dev.to/medusajs/medusa-hackathon-winner-announcement-41h</link>
      <guid>https://dev.to/medusajs/medusa-hackathon-winner-announcement-41h</guid>
      <description>&lt;p&gt;Our first Medusa Hackathon has come to an end and the outcome has been incredible. The amount of solutions far exceeded our expectations with +200 participants across 120 submissions. Among these, we saw some extraordinary cool solutions.&lt;/p&gt;

&lt;p&gt;Thanks a lot to all the participants that took part. Also a big shout out to the many community members that took it upon themselves to help new members get a good first experience with Medusa.&lt;/p&gt;

&lt;p&gt;With many great submissions, it proved difficult to select only 4 winners - 1 overall winner &amp;amp; 3 category winners. In the end, after lengthy deliberation, we have found our winners.&lt;/p&gt;

&lt;p&gt;You can find all submissions &lt;a href="https://github.com/medusajs/medusa/discussions/2280" rel="noopener noreferrer"&gt;here&lt;/a&gt; and an overview of our competition guidelines &lt;a href="https://medusajs.com/blog/medusa-hackathon" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Winner: Best Overall
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/a11rew/medusa-payment-paystack" rel="noopener noreferrer"&gt;&lt;strong&gt;Payment integration to Paystack&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By &lt;a href="https://twitter.com/a11rew" rel="noopener noreferrer"&gt;&lt;strong&gt;Andrew Glago&lt;/strong&gt;&lt;/a&gt; &amp;amp; &lt;a href="https://twitter.com/akinyemi_t" rel="noopener noreferrer"&gt;&lt;strong&gt;Femi Akinyemi&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbni5406lhnsx2eo2l588.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbni5406lhnsx2eo2l588.png" alt="Payment integration to Paystack"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Andrew and Femi built a payment provider plugin integrating Paystack with Medusa. The plugin enables African businesses to accept payments in local and foreign currencies and is built to support all of Paystack’s checkout flows (Popup, Redirect, API). Andrew and Femi not only built a sophisticated payment plugin but also included a frontend implementation using our NextJS starter template and added a 5-minute demo taking you through the complete setup and a demo of the full flow.&lt;/p&gt;

&lt;p&gt;The main criteria for the Best Overall Project were usefulness and project completeness. Andrew and Femi excelled on these parameters, placing them at the top of the podium.&lt;/p&gt;

&lt;h2&gt;
  
  
  Winner: Most technically impressive
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/AnishDe12020/medusa-plugin-webhooks" rel="noopener noreferrer"&gt;&lt;strong&gt;Webhooks as a notification service&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By &lt;a href="https://twitter.com/AnishDe12020" rel="noopener noreferrer"&gt;&lt;strong&gt;Anish De&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvsdbymxblyzshsj73iui.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvsdbymxblyzshsj73iui.png" alt="Webhooks as a notification service"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="/images/Untitled%20(7).png" class="article-body-image-wrapper"&gt;&lt;img src="/images/Untitled%20(7).png" alt="Webhooks as a notification service"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anish built a plugin allowing developers to send core events to webhooks easily. With the plugin, you can effectively centralize your usage of webhooks in one single place instead of having to install separate plugins for each of those use cases e.g., Discord, Slack, etc.&lt;/p&gt;

&lt;p&gt;We are mind-blown by the fact that Anish, at only 15 years old, managed to know his way around our codebase, build a sophisticated plugin, and generally is engaged in the open-source developer community.&lt;/p&gt;

&lt;h2&gt;
  
  
  Winner: Best shop
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/earthcomfy/shop-habesha" rel="noopener noreferrer"&gt;&lt;strong&gt;Habesha clothing store&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By: &lt;a href="https://twitter.com/earthcomfy" rel="noopener noreferrer"&gt;&lt;strong&gt;Hana&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8ouddnp4e6rclkoyqm1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8ouddnp4e6rclkoyqm1.png" alt="Habesha clothing store"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hana built a beautiful clothing store for the brand Habesha on top of our NextJS starter template. What sets this store apart from the rest is the addition of elements that improve the overall commerce experience, including Algolia for search and a quick view functionality for products.&lt;/p&gt;

&lt;h2&gt;
  
  
  Winner: Best design
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/realanupreet/burgerHat" rel="noopener noreferrer"&gt;&lt;strong&gt;Burger Hat store&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By &lt;a href="https://twitter.com/real_anupreet" rel="noopener noreferrer"&gt;&lt;strong&gt;Anupreet Singh&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5h30534oj86cx3ko9z0o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5h30534oj86cx3ko9z0o.png" alt="Burger Hat store"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anupreet used our NextJS starter to build a super good-looking storefront for a burger restaurant. The starter was heavily customized to fit the concept and theme of the burger restaurant, and the thoroughness and consistency of the modifications are indeed impressive!&lt;/p&gt;




&lt;h2&gt;
  
  
  Runner up list
&lt;/h2&gt;

&lt;p&gt;Here's a list of Projects that were runner-ups as competition and category winners:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://github.com/g33kdev/medusa-plugin-ip-lookup-maxmind" rel="noopener noreferrer"&gt;&lt;strong&gt;Maxmind plugin&lt;/strong&gt;&lt;/a&gt; by &lt;a href="https://github.com/stnguyen90" rel="noopener noreferrer"&gt;@stnguyen90&lt;/a&gt; (IP lookup)&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/manojvirat457/Medusa-3D-Swag-Store" rel="noopener noreferrer"&gt;&lt;strong&gt;3D Product Previewer&lt;/strong&gt;&lt;/a&gt; by &lt;a href="https://github.com/MrKrishnaAgarwal" rel="noopener noreferrer"&gt;@MrKrishnaAgarwal&lt;/a&gt;, &lt;a href="https://github.com/TamilPrakash-S" rel="noopener noreferrer"&gt;@TamilPrakash-S&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/manojvirat457" rel="noopener noreferrer"&gt;@manojvirat457&lt;/a&gt; (Store)&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/Agilo/medusa-payment-reepay" rel="noopener noreferrer"&gt;&lt;strong&gt;Reepay integration&lt;/strong&gt;&lt;/a&gt; by &lt;a href="https://github.com/josipmatichr" rel="noopener noreferrer"&gt;@josipmatichr&lt;/a&gt;, &lt;a href="https://github.com/anteprimorac" rel="noopener noreferrer"&gt;@anteprimorac&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/marijapolovic" rel="noopener noreferrer"&gt;@marijapolovic&lt;/a&gt; (Payment)&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/Ambareen09/medusa-store" rel="noopener noreferrer"&gt;&lt;strong&gt;Cashfree plugin&lt;/strong&gt;&lt;/a&gt; by &lt;a href="https://twitter.com/AzanulZ" rel="noopener noreferrer"&gt;@Azanul&lt;/a&gt; &amp;amp; &lt;a href="https://twitter.com/AzamAmbareen" rel="noopener noreferrer"&gt;@AzamAmbareen&lt;/a&gt; (Payment)&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/saurabh73/medusa-payment-paytm" rel="noopener noreferrer"&gt;&lt;strong&gt;Paytm plugin&lt;/strong&gt;&lt;/a&gt; by &lt;a href="https://github.com/gyaniroman23" rel="noopener noreferrer"&gt;GyaniRoman23&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/saurabh73" rel="noopener noreferrer"&gt;saurabh73&lt;/a&gt; (Payment)&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/Cristian-David-Github/medusa-payment-wompi-col" rel="noopener noreferrer"&gt;&lt;strong&gt;Wompi plugin&lt;/strong&gt;&lt;/a&gt; by &lt;a href="https://github.com/Cristian-David-Github" rel="noopener noreferrer"&gt;@Cristian-David-Github&lt;/a&gt; (Payment)&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/ibnumalik/medusa-payment-billplz" rel="noopener noreferrer"&gt;&lt;strong&gt;Billplz plugin&lt;/strong&gt;&lt;/a&gt; by &lt;a href="https://github.com/ibnumalik" rel="noopener noreferrer"&gt;@ibnumalik&lt;/a&gt; (Payment)&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/dalenguyen/medusa-monorepo" rel="noopener noreferrer"&gt;&lt;strong&gt;PNPM Monorepo&lt;/strong&gt;&lt;/a&gt; by &lt;a href="https://twitter.com/dale_nguyen" rel="noopener noreferrer"&gt;@dale_nguyen&lt;/a&gt; (PNPM)&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/harshmangalam/medusa-sdk-golang" rel="noopener noreferrer"&gt;&lt;strong&gt;Go.lang SDK&lt;/strong&gt;&lt;/a&gt; by &lt;a href="https://twitter.com/HarshMangalam6" rel="noopener noreferrer"&gt;@HarshMangalam6&lt;/a&gt; (SDK)&lt;/li&gt;
&lt;li&gt;   &lt;a href="https://github.com/parth-asodariya/medusa_flutter" rel="noopener noreferrer"&gt;&lt;strong&gt;Medusa Flutter Package&lt;/strong&gt;&lt;/a&gt; by &lt;a href="https://github.com/karanjoshi" rel="noopener noreferrer"&gt;karanjoshi, &lt;/a&gt;&lt;a href="https://github.com/keval-makadiya" rel="noopener noreferrer"&gt;keval-makadiya&lt;/a&gt;, &lt;a href="https://github.com/Pankti910" rel="noopener noreferrer"&gt;Pankti910&lt;/a&gt;, &lt;a href="https://github.com/parth-asodariya" rel="noopener noreferrer"&gt;parth-asodariya&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/Snehal-Singh174" rel="noopener noreferrer"&gt;Snehal-Singh174&lt;/a&gt;(Flutter Package)&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/superstashed/medusa-stonkers" rel="noopener noreferrer"&gt;&lt;strong&gt;Discord integration&lt;/strong&gt;&lt;/a&gt; by &lt;a href="https://github.com/stefa-n" rel="noopener noreferrer"&gt;@stefa-n&lt;/a&gt;, &lt;a href="https://github.com/Feely3007" rel="noopener noreferrer"&gt;@Feely3007&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/penktastal" rel="noopener noreferrer"&gt;@penktastal&lt;/a&gt; (Social)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prizes
&lt;/h2&gt;

&lt;p&gt;For all participants and winners, we will get back to you via Discord to coordinate the shipping of prizes, participation certificates, and GitHub sponsorships. We will be in touch during the next week.&lt;/p&gt;

&lt;p&gt;If you want to take part in the community, feel free to join our &lt;a href="https://discord.com/invite/medusajs" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;. Here you can also stay tuned for more Medusa news and events.&lt;/p&gt;

&lt;p&gt;Once again, thanks for making this a wonderful first Medusa Hackathon!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>hacktoberfest</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
