<?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: Gun</title>
    <description>The latest articles on DEV Community by Gun (@gunkev).</description>
    <link>https://dev.to/gunkev</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%2F663140%2Fa75157c3-9645-440a-a0aa-e5d813c606b1.jpeg</url>
      <title>DEV Community: Gun</title>
      <link>https://dev.to/gunkev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gunkev"/>
    <language>en</language>
    <item>
      <title>How to Integrate YouTube Video Player in a Flutter Application</title>
      <dc:creator>Gun</dc:creator>
      <pubDate>Tue, 12 Mar 2024 14:11:20 +0000</pubDate>
      <link>https://dev.to/gunkev/how-to-integrate-youtube-video-player-in-a-flutter-application-4hil</link>
      <guid>https://dev.to/gunkev/how-to-integrate-youtube-video-player-in-a-flutter-application-4hil</guid>
      <description>&lt;p&gt;YouTube is one of the world’s popular social media platforms for hosting and sharing videos. You can find a great list of music, movies, tutorials, documentaries and interviews in any domain there. Many enterprises, corporations and freelancers create and share videos on their various channels to enhance communication and provide a better user experience on the various services they offer. &lt;a href="http://Youtube.com" rel="noreferrer noopener"&gt;YouTube&lt;/a&gt; has become an indispensable social asset in the daily lives of many entrepreneurs and organizations.&lt;/p&gt;

&lt;h2 id="Objectives"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Objectives" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;h2 id="Objectives"&gt;Objectives&lt;/h2&gt;

&lt;p&gt;This guide will cover the necessary steps you need to follow to integrate YouTube into your Flutter application. In a nutshell, you will build a simple application like in the demo below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://drive.google.com/drive/folders/1WNLfxjnQEFAv0rBrqvVVHFQNx9pP4ptF?usp=sharing" rel="noreferrer noopener"&gt;Youtube Flutter Player Demo in Drive&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="Common-Use-Cases-Where-You-Should-Add-YouTube-Integration-in-Your-Mobile-App"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Common-Use-Cases-Where-You-Should-Add-YouTube-Integration-in-Your-Mobile-App" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;h2 id="Common-Use-Cases-Where-You-Should-Add-YouTube-Integration-in-Your-Mobile-App"&gt;Common Use Cases Where You Should Add YouTube Integration in Your Mobile App&lt;/h2&gt;

&lt;p&gt;Before diving into the main subject, it’s important to know when and where to integrate YouTube into your application. Some of the common use cases are:&lt;/p&gt;

&lt;h3 id="Integrating-Video-Tutorials"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Integrating-Video-Tutorials" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="Integrating-Video-Tutorials"&gt;Integrating Video Tutorials&lt;/h3&gt;

&lt;p&gt;One of the easiest ways to enhance user experience and improve engagement is by adding video tutorials from your channel or various subject matters that can interest your audience.&lt;/p&gt;

&lt;p&gt;If you own a course or food application or a simple informational application, integrating YouTube can help users easily and efficiently get access to video content from your various channels that align with their interests.&lt;/p&gt;

&lt;h3 id="Integrating-in-Movies-Application"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Integrating-in-Movies-Application" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="Integrating-in-Movies-Application"&gt;Integrating in Movies Application&lt;/h3&gt;

&lt;p&gt;Adding movie trials or reviews via YouTube in your movie application allows users to get a preview of a specific movie and helps them decide whether to watch it or not. You can equally add behind-the-scene footage to spice up the app and encourage users to spend longer time on your application hence improving user engagement.&lt;/p&gt;

&lt;h3 id="Informational-oriented-application"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Informational-oriented-application" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="Informational-oriented-application"&gt;Informational oriented application&lt;/h3&gt;

&lt;p&gt;Informational-centered applications that provide articles, blog posts, and news about a variety of subjects can be enhanced by adding video-related content to improve user comprehension further.&lt;/p&gt;

&lt;h3 id="Monetization"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Monetization" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="Monetization"&gt;Monetization&lt;/h3&gt;

&lt;p&gt;Implementing a YouTube player with ad support in your application provides a revenue stream for your application. For example, if you have a food recipe application, you can generate revenue by displaying YouTube videos with ads before, during or after the video.&lt;/p&gt;

&lt;h3 id="Live-Stream-Events"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Live-Stream-Events" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="Live-Stream-Events"&gt;Live Stream Events&lt;/h3&gt;

&lt;p&gt;You can embed YouTube live stream video using the YouTube LIVE API into your application easily for real-time interaction with your audience, product launch or Q&amp;amp;A sessions which can improve the kind of services you offer and user engagement.&lt;/p&gt;

&lt;h3 id="Product-Demonstrations"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Product-Demonstrations" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="Product-Demonstrations"&gt;Product Demonstrations&lt;/h3&gt;

&lt;p&gt;For educational applications or e-commerce applications, you can integrate YouTube videos to showcase the product features, the benefits of using it and real-life usage to the users in-app.&lt;/p&gt;

&lt;h3 id="Travel"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Travel" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="Travel"&gt;Travel&lt;/h3&gt;

&lt;p&gt;A mobile app that includes travel guides or travel-related content with embedded YouTube videos showcasing popular destinations, attractions, or travel tips.&lt;/p&gt;

&lt;p&gt;For example, users can easily visualize popular spots instantly rather than navigating through a list of selected images.&lt;/p&gt;

&lt;h3 id="Fitness-and-Music"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Fitness-and-Music" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="Fitness-and-Music"&gt;Fitness and Music&lt;/h3&gt;

&lt;p&gt;In fitness applications, you can incorporate YouTube videos that demonstrate and guide users on how to perform certain movements.&lt;/p&gt;

&lt;p&gt;Keep in mind that while integrating these YouTube features into your mobile application, it’s important to always ensure compliance with YouTube’s terms of service.&lt;/p&gt;

&lt;h2 id="Integrating-YouTube-in-a-Flutter-Application"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Integrating-YouTube-in-a-Flutter-Application" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;h2 id="Integrating-YouTube-in-a-Flutter-Application"&gt;Integrating YouTube in a Flutter Application&lt;/h2&gt;

&lt;p&gt;In this section, we will work you through how to integrate a Youtube player into your &lt;a href="https://www.learn-dev-tools.blog/what-is-the-flutter-framework-a-beginners-introduction-to-flutter/" rel="noopener noreferrer"&gt;Flutter&lt;/a&gt; application.&lt;/p&gt;

&lt;h3 id="Prerequisites"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Prerequisites" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="Prerequisites"&gt;Prerequisites&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pub.dev/packages/youtube_player_flutter" rel="noreferrer noopener"&gt;YouTube Player Flutter&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;Basic Dart Knowledge&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id="Creating-a-Flutter-Application"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Creating-a-Flutter-Application" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="Creating-a-Flutter-Application"&gt;Creating a Flutter Application&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.learn-dev-tools.blog/how-to-install-flutter-on-windows-in-a-few-steps/" rel="noopener noreferrer"&gt;Install Flutter&lt;/a&gt;, open your Android Studio editor and create a new Flutter project or open your terminal and run the following command to get started with a Flutter project.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;flutter create example_project_youtube&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;example_project_youtube&lt;/code&gt; is the name of the project, and you can replace it with any name you want. Once the project is complete, choose an emulator or connect your phone and run the following command to launch it.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;flutter run&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="Adding-YouTube-Package"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Adding-YouTube-Package" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="Adding-YouTube-Package"&gt;Adding YouTube Package&lt;/h3&gt;

&lt;p&gt;To add the &lt;code&gt;youTube_player_flutter&lt;/code&gt; package, open another terminal and run the following command:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;flutter pub add youtube_player_flutter&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;youtube_player_flutter&lt;/code&gt; plugin for playing or streaming inline YouTube videos using the official iFrame player API. This plugin supports both Android and iOS.&lt;/p&gt;

&lt;p&gt;This will add the &lt;code&gt;youtube_player_flutter&lt;/code&gt; package in the dependencies section of your &lt;code&gt;pubspec.yaml&lt;/code&gt; located at the root of your project.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;dependencies:
  flutter:
    sdk: flutter

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  youtube_player_flutter: ^8.1.2&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now create two dart files in which one will contain the video JSON data model and the last will be the YouTube player page.&lt;/p&gt;

&lt;p&gt;We also have the &lt;code&gt;main.dart&lt;/code&gt; file which looks like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:flutter_app_youtube/screens/YoutubeScreen.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.red),
        useMaterial3: true,
      ),
      home: const YouTubeScreen(),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Create a &lt;code&gt;lib/model/VideoModel.dart&lt;/code&gt; and add the following code:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;import 'dart:convert';

class VideoModel {
  int? id;
  String? name;
  String? url;

  VideoModel(this.id, this.name, this.url);

  VideoModel.fromJson(Map&amp;lt;String, dynamic&amp;gt; json) {
    id = json["id"];
    name = json['name'].toString();
    url = json['url'];
  }
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Create YouTubeVideoScreen.dart&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:youtube_player_flutter/youtube_player_flutter.dart';

class YouTubeScreen extends StatefulWidget {

  const YouTubeScreen({Key? key}) : super(key: key);

  @override
  _YouTubeScreenState createState() =&amp;gt; _YouTubeScreenState();
}

class _YouTubeScreenState extends State&amp;lt;YouTubeScreen&amp;gt; {
  String? videoId;

  @override
  void initState() {
    super.initState();
    videoId = 't31fj-0t3Dw';
  }

  @override
  Widget build(BuildContext context) {
    return YoutubePlayer(
      controller: YoutubePlayerController(
        initialVideoId: videoId!,
        flags: const YoutubePlayerFlags(
          autoPlay: true, 
          mute: false
        )
      )
    );
  }
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A Youtube video url is generally in the form:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://www.youtube.com/watch?v='Your video id here'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;v&lt;/code&gt; in the url contains the &lt;code&gt;id&lt;/code&gt; of your video. So put this id in the &lt;code&gt;videoId&lt;/code&gt; variable and test your application&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%2Fhackmd.io%2F_uploads%2FHkUCW6w56.jpg" 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%2Fhackmd.io%2F_uploads%2FHkUCW6w56.jpg" alt="integrate_youtube_vide" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="Incorporating-Features-and-Customizing-YouTube-Player"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Incorporating-Features-and-Customizing-YouTube-Player" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="Incorporating-Features-and-Customizing-YouTube-Player"&gt;Incorporating Features and Customizing YouTube Player&lt;/h3&gt;

&lt;h3 id="Show-Video-Progression-Indicator"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Show-Video-Progression-Indicator" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="Show-Video-Progression-Indicator"&gt;Show Video Progression Indicator&lt;/h3&gt;

&lt;p&gt;By default, the &lt;code&gt;showVideoProgressIndicator&lt;/code&gt; is set to true, you can set it to false if you don’t want to see the video progression indicator.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;showVideoProgressIndicator: false&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="Progress-Indicator-Color"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Progress-Indicator-Color" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="Progress-Indicator-Color"&gt;Progress Indicator Color&lt;/h3&gt;

&lt;p&gt;Use the &lt;code&gt;progressIndicatorColor&lt;/code&gt; attribute to change the color of the video progress indicator. For example, below we have changed the color to green:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;progressIndicatorColor: Colors.green&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="Setting-FullScreen-Mode"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Setting-FullScreen-Mode" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="Setting-FullScreen-Mode"&gt;Setting FullScreen Mode&lt;/h3&gt;

&lt;p&gt;To support Full screen you need to wrap the player in the &lt;code&gt;YoutubePlayerBuilder&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;YoutubePlayerBuilder(
  player: YoutubePlayer(
    controller: _controller,
  ),
  builder: (context, player){
    return Column(
      children: [
        player,
      ]
    );
  }
),&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="Adding-Players-Control"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Adding-Players-Control" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="Adding-Players-Control"&gt;Adding Players Control&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;YoutubePlayerFlags&lt;/code&gt; allows you to define player flags. In the example below, we set the &lt;code&gt;autoplay&lt;/code&gt; to false, disabled the audio by setting &lt;code&gt;mute&lt;/code&gt; to true, enabled caption, and hide controls, looped the video and disabled video HD mode.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;YoutubePlayerFlags(
  autoPlay: false,
  mute: false,
  enableCaption: true,
  loop: true,
  forceHD: false,
  hideControls: true
)&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you want to know more you can check the &lt;a href="https://pub.dev/documentation/youtube_player_flutter/latest/youtube_player_flutter/YoutubePlayerFlags-class.html" rel="noreferrer noopener"&gt;YoutublePlayerFlags Class&lt;/a&gt; and equally learn how to &lt;a href="https://pub.dev/packages/youtube_player_flutter#want-to-customize-the-player" rel="noreferrer noopener"&gt;customize other features&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id="What’s-Next"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#What%E2%80%99s-Next" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;h2 id="What’s-Next"&gt;What’s Next&lt;/h2&gt;

&lt;h3 id="Conclusion"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Conclusion" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="Conclusion"&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;In this guide, we have learned how to integrate a YouTube video player into a Flutter application. By following the step-by-step guide and code examples provided, you can enhance your app's functionality and user experience by seamlessly incorporating YouTube videos. Remember to handle error cases gracefully and consider implementing additional features like Playback Speed and playlist integration to further enrich your app.&lt;/p&gt;

&lt;p&gt;Flutter YouTube Player increases the productivity of your applicant by providing visual and dynamic content that makes your application both informative and engaging. You can add a YouTube video player in any application as you can see through the use cases provided earlier.&lt;/p&gt;

&lt;p&gt;With the power of Flutter and YouTube integration, the possibilities are endless.&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;br&gt;&lt;a href="https://github.com/Gunkev/youtube_player_flutter" rel="noreferrer noopener"&gt;Full GitHub Code of Tutorial&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id="Resources"&gt;&lt;a href="https://hackmd.io/OVg4JekzQImhG3ym6BP07A#Resources" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="Resources"&gt;Resources&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://pub.dev/packages/youtube_player_flutter" rel="noopener noreferrer"&gt;https://pub.dev/packages/youtube_player_flutter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/pulse/why-considering-video-integration-mobile-apps-profitable-abbas/" rel="noopener noreferrer"&gt;https://www.linkedin.com/pulse/why-considering-video-integration-mobile-apps-profitable-abbas/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>mobile</category>
      <category>flutter</category>
    </item>
    <item>
      <title>Opensea vs Blur: Which Platform Suits Your Needs?</title>
      <dc:creator>Gun</dc:creator>
      <pubDate>Tue, 12 Mar 2024 11:23:06 +0000</pubDate>
      <link>https://dev.to/gunkev/opensea-vs-blur-which-platform-suits-your-needs-1igj</link>
      <guid>https://dev.to/gunkev/opensea-vs-blur-which-platform-suits-your-needs-1igj</guid>
      <description>&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AkRb34JeuGEOgQueNX921iA.jpeg" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AkRb34JeuGEOgQueNX921iA.jpeg" alt="" width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the ever-evolving world of digital assets and non-fungible tokens (NFTs), choosing the right platform for buying, selling, or exploring NFTs can be a daunting task. Two of the leading platforms in this space are OpenSea and Blur. Each has its unique features, community, and approach to the NFT market. In this post, we’ll dive deep into the differences between OpenSea and Blur, helping you decide which platform best suits your needs as an NFT enthusiast, artist, or investor.&lt;/p&gt;

&lt;h3&gt;OpenSea: The Gateway to NFTs&lt;/h3&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AsicmcqKUFNxiEpI6-H5iJQ.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AsicmcqKUFNxiEpI6-H5iJQ.png" alt="" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://opensea.io/" rel="noreferrer noopener"&gt;OpenSea&lt;/a&gt; has established itself as the go-to marketplace for &lt;a href="https://docs.alchemy.com/docs/nft-transactions" rel="noreferrer noopener"&gt;NFT transactions&lt;/a&gt;, often referred to as the &lt;a href="https://www.ebay.com/" rel="noreferrer noopener"&gt;eBay&lt;/a&gt; for digital assets. It’s designed to cater to a broad audience, from beginners in the NFT space to seasoned collectors and investors.&lt;/p&gt;

&lt;h3&gt;Key Features:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Diverse Marketplace&lt;/strong&gt;: OpenSea boasts an expansive collection of NFTs across various categories, including art, domain names, virtual worlds, trading cards, and collectibles. This diversity makes it an attractive platform for users with varied interests.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;User-Friendly Interface&lt;/strong&gt;: The platform is known for its intuitive and easy-to-navigate interface, making it accessible for users of all levels of experience. Whether you’re creating, buying, or selling NFTs, the process is straightforward.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Cross-Blockchain Support&lt;/strong&gt;: OpenSea supports multiple blockchains, including Ethereum, Polygon, and Klaytn. This cross-chain functionality allows users to explore a wider range of NFTs and engage with different blockchain communities.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Community and Resources&lt;/strong&gt;: OpenSea offers extensive resources for new users, including guides, FAQs, and a supportive community. These resources are invaluable for those new to the NFT space.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Pros:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Wide range of NFTs&lt;/li&gt;



&lt;li&gt;User-friendly for beginners&lt;/li&gt;



&lt;li&gt;Strong community support&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Cons:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Transaction fees can be high on certain blockchains&lt;/li&gt;



&lt;li&gt;Some users have reported issues with customer service&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Blur: The Professional’s NFT Marketplace&lt;/h3&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2ABOngPgujtz0nA9eOWyxj8g.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2ABOngPgujtz0nA9eOWyxj8g.png" alt="" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blur.io/" rel="noreferrer noopener"&gt;Blur&lt;/a&gt; positions itself as a platform for professional NFT traders and artists. It’s known for its advanced features and analytics, catering to users looking for a more data-driven approach to the NFT market.&lt;/p&gt;

&lt;h3&gt;Key Features:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Advanced Trading Tools&lt;/strong&gt;: Blur offers sophisticated tools and analytics for users to track the market, analyze trends, and make informed decisions. This is particularly beneficial for professional traders and investors.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Batch Buying and Selling&lt;/strong&gt;: The platform allows users to buy or sell multiple NFTs in a single transaction, streamlining the process and saving on transaction fees.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Rewards System&lt;/strong&gt;: Blur incentivizes platform activity through a rewards system, offering BLUR tokens for actions like listing NFTs and participating in auctions. This can be particularly attractive for active traders and sellers.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Focus on Speed and Efficiency&lt;/strong&gt;: The platform is optimized for speed, aiming to provide a seamless and efficient experience for high-frequency traders.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Pros:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Advanced tools and analytics&lt;/li&gt;



&lt;li&gt;Incentivized participation&lt;/li&gt;



&lt;li&gt;Efficient batch transactions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Cons:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Might be overwhelming for beginners&lt;/li&gt;



&lt;li&gt;More focused on trading than the community aspect&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Comparing OpenSea and Blur&lt;/h3&gt;

&lt;p&gt;When deciding between OpenSea and Blur, consider your objectives and preferences in the NFT space.&lt;/p&gt;

&lt;h3&gt;For Beginners and Enthusiasts:&lt;/h3&gt;

&lt;p&gt;If you’re new to NFTs or looking for a broad marketplace with diverse offerings, OpenSea is likely the better choice. Its user-friendly interface, extensive resources, and supportive community make it an ideal starting point for exploring the world of NFTs.&lt;/p&gt;

&lt;h3&gt;For Artists:&lt;/h3&gt;

&lt;p&gt;Artists looking to showcase their work might find OpenSea more accommodating due to its larger audience and the diversity of its user base. However, Blur’s advanced tools and analytics could also appeal to artists interested in market trends and the trading aspect of their work.&lt;/p&gt;

&lt;h3&gt;For Professional Traders and Investors:&lt;/h3&gt;

&lt;p&gt;For those with experience in the NFT market, particularly traders and investors seeking advanced tools and analytics, Blur stands out. Its focus on speed, efficiency, and the rewards system makes it a compelling option for users looking to maximize their engagement and returns.&lt;/p&gt;

&lt;h3&gt;Community vs. Trading Focus:&lt;/h3&gt;

&lt;p&gt;OpenSea fosters a broader community of NFT enthusiasts, making it a more suitable platform for users interested in the social and discovery aspects of NFTs. On the other hand, Blur appeals to users with a strong focus on the trading and investment side, offering tools and features that cater to this demographic.&lt;/p&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;Choosing between OpenSea and Blur ultimately depends on your specific needs, level of expertise, and interests within the NFT space. OpenSea offers a welcoming environment for newcomers and a diverse marketplace for collectors and artists, emphasizing community and accessibility. Blur, meanwhile, caters to the more professional segment of the market, providing advanced tools and analytics for serious traders and investors.&lt;/p&gt;

&lt;p&gt;Before making your decision, consider what you value most in an NFT platform — whether it’s the community, diversity of assets, trading&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Build an Electronic Commerce Store with Medusajs</title>
      <dc:creator>Gun</dc:creator>
      <pubDate>Wed, 25 Oct 2023 12:55:57 +0000</pubDate>
      <link>https://dev.to/gunkev/how-to-build-an-electronic-commerce-store-with-medusajs-4p5i</link>
      <guid>https://dev.to/gunkev/how-to-build-an-electronic-commerce-store-with-medusajs-4p5i</guid>
      <description>&lt;p&gt;The demand and supply of goods and services keep evolving daily. Businesses need to keep an eye on these evolutions to adopt the right ecommerce platform to distribute their goods and services to various end users. &lt;/p&gt;

&lt;p&gt;Headless commerce is becoming increasingly popular because of its adaptability and scalability. A great option for constructing a headless commerce store is Medusa, an open source and scalable ecommerce engine. Next.js offers a robust framework for building storefronts. &lt;/p&gt;

&lt;p&gt;With the help of Medusa and Next.js, you can develop a powerful and scalable online store that is tailored to the particular requirements of your company or business. Regardless of your experience as a developer or online retailer, this tutorial will guide you on building and customizing an electronic store. &lt;/p&gt;

&lt;p&gt;Here’s a demo of the application with Medusa and Next.js by following this tutorial:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://prod-files-secure.s3.us-west-2.amazonaws.com/e27708d9-808e-4b35-b986-9f26951398de/5060b0c4-c5a5-4c04-a058-74cf16653819/demo_medusa_electronic_store.mp4" rel="noopener noreferrer"&gt;demo medusa electronic store.mp4&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Will You Learn?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Set up a Storefront with Medusa’s &lt;strong&gt;&lt;a href="https://docs.medusajs.com/starters/nextjs-medusa-starter" rel="noopener noreferrer"&gt;Next.js default starter template&lt;/a&gt;.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Add product using the admin dashboard.&lt;/li&gt;
&lt;li&gt;Display products in your storefront.&lt;/li&gt;
&lt;li&gt;Customize your storefront.&lt;/li&gt;
&lt;li&gt;Add a Search option to your store.&lt;/li&gt;
&lt;li&gt;Add a Payment option to your store.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find the code for this tutorial in this &lt;a href="https://github.com/Gunkev/electronic-storefront-medusa" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Next.js?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://nextjs.org/" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt; is an open-source React framework for building user-friendly web applications. &lt;a href="https://beta.reactjs.org/" rel="noopener noreferrer"&gt;React&lt;/a&gt; is a JavaScript library for building interactive user interfaces. Next.js enables server-side rendering and requires minimal or no configuration.&lt;/p&gt;

&lt;p&gt;Medusa offers two storefront starters: Next.js and Gatsby. It's easy to install them with the CLI command. Medusa Next.js storefront has many ecommerce pre-build features like a shopping cart, product display, payment processing, and more.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Medusa?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://medusajs.com/" rel="noopener noreferrer"&gt;Medusa&lt;/a&gt; is an &lt;a href="https://medusajs.com/blog/composable-ecommerce-platform/" rel="noopener noreferrer"&gt;open-source digital commerce infrastructure&lt;/a&gt; built with Node.js and provides many ecommerce features such as RMA flows, product and collection management, order management, customization, and more. &lt;/p&gt;

&lt;p&gt;These are some features that set Medusa apart from other ecommerce platforms. Medusa also offers a great developer experience, allowing developers to create amazing and scalable stores with minimal effort.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medusajs.com/blog/composable-commerce/" rel="noopener noreferrer"&gt;Medusa's headless architecture&lt;/a&gt; enables you to build your store with the framework or language of your choice. There are no constraints, as you can use &lt;a href="https://docs.medusajs.com/api/admin" rel="noopener noreferrer"&gt;Medusa's API&lt;/a&gt; to connect the &lt;a href="https://docs.medusajs.com/admin/quickstart" rel="noopener noreferrer"&gt;Medusa admin&lt;/a&gt; to the storefront to perform actions like the product, customer, order, payment management, and many more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating your Electronic Commerce Platform
&lt;/h2&gt;

&lt;p&gt;This section highlights the steps to build your electronic store with Next.js and Medusa.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;Before you begin, make sure you have the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://nodejs.org/en" rel="noopener noreferrer"&gt;Nodejs&lt;/a&gt; version 14 or later&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://git-scm.com/" rel="noopener noreferrer"&gt;Git&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://yarnpkg.com/" rel="noopener noreferrer"&gt;Yarn&lt;/a&gt; or Npm(This tutorial uses Yarn)&lt;/li&gt;
&lt;li&gt;A code editor like &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;VSCode&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;An &lt;a href="https://www.algolia.com/" rel="noopener noreferrer"&gt;Algolia&lt;/a&gt; account&lt;/li&gt;
&lt;li&gt;A &lt;a href="http://stripe.com/" rel="noopener noreferrer"&gt;Stripe&lt;/a&gt; account&lt;/li&gt;
&lt;li&gt;S3 for file upload service&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You will find all the resources used in this tutorial, such as &lt;a href="https://github.com/Gunkev/electronic-storefront-medusa/tree/main/public/store%20images" rel="noopener noreferrer"&gt;icons and images in the Git repository&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Set Up the Medusa Server for the Electronic Store
&lt;/h3&gt;

&lt;p&gt;If you have everything installed, follow these steps to set up your &lt;a href="https://github.com/medusajs/medusa" rel="noopener noreferrer"&gt;Medusa&lt;/a&gt; project.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install the Medusa CLI tool with the following command:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yarn global add @medusajs/medusa-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Create your Medusa application with this command:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yarn create medusa-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Upon executing, this command will ask you where you which to install your project. Enter a name there; in this tutorial, it is &lt;code&gt;ElectronicStore&lt;/code&gt;. Then, press enter. For this tutorial, choose the &lt;code&gt;Medusa-starter-default&lt;/code&gt; for the backend and the &lt;code&gt;Next.js starter&lt;/code&gt; template for the storefront. &lt;/p&gt;

&lt;p&gt;Normally you should have the same information as the screenshot below.&lt;/p&gt;

&lt;p&gt;![How to Build an Electronic Commerce Store with Medusa and Nextjs]&lt;a href="https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/starter-1024x302.png" rel="noopener noreferrer"&gt;https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/starter-1024x302.png&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Upon the execution of this command, Medusa will create three folders in the &lt;code&gt;ElectronicStore&lt;/code&gt;: storefront, admin, and backend.&lt;/p&gt;

&lt;p&gt;To start each part of the application, open the three command line/terminal tabs and run the following command with respect to each folder:&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="c"&gt;# Medusa server&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;ElectronStore/backend
yarn start

&lt;span class="c"&gt;# Admin&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;ElectronStore/admin
yarn start

&lt;span class="c"&gt;# Storefront&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;ElectronStore/storefront
yarn dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After executing those commands, visit &lt;code&gt;localhost:8000&lt;/code&gt; to view your storefront.&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%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe27708d9-808e-4b35-b986-9f26951398de%2F39ee85f8-0c84-42c8-8d2f-e600fd4dfb6a%2Fstoref.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%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe27708d9-808e-4b35-b986-9f26951398de%2F39ee85f8-0c84-42c8-8d2f-e600fd4dfb6a%2Fstoref.png" alt="storef.PNG" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Similarly, visit your admin dashboard by opening your browser on &lt;code&gt;localhost:7000&lt;/code&gt;. 7000 is the default admin port.&lt;/p&gt;

&lt;p&gt;!&lt;a href="https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/admin-1024x552.png" rel="noopener noreferrer"&gt;https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/admin-1024x552.png&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next step consists of styling your storefront. This tutorial uses &lt;a href="https://tailwindcss.com/" rel="noopener noreferrer"&gt;Tailwind CSS&lt;/a&gt; very useful for building modern websites. Note that you can equally set up your &lt;a href="https://docs.medusajs.com/admin/quickstart" rel="noopener noreferrer"&gt;Medusa admin&lt;/a&gt;, &lt;a href="https://docs.medusajs.com/starters/nextjs-medusa-starter" rel="noopener noreferrer"&gt;Medusa storefront&lt;/a&gt;, and &lt;a href="https://docs.medusajs.com/development/backend/install" rel="noopener noreferrer"&gt;Medusa Backend&lt;/a&gt; separately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Styling the Electronic Commerce Storefront
&lt;/h2&gt;

&lt;p&gt;This section shows how to style your storefront using &lt;a href="https://tailwindcss.com/" rel="noopener noreferrer"&gt;Tailwind CSS&lt;/a&gt;. With &lt;code&gt;create-medusa-app&lt;/code&gt;, the Next.js starter template already contains Tailwind. However, you need to configure the &lt;code&gt;tailwind.config.js&lt;/code&gt; as follows:&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="cm"&gt;/** @type {import('tailwindcss').Config} */&lt;/span&gt;
&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./app/**/*.{js,ts,jsx,tsx}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./pages/**/*.{js,ts,jsx,tsx}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./components/**/*.{js,ts,jsx,tsx}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

    &lt;span class="c1"&gt;// Or if using `src` directory:&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./src/**/*.{js,ts,jsx,tsx}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;extend&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;span class="na"&gt;plugins&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;Now that you have successfully added Tailwind to your project, you must customize your storefront.&lt;/p&gt;

&lt;h3&gt;
  
  
  Customizing the Storefront
&lt;/h3&gt;

&lt;p&gt;Start by changing the style of the header &lt;code&gt;storefront/src/module/layout/templates/nav/index.tsx&lt;/code&gt; with the code below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Nav&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;pathname&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useRouter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;isHome&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setIsHome&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;pathname&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nf"&gt;setIsHome&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;setIsHome&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&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;span class="nx"&gt;pathname&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;toggle&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useMobileMenu&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;
      &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;clsx&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sticky top-0 inset-x-0 z-50 group&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;!fixed&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;isHome&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;header&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"relative h-16 px-8 mx-auto transition-colors bg-white border-b border-transparent duration-200 group-hover:bg-white group-hover:border-gray-200 border-b-[#f1f1f1]"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;nav&lt;/span&gt;
          &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;clsx&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text-gray-900 flex items-center justify-between w-full h-full text-small-regular transition-colors duration-200&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
          &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex-1 basis-0 h-full flex items-center"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"block small:hidden"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Hamburger&lt;/span&gt; &lt;span class="na"&gt;setOpen&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;toggle&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"hidden small:block h-full"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;DropdownMenu&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex items-center h-full"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Link&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-xl-semi uppercase"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/logo.png"&lt;/span&gt; &lt;span class="na"&gt;alt&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Link&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex items-center gap-x-6 h-full flex-1 basis-0 justify-end"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"hidden small:flex items-center gap-x-6 h-full"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="si"&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;FEATURE_SEARCH_ENABLED&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;DesktopSearchModal&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Link&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/account"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Account&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Link&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;CartDropdown&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;nav&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;MobileMenu&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;header&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Nav&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This code above changes the navbar by adding a border and logo.&lt;/p&gt;

&lt;p&gt;To change the banner image, locate your &lt;code&gt;storefront/src/modules/home/components/hero/index.tsx&lt;/code&gt;, which is the hero section and replace it with the code below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Hero&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"h-[90vh] w-full relative"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-white absolute inset-0 z-10 flex flex-col justify-center items-center text-center small:text-left small:justify-end small:items-start small:p-32"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-2xl-semi mb-4 drop-shadow-md shadow-black"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          Hi 👋 welcome to my electronic shop
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-base-regular max-w-[32rem] mb-6 drop-shadow-md shadow-black"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          The best electronic devices to help you in your daily tasks both in
          the professional and personal life.
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;UnderlineLink&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/store"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Explore products&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;UnderlineLink&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"bg-white h-[90vh] w-full"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        The best electronic devices to help you in your daily tasks both
        in the professional and personal life.
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Image&lt;/span&gt;
        &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/hero2.jpg"&lt;/span&gt;
        &lt;span class="na"&gt;layout&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"fill"&lt;/span&gt;
        &lt;span class="na"&gt;loading&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"eager"&lt;/span&gt;
        &lt;span class="na"&gt;priority&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;quality&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;objectFit&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"cover"&lt;/span&gt;
        &lt;span class="na"&gt;alt&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"computer"&lt;/span&gt;
        &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"absolute inset-0"&lt;/span&gt;
        &lt;span class="na"&gt;draggable&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"false"&lt;/span&gt;
      &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"bg-black h-[90vh] w-full absolute top-0 opacity-50"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Hero&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This code block adds a banner image and text to the hero section. &lt;/p&gt;

&lt;p&gt;Next, change how you display feature products in the home section. &lt;code&gt;storefront/src/module/home/components/featured-products/index.tsx&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;FeaturedProducts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="p"&gt;...&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
   &lt;span class="p"&gt;...&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;flex flex-col items-center text-center mb-16&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-base-regular text-gray-600 mb-6"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            Latest products
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-2xl-regular text-gray-900 max-w-lg mb-4"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            Our newest electronic gadgets to make your life smooth.
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;UnderlineLink&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/store"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Explore products&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;UnderlineLink&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="na"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
       ...
  )
}

...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The code above changes the text of feature products of your store.&lt;/p&gt;

&lt;p&gt;Change the section just before the footer  &lt;code&gt;storefront/src/modules/layout/components/footer-cta/index.tsx&lt;/code&gt; by adding the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;FooterCTA&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"bg-gray-100 w-full"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"content-container flex flex-col-reverse gap-y-8 small:flex-row small:items-center justify-between py-16 relative"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-2xl-semi"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Check out the lastest gadgets&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"mt-6"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;UnderlineLink&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/store"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Explore products&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;UnderlineLink&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"relative w-full aspect-square small:w-[35%] small:aspect-[28/36]"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Image&lt;/span&gt;
            &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/hero3.jpg"&lt;/span&gt;
            &lt;span class="na"&gt;alt&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;
            &lt;span class="na"&gt;layout&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"fill"&lt;/span&gt;
            &lt;span class="na"&gt;objectFit&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"cover"&lt;/span&gt;
            &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"absolute inset-0"&lt;/span&gt;
          &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;FooterCTA&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here you are changing the default text as well as the default image. &lt;/p&gt;

&lt;p&gt;Now move to the footer file &lt;code&gt;storefront/src/modules/layout/components/footer-nav/index.tsx&lt;/code&gt; and replace it with the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;FooterNav&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;collections&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useCollections&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"content-container flex flex-col gap-y-8 pt-16 pb-8"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex flex-col gap-y-6 xsmall:flex-row items-start justify-between"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Link&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-xl-semi uppercase"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/logo.png"&lt;/span&gt; &lt;span class="na"&gt;alt&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Link&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"py-5 text-sm text-[#999]"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            Get the best electronics from the best place
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex flex-col-reverse gap-y-0 justify-center xsmall:items-center xsmall:flex-row xsmall:justify-between"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-xsmall-regular text-gray-500"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              © Copyright 2023 ES store
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"min-w-[316px] flex xsmall:justify-end"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;CountrySelect&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-small-regular grid grid-cols-3 gap-x-16"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flex flex-col gap-y-2"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-base-semi"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Collections&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;
              &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;clsx&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;grid grid-cols-1 gap-y-2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;grid-cols-2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;collections&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
              &lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;collections&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt; &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Link&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;`/collections/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                  &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Link&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;FooterNav&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This code snippet above adds new links and a logo in the footer. In the last part of the footer, change the background colour &lt;code&gt;storefront/src/modules/layout/components/medusa-cta/index.tsx&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;MedusaCTA&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"py-4 flex justify-center items-center w-full bg-[#333]"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"content-container flex justify-center flex-1"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"https://www.medusajs.com"&lt;/span&gt; &lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"_blank"&lt;/span&gt; &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"noreferrer"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;PoweredBy&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;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;Head to &lt;code&gt;storefront/src/pages/index.tsx&lt;/code&gt; to modify the meta information of the home page:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Home&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;NextPageWithLayout&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Head&lt;/span&gt;
        &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Home"&lt;/span&gt;
        &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Get the best electroics for your home and office from the best stores online with secure payment methods."&lt;/span&gt;
      &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Hero&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;FeaturedProducts&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&amp;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;By the end, you should have a store similar to the screenshot below: &lt;/p&gt;

&lt;p&gt;!&lt;a href="https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/store1-1024x470.png" rel="noopener noreferrer"&gt;https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/store1-1024x470.png&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding Products in the Electronic Commerce Store
&lt;/h2&gt;

&lt;p&gt;By default, Medusa comes with some products on the storefront. You need to add your products. Medusa commonly uses a &lt;a href="https://docs.medusajs.com/development/file-service/overview" rel="noopener noreferrer"&gt;file service&lt;/a&gt; plugin to add products to the admin dashboard.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installing and Integrating a File Service Plugin (S3)
&lt;/h3&gt;

&lt;p&gt;Simple Storage Service (S3) is a powerful open-source object storage suite available on any public and private cloud. Medusa uses file service plugins to host files such as images.&lt;/p&gt;

&lt;p&gt;This tutorial will use &lt;a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html" rel="noopener noreferrer"&gt;AWS S3&lt;/a&gt;, but you can use other file services like &lt;a href="https://docs.medusajs.com/plugins/file-service/spaces" rel="noopener noreferrer"&gt;Space&lt;/a&gt; and &lt;a href="https://docs.medusajs.com/plugins/file-service/minio" rel="noopener noreferrer"&gt;Minio&lt;/a&gt;. You need to have an &lt;a href="https://console.aws.amazon.com/console/home?nc2=h_ct&amp;amp;src=header-signin" rel="noopener noreferrer"&gt;AWS account&lt;/a&gt; and &lt;a href="https://docs.medusajs.com/plugins/file-service/s3" rel="noopener noreferrer"&gt;create a bucket&lt;/a&gt; if you have none. Equally, you need to &lt;a href="https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys" rel="noopener noreferrer"&gt;create an access and secret key&lt;/a&gt; that you will use in the next section to build your store.&lt;/p&gt;

&lt;p&gt;When you are done with that, install the S3 plugin in the backend with the command below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;yarn&lt;/span&gt; &lt;span class="nx"&gt;add&lt;/span&gt; &lt;span class="nx"&gt;medusa&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;s3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, open your &lt;code&gt;backend/.env&lt;/code&gt; file and add the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;S3_URL=&amp;lt;YOUR_BUCKET_URL&amp;gt;
S3_BUCKET=&amp;lt;YOUR_BUCKET_NAME&amp;gt;
S3_REGION=&amp;lt;YOUR_BUCKET_REGION&amp;gt;
S3_ACCESS_KEY_ID=&amp;lt;YOUR_ACCESS_KEY_ID&amp;gt;
S3_SECRET_ACCESS_KEY=&amp;lt;YOUR_SECRET_ACCESS_KEY&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;YOUR_BUCKET_URL&amp;gt;&lt;/code&gt; corresponds to the URL of your bucket it's generally in the form: &lt;code&gt;http://&amp;lt;YOUR_BUCKET_NAME&amp;gt;.s3-website-&amp;lt;YOUR_BUCKET_REGION&amp;gt;.amazonaws.com&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;YOUR_BUCKET_NAME&amp;gt;&lt;/code&gt;: The name of your S3 bucket&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;YOUR_ACCESS_KEY_ID&lt;/code&gt;: The access key which was created earlier&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;YOUR_SECRET_ACCESS_KEY&amp;gt;&lt;/code&gt;: The secret key created earlier&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To complete the S3 integration, add the following configuration to the array of plugins in the &lt;code&gt;backend/medusa-config.js&lt;/code&gt; file:&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-file-s3`&lt;/span&gt;&lt;span class="p"&gt;,&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;s3_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;S3_URL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;bucket&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;S3_BUCKET&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;region&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;S3_REGION&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;access_key_id&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;S3_ACCESS_KEY_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;secret_access_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;S3_SECRET_ACCESS_KEY&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;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lastly, edit &lt;code&gt;storefront/next.config.js&lt;/code&gt; file like this:&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="nx"&gt;images&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;domains&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;YOUR_BUCKET_NAME&amp;gt;.s3.amazonaws.com&lt;/span&gt;&lt;span class="dl"&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;Add the domain from where you are uploading your images.  corresponds to the name of your bucket. Once you have finished setting up S3, you can add electronic products to your store.&lt;/p&gt;

&lt;h3&gt;
  
  
  Add Products with Medusa Admin
&lt;/h3&gt;

&lt;p&gt;To add products to your store, head to the admin dashboard (&lt;code&gt;localhost:7000&lt;/code&gt;). The default login credentials are &lt;code&gt;admin@medusa-test.com&lt;/code&gt; and &lt;code&gt;supersecret&lt;/code&gt;. The Medusa admin dashboard connects the Medusa server to help you to manage your store.&lt;/p&gt;

&lt;p&gt;Once you logged in, you should have a similar interface as below. Here you can manage your &lt;a href="https://docs.medusajs.com/user-guide/products/" rel="noopener noreferrer"&gt;products&lt;/a&gt;, &lt;a href="https://docs.medusajs.com/user-guide/orders/" rel="noopener noreferrer"&gt;orders&lt;/a&gt;, &lt;a href="https://docs.medusajs.com/user-guide/customers/manage" rel="noopener noreferrer"&gt;customer&lt;/a&gt; settings, and more.&lt;/p&gt;

&lt;p&gt;!&lt;a href="https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/dash-1024x464.png" rel="noopener noreferrer"&gt;https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/dash-1024x464.png&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Head to the product page and delete all the default products by clicking on the three dots at the end and selecting &lt;code&gt;delete&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;!&lt;a href="https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/deleteprod-1024x176.png" rel="noopener noreferrer"&gt;https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/deleteprod-1024x176.png&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After removing all the products, click on &lt;code&gt;add new product&lt;/code&gt; button to add some electronic products to the ecommerce store.&lt;/p&gt;

&lt;p&gt;!&lt;a href="https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/store3-1024x464.png" rel="noopener noreferrer"&gt;https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/store3-1024x464.png&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you go to &lt;code&gt;localhost:8000/store&lt;/code&gt; you will see your newly-added products.&lt;/p&gt;

&lt;p&gt;!&lt;a href="https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/store2-1024x469.png" rel="noopener noreferrer"&gt;https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/store2-1024x469.png&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Integration
&lt;/h2&gt;

&lt;p&gt;Now is the time to integrate the two main services: Search and Payment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Algolia Integration
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.algolia.com/" rel="noopener noreferrer"&gt;Algolia&lt;/a&gt; is an open-source UI search JavaScript library. It allows you to add advanced search functionalities to your store. Adding this search functionality to your store will greatly improve the user experience and &lt;a href="https://medusajs.com/blog/importance-of-optimizing-internal-search-in-ecommerce-websites/" rel="noopener noreferrer"&gt;optimize internal search&lt;/a&gt; in the electronic commerce store.&lt;/p&gt;

&lt;p&gt;To add Algolia to your application, you need to possess an &lt;a href="https://www.algolia.com/users/sign_up" rel="noopener noreferrer"&gt;Algolia account&lt;/a&gt;. Upon creating your account, follow &lt;a href="https://docs.medusajs.com/plugins/search/algolia#retrieve-api-keys" rel="noopener noreferrer"&gt;this documentation&lt;/a&gt; to create an &lt;a href="https://docs.medusajs.com/plugins/search/algolia#create-an-algolia-app" rel="noopener noreferrer"&gt;Algolia application&lt;/a&gt; and then, get your Algolia Application ID, Admin API Key, and Search-Only API Key.&lt;/p&gt;

&lt;p&gt;Next, install the Algolia plugin in your store 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;yarn add medusa-plugin-algolia
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then add this environment variable to your Medusa backend:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ALGOLIA_APP_ID=&amp;lt;YOUR_APP_ID&amp;gt;
ALGOLIA_ADMIN_API_KEY=&amp;lt;YOUR_ADMIN_API_KEY&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;&amp;lt;YOUR_APP_ID&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;YOUR_ADMIN_API_KEY&amp;gt;&lt;/code&gt; correspond to the Application ID and Admin API Key mentioned earlier. You can find them on the &lt;a href="https://www.algolia.com/account/api-keys/" rel="noopener noreferrer"&gt;API Keys page&lt;/a&gt; under your Algolia account.&lt;/p&gt;

&lt;p&gt;Add the following item into the &lt;code&gt;plugins&lt;/code&gt; array in &lt;code&gt;medusa-config.js&lt;/code&gt;:&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-plugin-algolia`&lt;/span&gt;&lt;span class="p"&gt;,&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;application_id&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;ALGOLIA_APP_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;admin_api_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;ALGOLIA_ADMIN_API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;products&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="na"&gt;searchableAttributes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;title&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;description&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
          &lt;span class="na"&gt;attributesToRetrieve&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;title&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;description&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;handle&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;thumbnail&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;variants&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;variant_sku&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;options&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;collection_title&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;collection_handle&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;images&lt;/span&gt;&lt;span class="dl"&gt;"&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;span class="p"&gt;},&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;&lt;code&gt;searchableAttributes&lt;/code&gt; are attributes in a product that are searchable while &lt;code&gt;attributesToRetrieve&lt;/code&gt; are attributes to retrieve for each product result.&lt;/p&gt;

&lt;p&gt;Now, add the search UI to the storefront so that users can effectively perform product research. Fortunately, Next.js storefront Algolia integration is available out-of-the-box. To get everything ready, make sure the search feature is set to &lt;code&gt;true&lt;/code&gt; in the &lt;code&gt;store.config.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"features"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"search"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then add the environmental variables:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NEXT_PUBLIC_SEARCH_APP_ID=&amp;lt;YOUR_APP_ID&amp;gt;
NEXT_PUBLIC_SEARCH_API_KEY=&amp;lt;YOUR_SEARCH_API_KEY&amp;gt;
NEXT_PUBLIC_SEARCH_INDEX_NAME=products
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;YOUR_APP_ID&amp;gt;&lt;/code&gt; corresponds to the Application ID.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;YOUR_SEARCH_API_KEY&amp;gt;&lt;/code&gt; corresponds to the Search-Only API Key. You can find this information in your Algolia &lt;a href="https://docs.medusajs.com/plugins/search/algolia#retrieve-api-keys" rel="noopener noreferrer"&gt;API Keys section&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To complete this integration, change the code in &lt;code&gt;src/lib/search-client.ts&lt;/code&gt; to the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;algoliasearch&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;algoliasearch/lite&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;appId&lt;/span&gt; &lt;span class="o"&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;NEXT_PUBLIC_SEARCH_APP_ID&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;apiKey&lt;/span&gt; &lt;span class="o"&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;NEXT_PUBLIC_SEARCH_API_KEY&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;test_key&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;searchClient&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;algoliasearch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;appId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;SEARCH_INDEX_NAME&lt;/span&gt; &lt;span class="o"&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;NEXT_PUBLIC_INDEX_NAME&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;products&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you run your storefront and backend, you will notice that the search feature is available.&lt;/p&gt;

&lt;p&gt;!&lt;a href="https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/search-1024x553.png" rel="noopener noreferrer"&gt;https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/search-1024x553.png&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Payment Integration with&lt;/strong&gt; Stripe
&lt;/h3&gt;

&lt;p&gt;This section will guide you through how to set up Stripe payment methods in your Medusa backend, admin, and storefront. &lt;a href="https://stripe.com/" rel="noopener noreferrer"&gt;Stripe&lt;/a&gt; is one of the simplest ways to accept online payments. It gives you the technical components needed to manage transactions safely. Other payment methods you can use with Medua are &lt;a href="https://medusajs.com/blog/how-we-won-medusa-hackathon-paystack-plugin/" rel="noopener noreferrer"&gt;Paystack&lt;/a&gt;, &lt;a href="https://docs.medusajs.com/plugins/payment/klarna" rel="noopener noreferrer"&gt;Klarna&lt;/a&gt;, and &lt;a href="https://docs.medusajs.com/plugins/payment/paypal" rel="noopener noreferrer"&gt;Paypal&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;To add Stripe to your store, you must possess a &lt;a href="https://dashboard.stripe.com/register" rel="noopener noreferrer"&gt;Stripe account&lt;/a&gt;. Like Algolia, you must &lt;a href="https://docs.medusajs.com/plugins/payment/stripe#retrieve-stripes-keys" rel="noopener noreferrer"&gt;retrieve your account's API Keys and secrets&lt;/a&gt; to connect Medusa to your Stripe account.&lt;/p&gt;

&lt;p&gt;In the root directory of the Medusa backend, use the following command to install the Stripe plugin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add medusa-payment-stripe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, you need to add configurations to your stripe plugin. In &lt;code&gt;medusa-config.js&lt;/code&gt;, add the following at the end of 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-payment-stripe`&lt;/span&gt;&lt;span class="p"&gt;,&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;api_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;STRIPE_API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;webhook_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;STRIPE_WEBHOOK_SECRET&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;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Head to the dashboard of your Stripe account to retrieve the API Key and secret key. Then, in your Medusa backend, create &lt;code&gt;.env&lt;/code&gt; if it does not exist and add the Stripe key:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;STRIPE_API_KEY=sk_...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, add Stripe’s webhook in the &lt;code&gt;.env&lt;/code&gt; file. You can get it by heading to the Stripe dashboard and clicking Add an Endpoint. Medusa backend's endpoint, Stripe webhook, is &lt;code&gt;{BACKEND_URL}/stripe/hooks&lt;/code&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: Add this endpoint to its field if you are in production, and replace {BACKEND_URL} with the URL of your backend. Add a description, select at least one action, and then click Add Endpoint. Once the Webhook is created, you’ll see "Signing secret" in the Webhook details. Reveals the secret key by clicking &lt;code&gt;reveal&lt;/code&gt; it and copying it into your Medusa backend.&lt;/p&gt;


&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;STRIPE_WEBHOOK_SECRET=whsec_...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The last part of Stripe integration consists of setting it up in the Medusa admin by adding a payment provider.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to Settings → &lt;a href="https://docs.medusajs.com/user-guide/regions/manage" rel="noopener noreferrer"&gt;Regions&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Select a region to edit.&lt;/li&gt;
&lt;li&gt;Click on the icon at the top right of the first section on the right.&lt;/li&gt;
&lt;li&gt;Click on Edit Region Details from the dropdown.&lt;/li&gt;
&lt;li&gt;Under the provider's section, select the payment providers you want to add to the region. Here it's Stripe.&lt;/li&gt;
&lt;li&gt;Unselect the payment providers you want to remove from the region.&lt;/li&gt;
&lt;li&gt;Click Save.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Finally, in your storefront, add the following environment variable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NEXT_PUBLIC_STRIPE_KEY=&amp;lt;YOUR_PUBLISHABLE_KEY&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where &lt;code&gt;&amp;lt;YOUR_PUBLISHABLE_KEY&amp;gt;&lt;/code&gt; corresponds to your Stripe Publishable Key.&lt;/p&gt;

&lt;p&gt;If you run your Medusa storefront and backend, add products to your cart, and then proceed to checkout, you can now use Stripe as a payment method. Here is what the final result looks like: &lt;/p&gt;

&lt;p&gt;!&lt;a href="https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/store4-1024x558.png" rel="noopener noreferrer"&gt;https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/store4-1024x558.png&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You could also check out this &lt;a href="https://medusajs.com/blog/stripe-ecommerce/" rel="noopener noreferrer"&gt;Stripe guide&lt;/a&gt; for more information regarding its integration&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing the Store
&lt;/h2&gt;

&lt;p&gt;The final step of this tutorial consists of testing the whole store. While the Medusa server is still running, restart your storefront.&lt;/p&gt;

&lt;p&gt;Navigate to &lt;code&gt;localhost:8000&lt;/code&gt; to see the final electronic commerce store: &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%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe27708d9-808e-4b35-b986-9f26951398de%2F57ce858b-cdcc-4881-ba6c-695d34345578%2Fstore5.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%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe27708d9-808e-4b35-b986-9f26951398de%2F57ce858b-cdcc-4881-ba6c-695d34345578%2Fstore5.png" alt="store5.PNG" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on the store item in the navigation bar to open the store:&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%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe27708d9-808e-4b35-b986-9f26951398de%2F86216436-9ea9-48ee-902c-34018524ce26%2Fstore7.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%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe27708d9-808e-4b35-b986-9f26951398de%2F86216436-9ea9-48ee-902c-34018524ce26%2Fstore7.png" alt="store7.PNG" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Add some products to your cart:&lt;/p&gt;

&lt;p&gt;!&lt;a href="https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/store8-1024x467.png" rel="noopener noreferrer"&gt;https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/store8-1024x467.png&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Checkout:&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%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe27708d9-808e-4b35-b986-9f26951398de%2F34252a44-9c70-4bdb-a9e9-31a3f04b319c%2Fstore9.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%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe27708d9-808e-4b35-b986-9f26951398de%2F34252a44-9c70-4bdb-a9e9-31a3f04b319c%2Fstore9.png" alt="store9.PNG" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;View your order:&lt;/p&gt;

&lt;p&gt;!&lt;a href="https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/store10-1024x465.png" rel="noopener noreferrer"&gt;https://www.learn-dev-tools.blog/wp-content/uploads/2023/03/store10-1024x465.png&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;In this tutorial, you learned how to build a headless electronic commerce platform with the Medusa engine, using the Next.js Storefront and integrating services like search and payment using Algolia and Stripe.&lt;/p&gt;

&lt;p&gt;However, you can add many other functionalities to this electronic commerce store. Some include gift cards, tax management, &lt;a href="https://docs.medusajs.com/modules/carts-and-checkout/backend/add-fulfillment-provider" rel="noopener noreferrer"&gt;custom shipping methods&lt;/a&gt;, and &lt;a href="https://docs.medusajs.com/plugins/notifications/" rel="noopener noreferrer"&gt;Notifications&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Go to the &lt;a href="https://docs.medusajs.com/quickstart/quick-start" rel="noopener noreferrer"&gt;Medusa documentation&lt;/a&gt; for more details regarding these functionalities and services.&lt;/p&gt;

&lt;p&gt;This article was originally published on the &lt;a href="https://www.learn-dev-tools.blog/how-to-build-an-electronic-commerce-store-with-medusa-and-nextjs/" rel="noopener noreferrer"&gt;Learn Dev Tools Blog&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>beginners</category>
      <category>ecommerce</category>
      <category>webdev</category>
    </item>
    <item>
      <title>7 Useful Mobile Applications to Improve Your Productivity as a Developer</title>
      <dc:creator>Gun</dc:creator>
      <pubDate>Tue, 04 Jul 2023 20:37:08 +0000</pubDate>
      <link>https://dev.to/gunkev/7-useful-mobile-applications-to-improve-your-productivity-as-a-developer-45p2</link>
      <guid>https://dev.to/gunkev/7-useful-mobile-applications-to-improve-your-productivity-as-a-developer-45p2</guid>
      <description>&lt;p&gt;Today many things that were usually done on a desktop, can now be performed on your smartphone thanks to the evolution of Mobile phones. Developers must be always on the move in today's fast-paced world, working on their projects and remaining productive. Mobile apps, which provide ease and flexibility, have become an essential element of a developer's arsenal. Having the appropriate mobile apps may dramatically enhance your productivity, whether you're coding on the move or managing your projects remotely. In this article, we'll look at the best mobile apps that every developer should use.&lt;/p&gt;

&lt;h2 id="heading-1-code-from-anywhere-with-replit"&gt;&lt;a href="https://gunkev.hashnode.dev/7-useful-mobile-applications-to-improve-your-productivity-as-a-developer#heading-1-code-from-anywhere-with-replit" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;h2 id="heading-1-code-from-anywhere-with-replit"&gt;1. Code from Anywhere with Replit&lt;/h2&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1688501306208%2Fda27ce0c-bc94-44a3-9255-03ed3a6d9ae8.jpeg%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" 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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1688501306208%2Fda27ce0c-bc94-44a3-9255-03ed3a6d9ae8.jpeg%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" alt="" width="1076" height="2295"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Coding from anywhere and doing everything you'd normally do on a desktop, such as coding the complete project, sharing, and hosting, are all possible. Everything is handled via your phone. Replit comes with everything you need to get started, including a CPU, storage, and RAM. You can interact with the terminal, use a file system, and do other things. Replit is available for &lt;a href="https://play.google.com/store/apps/details?id=com.replit.app&amp;amp;hl=en&amp;amp;gl=US" rel="noreferrer noopener"&gt;Android&lt;/a&gt; and &lt;a href="https://apps.apple.com/us/app/replit-code-anything/id1614022293" rel="noreferrer noopener"&gt;iOS&lt;/a&gt; systems&lt;/p&gt;

&lt;h2 id="heading-2-improve-your-productivity-with-macrodroid"&gt;&lt;a href="https://gunkev.hashnode.dev/7-useful-mobile-applications-to-improve-your-productivity-as-a-developer#heading-2-improve-your-productivity-with-macrodroid" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;h2 id="heading-2-improve-your-productivity-with-macrodroid"&gt;2. Improve Your Productivity with Macrodroid&lt;/h2&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1688501316463%2F78debcf0-fe0d-4f1b-aac4-bf9301ce87b3.jpeg%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" 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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1688501316463%2F78debcf0-fe0d-4f1b-aac4-bf9301ce87b3.jpeg%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" alt="" width="1066" height="2242"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One feature that Android consumers like is freedom. They are free to do whatever they choose. You can do even more using Macrodroid. It is one of the best Android device automation tools. You can auto-skip YouTube advertising, auto-swipe in TikTok, do something when something happens, and so on. The app is readily available for &lt;a href="https://play.google.com/store/apps/details?id=com.arlosoft.macrodroid&amp;amp;hl=en&amp;amp;gl=US" rel="noreferrer noopener"&gt;Android&lt;/a&gt; users only&lt;/p&gt;

&lt;h2 id="heading-3-test-your-apis-directly-with-your-mobile-phone-using-api-tester"&gt;&lt;a href="https://gunkev.hashnode.dev/7-useful-mobile-applications-to-improve-your-productivity-as-a-developer#heading-3-test-your-apis-directly-with-your-mobile-phone-using-api-tester" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;h2 id="heading-3-test-your-apis-directly-with-your-mobile-phone-using-api-tester"&gt;3. Test your APIs directly with Your Mobile Phone using API Tester&lt;/h2&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1688501330688%2F36388484-4dd9-420c-a02b-0907fb89c0a6.jpeg%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" 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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1688501330688%2F36388484-4dd9-420c-a02b-0907fb89c0a6.jpeg%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" alt="" width="1080" height="2295"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;API Tester is a robust tool for testing and debugging APIs from mobile devices. It has most of the functionalities of a typical desktop API testing program. You can test &lt;a href="https://www.learn-dev-tools.blog/creating-a-custom-api-with-strapi/" rel="noreferrer noopener"&gt;any API&lt;/a&gt;, including REST, GraphQL, WebSocket, and SOAP. It uses cURL or files from your device to import requests and collections. You can also run all queries simultaneously, save variables for later use, and integrate with other Widgets. API Tester is available on both &lt;a href="https://apps.apple.com/us/app/replit-code-anything/id1614022293" rel="noreferrer noopener"&gt;AppStore&lt;/a&gt; and &lt;a href="https://play.google.com/store/apps/details?id=apitester.org&amp;amp;hl=en&amp;amp;gl=US" rel="noreferrer noopener"&gt;PlayStore&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="heading-4-share-your-thoughts-easily-with-mindly"&gt;&lt;a href="https://gunkev.hashnode.dev/7-useful-mobile-applications-to-improve-your-productivity-as-a-developer#heading-4-share-your-thoughts-easily-with-mindly" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;h2 id="heading-4-share-your-thoughts-easily-with-mindly"&gt;4. Share Your Thoughts Easily with Mindly&lt;/h2&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1688501330688%2F36388484-4dd9-420c-a02b-0907fb89c0a6.jpeg" 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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1688501330688%2F36388484-4dd9-420c-a02b-0907fb89c0a6.jpeg" alt="" width="800" height="1700"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Share your work with friends, coworkers, or team members while maintaining control over viewing and editing rights. Collaborate whether you're at home, in your workplace, or on the other side of the world. With a single click, Mindly can convert your well-structured Word, &lt;a href="https://www.learn-dev-tools.blog/what-is-html-start-learning-web-development/" rel="noreferrer noopener"&gt;HTML&lt;/a&gt;, or Markdown document into a creative and entertaining mind map. Anytime you add, delete, or relocate nodes, your map automatically updates and preserves its layout. You can even import and export to or from your Dropbox account.&lt;/p&gt;

&lt;p&gt;The app is readily available on &lt;a href="https://apps.apple.com/us/app/mindly-mind-mapping/id771221376" rel="noreferrer noopener"&gt;AppStore&lt;/a&gt; and &lt;a href="https://play.google.com/store/apps/details?id=com.dripgrind.mindly&amp;amp;hl=en&amp;amp;gl=US" rel="noreferrer noopener"&gt;PlayStore&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="heading-5-avoid-painless-configurations-with-expo-go"&gt;&lt;a href="https://gunkev.hashnode.dev/7-useful-mobile-applications-to-improve-your-productivity-as-a-developer#heading-5-avoid-painless-configurations-with-expo-go" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;h2 id="heading-5-avoid-painless-configurations-with-expo-go"&gt;5. Avoid Painless Configurations with Expo Go&lt;/h2&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1688501341607%2F2bcbb9f5-79bd-4e7f-9315-38863d9bd91f.jpeg%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" 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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1688501341607%2F2bcbb9f5-79bd-4e7f-9315-38863d9bd91f.jpeg%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" alt="" width="1080" height="2205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Expo Go will be extremely beneficial for React Native developers or anyone on their way to want to learn React Native. Rather than installing and configuring Android Studio locally for development. Simply use Expo Go to see real-time changes and easily share your creation with everyone. Create a react-native project with appropriate configurations, then scan the QR code from the console. The Expo Go smartphone app will provide access to the project. All your changes will be directly reflected in the app. You can download the app on &lt;a href="https://play.google.com/store/apps/details?id=host.exp.exponent&amp;amp;hl=en&amp;amp;gl=US" rel="noreferrer noopener"&gt;PlayStore&lt;/a&gt; or &lt;a href="https://apps.apple.com/us/app/expo-go/id982107779" rel="noreferrer noopener"&gt;AppStore&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="heading-6-stay-up-to-date-with-devbytes"&gt;&lt;a href="https://gunkev.hashnode.dev/7-useful-mobile-applications-to-improve-your-productivity-as-a-developer#heading-6-stay-up-to-date-with-devbytes" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;h2 id="heading-6-stay-up-to-date-with-devbytes"&gt;6. Stay up to date with DevBytes&lt;/h2&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1688501348628%2Fe817137e-07c7-4a7e-938c-7b1d96e4ed0c.jpeg%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" 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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1688501348628%2Fe817137e-07c7-4a7e-938c-7b1d96e4ed0c.jpeg%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" alt="" width="1066" height="2261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a developer, you must constantly stay up to date on the latest technological developments. However, most of you do not have time to investigate and read lengthy articles. DevBytes explores, resumes and presents popular computer programming news. Not only can you obtain news, but you can also learn new coding ideas with explanations and code samples, find career possibilities, and participate anonymously in public polls to express your opinions. The application is only available on &lt;a href="https://play.google.com/store/apps/details?id=com.candelalabs.devbytes&amp;amp;hl=en&amp;amp;gl=US" rel="noreferrer noopener"&gt;PlayStore&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id="heading-7-plan-easily-with-planio"&gt;&lt;a href="https://gunkev.hashnode.dev/7-useful-mobile-applications-to-improve-your-productivity-as-a-developer#heading-7-plan-easily-with-planio" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;h2 id="heading-7-plan-easily-with-planio"&gt;7. Plan Easily with Planio&lt;/h2&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1688501367231%2F8b081135-9c7d-45e6-a45d-56d118b48301.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" 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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1688501367231%2F8b081135-9c7d-45e6-a45d-56d118b48301.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" alt="" width="1242" height="2208"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Planio implements scrum and agile methods. On the Agile Kanban-style board, you can plan sprints and track progress. However, more standard project management tools such as milestones and the Gantt chart can also be used. This is useful when you cannot manage everything using agile methodologies. As your team completes milestones, they'll start coming up with brilliant ideas. You want to debate them, evaluate their merits, and record your team's findings. &lt;a href="https://play.google.com/store/apps/details?id=io.plan.app.cordova&amp;amp;hl=en&amp;amp;gl=US" rel="noreferrer noopener"&gt;Planio&lt;/a&gt; also, allows you to construct your wiki, discuss ideas in a forum atmosphere, or simply leave comments on, well, just about anything. Work from anywhere at any time.&lt;/p&gt;

&lt;h2 id="heading-conclusion"&gt;&lt;a href="https://gunkev.hashnode.dev/7-useful-mobile-applications-to-improve-your-productivity-as-a-developer#heading-conclusion" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;h2 id="heading-conclusion"&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Mobile apps have transformed the way developers work and increased their productivity. Developers can code, collaborate, manage projects, and stay connected right from their mobile apps. Their simplicity and flexibility can enable developers to be productive even while they are on the go. Including these top mobile apps in their toolset will certainly improve the development process and yield better results.&lt;/p&gt;

</description>
      <category>mobile</category>
      <category>developer</category>
      <category>developertools</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to Localize Your Vue Application with Tolgee?</title>
      <dc:creator>Gun</dc:creator>
      <pubDate>Thu, 29 Jun 2023 12:34:45 +0000</pubDate>
      <link>https://dev.to/gunkev/how-to-localize-your-vue-application-with-tolgee-41aa</link>
      <guid>https://dev.to/gunkev/how-to-localize-your-vue-application-with-tolgee-41aa</guid>
      <description>&lt;p&gt;Nowadays, providing solutions to specific problems identified in a domain has fueled the creation and growth of many companies and startups. But one problem arises which is how to market the product in various places given that not everyone does not have the same background. Even though English is one of the most used languages, especially in the professional domain, this does not exclude the other part of the population that uses other languages. To build an application or solution for a specific area, you need to assure that your solution will &lt;strong&gt;efficiently communicate with the target audience&lt;/strong&gt;. &lt;a href="https://tolgee.io/blog/benefits-challenges-software-localization" rel="noreferrer noopener"&gt;Software localization&lt;/a&gt; is the process of adapting a product or a service offered by the software to meet the needs of a desired culture, population or language.&lt;/p&gt;

&lt;p&gt;In this article, you will learn how to &lt;strong&gt;localize your Vue application in various languages&lt;/strong&gt; with Tolgee an open-source tool. But before that let’s have an overview of what Tolgee and Vuejs are.&lt;/p&gt;

&lt;h2 id="heading-what-is-tolgee"&gt;&lt;a href="https://gunkev.hashnode.dev/how-to-localize-your-vue-application-with-tolgee#heading-what-is-tolgee" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;h2 id="heading-what-is-tolgee"&gt;What is Tolgee?&lt;/h2&gt;

&lt;p&gt;Tolgee is an &lt;strong&gt;open-source platform&lt;/strong&gt; that provides a user-friendly interface for organizing translations for developers and translators. It facilitates the translation process by providing a centralized site for all translation duties, such as managing translation files, translating text, and integrating with popular development tools &lt;strong&gt;such as Nextjs, Gatsby or Angular.&lt;/strong&gt; Tolgee also provides a number of tools to aid &lt;a href="https://tolgee.io/features/collaboration" rel="noreferrer noopener"&gt;collaborative translation operations&lt;/a&gt;, including translation memory. Tolgee is an &lt;strong&gt;all-in-one solution&lt;/strong&gt; for project management and optimizing multilingual content distribution.&lt;/p&gt;

&lt;h2 id="heading-what-is-vuejs"&gt;&lt;a href="https://gunkev.hashnode.dev/how-to-localize-your-vue-application-with-tolgee#heading-what-is-vuejs" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;h2 id="heading-what-is-vuejs"&gt;What is Vue.js?&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://vuejs.org" rel="noreferrer noopener"&gt;Vue.js&lt;/a&gt; is a JavaScript framework used for creating user interfaces, PWA and single-page apps. It is intended to be adopted in stages and can also serve as a web application framework capable of powering complex single-page applications. Vue.js is well-known for its ease of use and simplicity, making it a popular choice among developers for creating scalable and performant web apps.&lt;/p&gt;

&lt;h2 id="heading-how-to-integrate-tolgee-into-a-vue-application"&gt;&lt;a href="https://gunkev.hashnode.dev/how-to-localize-your-vue-application-with-tolgee#heading-how-to-integrate-tolgee-into-a-vue-application" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;h2 id="heading-how-to-integrate-tolgee-into-a-vue-application"&gt;How to Integrate Tolgee into a Vue Application&lt;/h2&gt;

&lt;p&gt;This selection highlights a step-by-step approach to integrating Togee into a Vue application.&lt;/p&gt;

&lt;h3 id="heading-step-1-install-tolgee"&gt;&lt;a href="https://gunkev.hashnode.dev/how-to-localize-your-vue-application-with-tolgee#heading-step-1-install-tolgee" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="heading-step-1-install-tolgee"&gt;Step 1: Install Tolgee&lt;/h3&gt;

&lt;p&gt;You can either create a Tolgee project via the &lt;a href="https://app.tolgee.io/login" rel="noreferrer noopener"&gt;Tolgee Cloud Platform&lt;/a&gt; or self-host it. In this tutorial, we will use the hosted version of Tolgee. However, you can host the server on your own via Docker. If you don’t have Docker installed use this Docker &lt;a href="https://docs.docker.com/desktop/" rel="noreferrer noopener"&gt;quick guide&lt;/a&gt; to get started&lt;/p&gt;

&lt;p&gt;It is recommended to run it in a single container.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;docker run -v tolgee_data:/data/ -p 8085:8080 tolgee/tolgee
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then follow &lt;a href="https://tolgee.io/platform/self_hosting/running_with_docker" rel="noreferrer noopener"&gt;this guide&lt;/a&gt; to configure your Tolgee project.&lt;/p&gt;

&lt;h3 id="heading-step-2-create-a-project"&gt;&lt;a href="https://gunkev.hashnode.dev/how-to-localize-your-vue-application-with-tolgee#heading-step-2-create-a-project" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="heading-step-2-create-a-project"&gt;Step 2: Create a Project&lt;/h3&gt;

&lt;p&gt;Once everything is set up, log into your account and create a new project. Give a name to your project and &lt;strong&gt;add the languages&lt;/strong&gt; you wish your app to use. In this tutorial, the app will use three languages: English, French and Spanish&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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A700%2F0%2Axr9RL729DkAd6Dfb.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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A700%2F0%2Axr9RL729DkAd6Dfb.png" alt="" width="700" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="heading-step-3-generate-api-key"&gt;&lt;a href="https://gunkev.hashnode.dev/how-to-localize-your-vue-application-with-tolgee#heading-step-3-generate-api-key" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="heading-step-3-generate-api-key"&gt;Step 3: Generate API Key&lt;/h3&gt;

&lt;p&gt;Still, in your Tolgee dashboard, navigate to &lt;code&gt;integrate&lt;/code&gt;; the last element in the left menu and select Vue among the list of app integrations&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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A700%2F0%2ADdnpqhKL4MkmfVv-.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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A700%2F0%2ADdnpqhKL4MkmfVv-.png" alt="" width="700" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then in the select input, click on &lt;code&gt;Create new&lt;/code&gt; to create a new API Key.&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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A700%2F0%2ALtvjIf230R4oWbao.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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A700%2F0%2ALtvjIf230R4oWbao.png" alt="" width="700" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Name your API key and select the period of time you wish to use it and click on Save.&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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A700%2F0%2AloWX2fNR1L3um1es.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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A700%2F0%2AloWX2fNR1L3um1es.png" alt="" width="700" height="820"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will generate a first-time-only token that you need to save somewhere on your PC because you will use it later.&lt;/p&gt;

&lt;h3 id="heading-step-4-add-tolgee-to-your-vue-application"&gt;&lt;a href="https://gunkev.hashnode.dev/how-to-localize-your-vue-application-with-tolgee#heading-step-4-add-tolgee-to-your-vue-application" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="heading-step-4-add-tolgee-to-your-vue-application"&gt;Step 4: Add Tolgee to Your Vue application&lt;/h3&gt;

&lt;p&gt;Navigate to your desired directory and run the following command :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;npm init vue@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You will be prompted to provide your project’s name and other information.&lt;/p&gt;

&lt;p&gt;If you already have a project setup, you can skip this step.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Vue.js - The Progressive JavaScript Framework
√ Project name: ... vue-tolgee
√ Add TypeScript? ... No / Yes
√ Add JSX Support? ... No / Yes
√ Add Vue Router for Single Page Application development? ... No / Yes
√ Add Pinia for state management? ... No / Yes
√ Add Vitest for Unit Testing? ... No / Yes
√ Add an End-to-End Testing Solution? » No
√ Add ESLint for code quality? ... No / Yes
√ Add Prettier for code formatting? ... No / Yes
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Once the command is executed, navigate to the project’s root directory and run &lt;code&gt;npm install&lt;/code&gt;, then &lt;code&gt;npm run dev&lt;/code&gt; to start the app.&lt;/p&gt;

&lt;p&gt;If your application does not automatically open, type &lt;code&gt;[&lt;/code&gt;&lt;a href="https://gunkev.hashnode.dev/%20raw%20`[`%20endraw%20http://localhost:5173%20raw%20`](http://localhost:5173)`%20endraw%20" rel="noreferrer noopener"&gt;&lt;code&gt;localhost:5173&lt;/code&gt;](&lt;/a&gt;&lt;a href="http://localhost:5173" rel="noreferrer noopener"&gt;localhost:5173&lt;/a&gt;)`` in your browser to visualise your freshly created application.&lt;/p&gt;

&lt;p&gt;If your project is a Vue 3 Typescript project create &lt;code&gt;shims-vue.d.ts&lt;/code&gt; file and add the following code:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/* eslint-disable */
declare module '*.vue' {
  import type { DefineComponent } from 'vue';
  const component: DefineComponent&amp;lt;{}, {}, any&amp;gt;;
  export default component;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This will allow you to import vue components.&lt;/p&gt;

&lt;h3 id="heading-step-5-install-tolgee-package"&gt;&lt;a href="https://gunkev.hashnode.dev/how-to-localize-your-vue-application-with-tolgee#heading-step-5-install-tolgee-package" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="heading-step-5-install-tolgee-package"&gt;Step 5: Install Tolgee Package&lt;/h3&gt;

&lt;p&gt;Now use the command below to install Tolgee.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;cd vue-tolgee
npm install @tolgee/vue
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="heading-step-6-add-environment-variable"&gt;&lt;a href="https://gunkev.hashnode.dev/how-to-localize-your-vue-application-with-tolgee#heading-step-6-add-environment-variable" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="heading-step-6-add-environment-variable"&gt;Step 6: Add Environment Variable:&lt;/h3&gt;

&lt;p&gt;Create &lt;code&gt;env.development.local&lt;/code&gt; file if you don’t have one at the root of your project and paste the following code&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;VUE_APP_TOLGEE_API_URL=&amp;lt;host&amp;gt;
VUE_APP_TOLGEE_API_KEY=&amp;lt;Only new key can be revealed&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;VUE_APP_TOLGEE_API_URL&lt;/code&gt; is where your Tolgee server is hosted&lt;/p&gt;

&lt;p&gt;&lt;code&gt;VUE_APP_TOLGEE_API_KEY&lt;/code&gt; is your API key. If somehow you lost the API key you generated earlier, you can regenerate a new one.&lt;/p&gt;

&lt;p&gt;Click on your profile picture at the top right corner of the dashboard&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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A700%2F0%2A3Xs9Q3NXevRUiEol.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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A700%2F0%2A3Xs9Q3NXevRUiEol.png" alt="" width="700" height="1141"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then &lt;code&gt;Select Project API Keys&lt;/code&gt;. In the new window that opens, either you add a new API key or you generate a new one. Make sure to save the API key somewhere this time in case you failed to do it previously.&lt;/p&gt;

&lt;p&gt;Once your API key is ready, you can now add it to your env file.&lt;/p&gt;

&lt;h3 id="heading-step-7-initialize-tolgee"&gt;&lt;a href="https://gunkev.hashnode.dev/how-to-localize-your-vue-application-with-tolgee#heading-step-7-initialize-tolgee" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="heading-step-7-initialize-tolgee"&gt;Step 7: Initialize Tolgee&lt;/h3&gt;

&lt;p&gt;Update your &lt;code&gt;main.ts&lt;/code&gt; found at the root of your project with the following code:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;import './assets/main.css';
import { createApp } from 'vue';
import App from './App.vue';
import {
  BackendFetch,
  DevTools,
  Tolgee,
  FormatSimple,
  VueTolgee,
} from '@tolgee/vue';

const tolgee = Tolgee()
  .use(DevTools())
  .use(FormatSimple())
  .use(BackendFetch())
  .init({
    language: 'en',
    apiUrl: import.meta.env.VITE_TOLGEE_API_URL,
    apiKey: import.meta.env.VITE_TOLGEE_API_KEY,
  });
const app = createApp(App);
app.use(VueTolgee, { tolgee });
app.mount('#app');
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then wrap your code in &lt;code&gt;src/app.vue&lt;/code&gt; in &lt;code&gt;TolgeeProvider&lt;/code&gt; tag like below:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;template&amp;gt;
  &amp;lt;TolgeeProvider&amp;gt;
    &amp;lt;header&amp;gt;
      &amp;lt;img
        alt="Vue logo"
        class="logo"
        src="./assets/logo.svg"
        width="125"
        height="125"
      /&amp;gt;
      &amp;lt;div class="wrapper"&amp;gt;
        &amp;lt;HelloWorld msg="You did it!" /&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/header&amp;gt;
    &amp;lt;main&amp;gt;
      &amp;lt;TheWelcome /&amp;gt;
    &amp;lt;/main&amp;gt;
  &amp;lt;/TolgeeProvider&amp;gt;
&amp;lt;/template&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="heading-step-8-add-translations"&gt;&lt;a href="https://gunkev.hashnode.dev/how-to-localize-your-vue-application-with-tolgee#heading-step-8-add-translations" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="heading-step-8-add-translations"&gt;Step 8: Add Translations&lt;/h3&gt;

&lt;p&gt;Now head to your Tolgee server and add some translations. In this tutorial, you will be translating the default Vue 3 starting application so for each text, add a keyname, and add the default English text. Make sure to &lt;a href="https://tolgee.io/blog/naming-translation-keys" rel="noreferrer noopener"&gt;conventionally name your translations&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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A700%2F0%2AFItDSCk2-zF997h8.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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A700%2F0%2AFItDSCk2-zF997h8.png" alt="" width="700" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then click on the French and Spanish input to select a translation from the &lt;a href="https://tolgee.io/blog/tolgee-ai-translator" rel="noreferrer noopener"&gt;machine-generated translations&lt;/a&gt; that best describes the text. You can adjust if you feel that the text does not fit its context.&lt;/p&gt;

&lt;p&gt;Repeat this process until all translations are added. In the end, you should see the list of translations 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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A700%2F0%2Ac3Efn7wpzP69xDNk.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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A700%2F0%2Ac3Efn7wpzP69xDNk.png" alt="" width="700" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="heading-step-9-create-a-select-component"&gt;&lt;a href="https://gunkev.hashnode.dev/how-to-localize-your-vue-application-with-tolgee#heading-step-9-create-a-select-component" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="heading-step-9-create-a-select-component"&gt;Step 9: Create a Select Component&lt;/h3&gt;

&lt;p&gt;The select component will help you easily switch from one language to another. In your &lt;code&gt;src/components&lt;/code&gt; created &lt;code&gt;selector.vue&lt;/code&gt; file and add the following code:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;script setup&amp;gt;
import { useTolgee } from '@tolgee/vue'
const tolgee = useTolgee(['language'])
const changeLanguage = (e) =&amp;gt; {
  tolgee.value.changeLanguage(e.target.value)
}
&amp;lt;/script&amp;gt;
&amp;lt;template&amp;gt;
  &amp;lt;select :value="tolgee.getLanguage()" v-on:change="changeLanguage" class="selector"&amp;gt;
    &amp;lt;option value="en"&amp;gt;🇬🇧 English&amp;lt;/option&amp;gt;
    &amp;lt;option value="fr"&amp;gt;🇫🇷 Français&amp;lt;/option&amp;gt;
    &amp;lt;option value="es"&amp;gt;🇪🇸 Español&amp;lt;/option&amp;gt;
  &amp;lt;/select&amp;gt;
&amp;lt;/template&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now let’s give some style to the select tag with the following code in &lt;code&gt;src/assets.main.css&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;.selector {
  display: block;
  text-align: center;
  width: 80%;
  padding: 10px;
  border-radius: 5px;
  font-size: 18px;
  border: none;
  background: rgba(0, 255, 255, 0.51);
  -webkit-appearance: none;
  -moz-appearance: none;
  text-indent: 1px;
  text-overflow: '';
  cursor: pointer;
  margin-left: 10px;
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="heading-step-10-add-translation-keynames"&gt;&lt;a href="https://gunkev.hashnode.dev/how-to-localize-your-vue-application-with-tolgee#heading-step-10-add-translation-keynames" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;h3 id="heading-step-10-add-translation-keynames"&gt;Step 10: Add Translation Keynames&lt;/h3&gt;

&lt;p&gt;This is the last step which consists of adding translation keynames. A typical translation looks like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;import { T } from '@tolgee/vue';

&amp;lt;T keyName="documentation" defaultValue="Documentation" /&amp;gt;;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;So in your &lt;code&gt;src/components/TheWelcome.vue&lt;/code&gt; replace your code with the following:&lt;/p&gt;

&lt;p&gt;And &lt;code&gt;src/components/HelloWorld.vue&lt;/code&gt; add:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;script setup lang="ts"&amp;gt;
import { T } from '@tolgee/vue'
...
&amp;lt;/script&amp;gt;

&amp;lt;template&amp;gt;
  &amp;lt;div class="greetings"&amp;gt;
   ...
    &amp;lt;h3&amp;gt;
      &amp;lt;T keyName="success" defaultValue="You've successfully created a project with Vite + Vue 3" /&amp;gt;
    &amp;lt;/h3&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/template&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Finally, update your &lt;code&gt;App.vue&lt;/code&gt; file with the code below:&lt;/p&gt;

&lt;p&gt;In the code block above, we have updated our components imports and added the &lt;code&gt;Selector&lt;/code&gt; component we created earlier.&lt;/p&gt;

&lt;p&gt;But there is one last thing we need to do, which is to add our translation files to the Vue project.&lt;/p&gt;

&lt;p&gt;In your Tolgee dashboard, click on export in the left menu, then select the languages you wish to use and click on export.&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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A700%2F0%2AGh2Nh66jn-M2YRBj.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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A700%2F0%2AGh2Nh66jn-M2YRBj.png" alt="" width="700" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create i18n folder in your Vue application public folder and add the extracted files&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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A700%2F0%2AqUu9223BpJ7mwSSy.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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A700%2F0%2AqUu9223BpJ7mwSSy.png" alt="" width="700" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;utilis/i18n/en.json&lt;/code&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  "documentation": "Documentation",
  "documentation_desc": "Vue’s official documentation provides you with all information you need to get started.",
  "tooling": "Tooling",
  "tooling_desc": "This project is served and bundled with Vite. The recommended IDE setup is VSCode + Volar. If you need to test your components and web pages, check out Cypress and Cypress Component Testing. More instructions are available in README.md.",
  "ecosystem": "Ecosystem",
  "ecosystem_desc": "Get official tools and libraries for your project: Pinia, Vue Router, Vue Test Utils, and Vue Dev Tools. If you need more resources, we suggest paying Awesome Vue a visit. ",
  "community": "Community",
  "community_desc": "Got stuck? Ask your question on Vue Land, our official Discord server, or StackOverflow. You should also subscribe to our mailing list and follow the official @vuejs twitter account for latest news in the Vue world. ",
  "support Vue": "Support Vue",
  "support Vue_desc": "As an independent project, Vue relies on community backing for its sustainability. You can help us by becoming a sponsor. "
    "readme": "More instructions are available in README.md.",
  "success": "You’ve successfully created a project with Vite + Vue 3",
  "hello": "Hello"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;utilis/i18n/fr.json&lt;/code&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  "documentation": "Documentación",
  "documentation_desc": "La documentation officielle de Vue vous fournit toutes les informations dont vous avez besoin pour commencer.",
  "tooling": "Outillage",
  "tooling_desc": "Ce projet est servi et groupé avec Vite. La configuration IDE recommandée est VSCode + Volar. Si vous avez besoin de tester vos composants et vos pages Web, consultez Cypress et Cypress Component Testing. Plus d'instructions sont disponibles dans README.md.",
  "ecosystem": "Écosystème",
  "ecosystem_desc": "Obtenez des outils et des bibliothèques officiels pour votre projet : Pinia, Vue Router, Vue Test Utils et Vue Dev Tools. Si vous avez besoin de plus de ressources, nous vous suggérons de rendre visite à Awesome Vue.",
  "community": "Communauté",
  "community_desc": "Est resté coincé? Posez votre question sur Vue Land, notre serveur Discord officiel, ou StackOverflow. Vous devez également vous inscrire à notre liste de diffusion et suivre le compte Twitter officiel @vuejs pour les dernières nouvelles du monde Vue.",
  "support Vue": "Soutenir Vue",
  "support Vue_desc": "En tant que projet indépendant, Vue s'appuie sur le soutien de la communauté pour sa durabilité. Vous pouvez nous aider en devenant parrain.",
  "readme": "Plus d'instructions sont disponibles dans README.md.",
  "success": "Vous avez réussi à créer un projet avec Vite + Vue 3",
  "hello": "Bonjour"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;utilis/i18n/es.json&lt;/code&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  "documentation": "Documentación",
  "documentation_desc": "La documentación oficial de Vue le brinda toda la información que necesita para comenzar.",
  "tooling": "Estampación",
  "tooling_desc": "Este proyecto se sirve y se incluye con Vite. La configuración IDE recomendada es VSCode + Volar. Si necesita probar sus componentes y páginas web, consulte Cypress y Cypress Component Testing. Más instrucciones están disponibles en README.md.",
  "ecosystem": "Ecosistema",
  "ecosystem_desc": "Obtenga herramientas y bibliotecas oficiales para su proyecto: Pinia, Vue Router, Vue Test Utils y Vue Dev Tools. Si necesita más recursos, le sugerimos que visite Awesome Vue. ",
  "community": "Comunidad",
  "community_desc": "¿Quedó atascado? Haga su pregunta en Vue Land, nuestro servidor oficial de Discord o StackOverflow. También debe suscribirse a nuestra lista de correo y seguir la cuenta oficial de Twitter @vuejs para conocer las últimas noticias en el mundo de Vue. ",
  "support Vue": "Soporte Vue",
  "support Vue_desc": "Como proyecto independiente, Vue depende del respaldo de la comunidad para su sostenibilidad. Puedes ayudarnos convirtiéndote en patrocinador. ",
  "readme": "Hay más instrucciones disponibles en README.md.",
  "success": "Ha creado con éxito un proyecto con Vite + Vue 3",
  "hello": "Hola"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you re-run your application, it should be working perfectly like the screenshot below:&lt;/p&gt;

&lt;p&gt;You can find the full working code in this &lt;a href="https://github.com/Gunkev/vue-tolgee/tree/main" rel="noreferrer noopener"&gt;GitHub Repository&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>opensource</category>
      <category>beginners</category>
      <category>translation</category>
    </item>
    <item>
      <title>What is Open Source Software? A Beginner’s Guide</title>
      <dc:creator>Gun</dc:creator>
      <pubDate>Thu, 29 Jun 2023 12:27:56 +0000</pubDate>
      <link>https://dev.to/gunkev/what-is-open-source-software-a-beginners-guide-5o9</link>
      <guid>https://dev.to/gunkev/what-is-open-source-software-a-beginners-guide-5o9</guid>
      <description>&lt;h2&gt;Introduction&lt;/h2&gt;

&lt;p&gt;If you have been in the tech industry for a while you may have heard about open source or open source software. When we talk about open source, you should think of open collaboration, open exchange, participation transparency and community-oriented development.&lt;/p&gt;

&lt;p&gt;In this article, you will learn more about open source software including the difference between open source and other forms of software, key features of OSS, pros and cons of open source, how to start contributing to open source and some examples of OSS.&lt;/p&gt;

&lt;h2&gt;What is Open Source?&lt;/h2&gt;

&lt;p&gt;Open source designed any program whose source code can be modified and shared by anyone because it’s openly accessible. &lt;/p&gt;

&lt;h2&gt;What is Source Code?&lt;/h2&gt;

&lt;p&gt;A source code is a set of instructions written in the form of functions, descriptions, methods, calls or any other operational statement by a programmer using a computer programming language. A source code can be open that is available to anyone to edit and redistribute or closed. Source code is the part that most software or computer users cannot see.&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%2Fwww.learn-dev-tools.blog%2Fwp-content%2Fuploads%2F2023%2F03%2Fsource-code-medusa-js-github-1024x567.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%2Fwww.learn-dev-tools.blog%2Fwp-content%2Fuploads%2F2023%2F03%2Fsource-code-medusa-js-github-1024x567.png" alt="Example of a Source code taken from Medusa's GitHub Repository " width="800" height="442"&gt;&lt;/a&gt;Example of a Source code taken from Medusa's GitHub Repository &lt;/p&gt;



&lt;h2&gt;What Does Open Source Software(OSS) Mean?&lt;/h2&gt;

&lt;p&gt;The term Open source software is a non-proprietary software in which code is publicly available to anyone to inspect, comment on, modify, improve and redistribute it. Open source software is created and maintained by a group of developers so if you are new to computer programming, you can begin your journey as an open source contributor.&lt;/p&gt;

&lt;p&gt;I have known open source since 2017 and started with my first contribution in 2020. I made my first contributions to the &lt;a href="https://github.com/apache" rel="noreferrer noopener"&gt;Apache Software Foundation&lt;/a&gt; Gihhub and &lt;a href="https://github.com/mozilla-mobile" rel="noreferrer noopener"&gt;Mozilla mobile Github&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;What is the Difference between Open source Software and other Types of Software?&lt;/h2&gt;

&lt;p&gt;Do not get confused with open source, free, closed software and freeware. This section highlights the differences between these types of Software.&lt;/p&gt;

&lt;h3&gt;Open Source vs Free Software&lt;/h3&gt;

&lt;p&gt;Open source software is software available for anyone to edit, improve and redistribute. The source code is accessible to anyone. Open source promotes collaboration and sharing of source code. It’s an effective way for organizations, developers and individuals to collaborate. Freedom to use the software is not absolute or imposed but it’s allowed. Every open source software is not free. However, some open source licenses are restrictive. &lt;strong&gt;WordPress&lt;/strong&gt; is an example of open source software&lt;/p&gt;

&lt;p&gt;Free Software describes software in which source code is free to use, edit and redistribute without any restrictions. With free software, Freedom is a value that is more important than any other thing. All free software is open source software. &lt;strong&gt;Ares is an example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open source and free software have distinguished features. Some open source software is restrictive and all free software are open source software but not all open source software is free software. &lt;/p&gt;

&lt;h3&gt;Open Source Software vs Freeware&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.learn-dev-tools.blog/what-is-a-free-tool-all-you-should-know/" rel="noopener noreferrer"&gt;Freeware&lt;/a&gt;&lt;/strong&gt; is any software that is free to use and available to the general public. If you are a, it can be frustrating to use freeware because its source code is not open or rather, it’s closed so you can edit the software to fit your needs. You can only use the features it offers even if it it is limited. Google Chrome is an example of freeware&lt;/p&gt;

&lt;p&gt;While with open source software, you have the possibility to edit, improve, and add different features to fit your needs. An example is Chromium.&lt;/p&gt;

&lt;p&gt;Freeware source code is closed, only the developer or organization who created the software can view its source code while open source one can edit and redistribute. Freeware is copyrighted while Open source is not.&lt;/p&gt;

&lt;h3&gt;Open Source vs Proprietary Software&lt;/h3&gt;

&lt;p&gt;You do not need an authenticated license to use open source software. They function with GNU Public License. They can be installed freely on any computer system. Open source software is developed and maintained through open collaboration.&lt;/p&gt;

&lt;p&gt;Proprietary Software is software with protected source code(closed). They cannot be installed on a computer without a valid license. So users need a valid and authenticated license to use it. They are also copyrighted like freeware but the difference is that you do not need to pay to use freeware. An example is Windows&lt;/p&gt;

&lt;h2&gt;Key features of Open Source Software&lt;/h2&gt;

&lt;p&gt;In this section, I will elaborate on the various key features and values that cover Open source Software.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Transparency: &lt;/strong&gt;Open source allows you to track and understand any changes made to software without relying on the software manufacturer. &lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Collaboration&lt;/strong&gt;: The main goal of the open source initiative is to allow anyone to freely participate and improve the software. By working together, we can easily identify and solve problems&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Meritocracy&lt;/strong&gt;: Including diverse perspectives from different brains can help identify the best ideas by decision-makers and could equally determine the success of a project.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Community&lt;/strong&gt;: When many people gather to help and share ideas, it creates a community where each other can get support.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Review&lt;/strong&gt;: Since source code is freely available to the public, different experimented community members can check, propose ideas and improve the software.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Reliability&lt;/strong&gt;: Many collaborators can update and test the code to check if there is any bug and fix it. Open sources do not depend on one, two or three people to maintain but rather have a large community that supports them.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Flexibility&lt;/strong&gt;: Flexibility refers to the fact that you can use open source code to address problems that are unique to your business. Plus you can rely on community help to improve an existing solution or implement a new one.&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Lower cost:&lt;/strong&gt; Most of the time, open source is free to use and download. Sometimes you may need to pay for only reinforcing security and interoperability.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;What are the Benefits of Open Source?&lt;/h2&gt;

&lt;p&gt;Choosing to use or contribute to open source software offers many benefits. Some of them include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open source is free&lt;/li&gt;



&lt;li&gt;You have more control over the software. Compare to Closed software you can edit open source software to fit your needs.&lt;/li&gt;



&lt;li&gt;It's good for anyone beginning computer programming. As a beginner, you can become a better programmer by sharing your work and contributing to other works&lt;/li&gt;



&lt;li&gt;Open source is good because it can help to enhance software security as anyone can spot and fix a security issue quickly that the original programmer may have missed&lt;/li&gt;



&lt;li&gt;Open source projects tend to be more stable than other types of software since there is a great community behind ready-to-deploy means to improve it.&lt;/li&gt;



&lt;li&gt;It promotes collaboration through the creation of communities.&lt;/li&gt;



&lt;li&gt;Open source is flexible&lt;/li&gt;



&lt;li&gt;They have Good &lt;strong&gt;Documentation&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;What are the Disadvantages of Open Source Software?&lt;/h2&gt;

&lt;p&gt;Not everyone embraces the open source philosophy. Some organizations still debate the fact that open source software is more vulnerable since their source code is open to anyone.&lt;/p&gt;

&lt;p&gt;I have been in the software community for 3 to 4 years now and I have noticed that they tend to be more secure since issues linked to security or not can easily be identified and fixed by community members. However, I equally notice some drawbacks of open source.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open source software can be difficult to set up, especially for beginners. Some of them may lack user-friendly interfaces imposing you to use a &lt;strong&gt;Terminal&lt;/strong&gt;
&lt;/li&gt;



&lt;li&gt;Liability problems. Open source rarely contains warrant or liability protections&lt;/li&gt;



&lt;li&gt;Compatibility issues. &lt;/li&gt;



&lt;li&gt;Initially, there is no cost but it can be costly in the long term especially if you need immediate support. There is also training cost in case you incorporate the software into your team.&lt;/li&gt;



&lt;li&gt;Not all open source possesses a user manual although you can seek help from the community it won't always be available immediately like commercial software where support is available 24h/7&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;How can you Start Contributing to Open Source?&lt;/h2&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%2Fwww.learn-dev-tools.blog%2Fwp-content%2Fuploads%2F2023%2F03%2FHOW-TO-CONTRIBUTE-TO-OSS-1024x576.webp" 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%2Fwww.learn-dev-tools.blog%2Fwp-content%2Fuploads%2F2023%2F03%2FHOW-TO-CONTRIBUTE-TO-OSS-1024x576.webp" alt="how to contribute to OSS" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;It’s quite simple to contribute to open source software. You could do that by identifying and fixing bugs, adding features, improving documentation and &lt;strong&gt;&lt;a href="https://www.learn-dev-tools.blog/what-is-content-writing-an-easy-beginners-guide/" rel="noopener noreferrer"&gt;writing content&lt;/a&gt;&lt;/strong&gt; in the form of blog posts, technical tutorials or creating Videos. You also create your own open source project to promote open source.&lt;/p&gt;

&lt;p&gt;To contribute to existing open source software, you should head to &lt;strong&gt;&lt;a href="http://github.com" rel="noreferrer noopener"&gt;GitHub&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find a project and Fork&lt;/li&gt;



&lt;li&gt;Clone the Project to your Local machine&lt;/li&gt;



&lt;li&gt;Create a new branch&lt;/li&gt;



&lt;li&gt;Make changes&lt;/li&gt;



&lt;li&gt;Commit your changes&lt;/li&gt;



&lt;li&gt;Push your changes to your remote repository&lt;/li&gt;



&lt;li&gt;Finally, Create a pull request&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you don’t have any project ideas, then open source projects to contribute to include&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/medusajs/medusa" rel="noreferrer noopener"&gt;Medusa&lt;/a&gt; &lt;/li&gt;



&lt;li&gt;&lt;a href="https://github.com/ToolJet/ToolJet" rel="noreferrer noopener"&gt;Tooljet&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://github.com/doczjs/docz" rel="noreferrer noopener"&gt;Docz&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://github.com/boxyhq/jackson" rel="noreferrer noopener"&gt;SAML Jackson&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://github.com/chatwoot/chatwoot" rel="noreferrer noopener"&gt;Chatwoot&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Open Source License&lt;/h2&gt;

&lt;p&gt;An Open source License governs how other individuals besides the initial developer can use, modify and redistribute the software. It allows the software to be transparent and changed by members of a community or third party. According to the &lt;a href="https://opensource.org/licenses/" rel="noreferrer noopener"&gt;Open Source Initiative&lt;/a&gt; include&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://opensource.org/license/apache-2-0/" rel="noreferrer noopener"&gt;Apache License, Version 2.0&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://opensource.org/license/epl-2-0/" rel="noreferrer noopener"&gt;Eclipse Public License version 2.0&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://opensource.org/license/cddl-1-0/" rel="noreferrer noopener"&gt;Common Development and Distribution License 1.0&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://opensource.org/license/lgpl-2-0/" rel="noreferrer noopener"&gt;GNU Library General Public License version 2&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://opensource.org/license/mpl-2-0/" rel="noreferrer noopener"&gt;Mozilla Public License 2.0 (MPL-2.0)&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href="https://opensource.org/license/bsd-2-clause/" rel="noreferrer noopener"&gt;The 2-Clause BSD License&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Example of Open Source Software&lt;/h2&gt;

&lt;p&gt;You might have used an open source software without realising. There are many of them out there. Some popular and most-used open source software is&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;WordPress, an open source CMS for Content Management&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.learn-dev-tools.blog/what-is-the-flutter-framework-a-beginners-introduction-to-flutter/" rel="noopener noreferrer"&gt;Flutter&lt;/a&gt;&lt;/strong&gt; for web, desktop and mobile development&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.learn-dev-tools.blog/what-is-a-css-framework-all-you-need-to-know/" rel="noopener noreferrer"&gt;CSS Frameworks&lt;/a&gt;&lt;/strong&gt; Like Bootstrap for website layout&lt;/li&gt;



&lt;li&gt;VLC Media Player for video and sound player&lt;/li&gt;



&lt;li&gt;Libre Office for word processing&lt;/li&gt;



&lt;li&gt;Open source Linux Operating System&lt;/li&gt;



&lt;li&gt;
&lt;strong&gt;Python&lt;/strong&gt; is open source too.&lt;/li&gt;



&lt;li&gt;Open source reporting tools include Metabase, BIRT&lt;/li&gt;



&lt;li&gt;Open source PDF viewer include Qoppa PDF Studio, pdfFiller, and Soda PDF&lt;/li&gt;



&lt;li&gt;Some Java open source projects are Arduino, Mindustry, and Signal Android&lt;/li&gt;



&lt;li&gt;We equally have open source development tools like Eclipse IDE, and Apache Cordova&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;FAQ&lt;/h2&gt;

&lt;h3&gt;Is Open Source Software Free?&lt;/h3&gt;

&lt;p&gt;Most open source software is free but there are some exceptions. Some open source licenses are restrictive and do not allow the creation of a modified version. An example is Open Source Watcom&lt;/p&gt;

&lt;h3&gt;Where can I find OSS?&lt;/h3&gt;

&lt;p&gt;You can find and download open source projects on SourceForge, OSDN, FossHub, GitHub, and F-Droid&lt;/p&gt;

&lt;h3&gt;Why Should you Contribute to OSS?&lt;/h3&gt;

&lt;p&gt;The most important advantage of contributing to open source is that you can find and collaborate with other developers hence improving your developer network.&lt;/p&gt;

&lt;h3&gt;Why is Open Source Important?&lt;/h3&gt;

&lt;p&gt;Open source improves innovations through collaboration with other organizations and developer&lt;/p&gt;

&lt;h3&gt;What are Some Open Source Competitions?&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Open Source Competitions&lt;/strong&gt; are contests where you can learn to participate in open source projects, demonstrate your coding skills, and get feedback. Examples of Open source competitions include Open Source Contest, &lt;a href="https://summerofcode.withgoogle.com/" rel="noreferrer noopener"&gt;Google Summer of Code (GSoC)&lt;/a&gt;, &lt;a href="https://www.outreachy.org/" rel="noreferrer noopener"&gt;Outreachy&lt;/a&gt;, &lt;a href="https://osoc.be/" rel="noreferrer noopener"&gt;Open Summer of Code&lt;/a&gt;, &lt;a href="https://www.fsf.org/volunteer/internships" rel="noreferrer noopener"&gt;Free Software Foundation (FSF) Internship Program&lt;/a&gt;, &lt;a href="https://gssoc.girlscript.tech/" rel="noreferrer noopener"&gt;GirlScript Summer of Code (GSSoC)&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;What is Closed Source Software?&lt;/h3&gt;

&lt;p&gt;Closed Software is software whose source code is only available to the author. So only the author can modify and copy it.&lt;/p&gt;

&lt;h3&gt;What is the Open Source Initiative?&lt;/h3&gt;

&lt;p&gt;The Open Source Initiative is a non-profit organisation with the main aim to educate about, form, and inform the benefit of open source&lt;/p&gt;

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

&lt;p&gt;Open source is available for anyone to edit, use and redistribute. Some key features of open source include transparency, reliability, available community and flexibility. However, OSS can be costly in a long run. So if you are planning to incorporate OSS into your business you need to include additional or urgent costs in your project plan including the cost of training staff members to use the software. Some popular Open source projects include Apache, WordPress, and Mozilla Firefox.&lt;/p&gt;

&lt;p&gt;If you like this kind of content, feel free to share or subscribe to our newsletter below to get fresh content like this periodically. But if you have any questions, you can reach me via &lt;a href="https://twitter.com/gunkev11oz" rel="noreferrer noopener"&gt;my twitter account&lt;/a&gt;. I will be glad to hear from you.&lt;/p&gt;



</description>
      <category>opensource</category>
      <category>softwareengineering</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Let's Flutter Together Today</title>
      <dc:creator>Gun</dc:creator>
      <pubDate>Thu, 06 Apr 2023 15:00:06 +0000</pubDate>
      <link>https://dev.to/gunkev/lets-flutter-together-today-3d9d</link>
      <guid>https://dev.to/gunkev/lets-flutter-together-today-3d9d</guid>
      <description>&lt;p&gt;Photo by &lt;a href="https://unsplash.com/es/@ruizra?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Randall  Ruiz&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/flutter?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unplash&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nowadays mobile application is growing exponentially. Many people use smartphones these days either for automation, relaxation,  GPS for directions, keep track of appointments and contacts. In fact, many employees and businesses have trouble just imagining a day without a smartphone or mobile device.  As people evolve over time so are the different tools used to build most software found in smartphones. Please note that Flutter is also used to build web and desktop apps. Here I will only focus on mobile applications. Then What is Flutter- Why should you learn Flutter in 2023?&lt;/p&gt;

&lt;p&gt;In this article, I will briefly introduce Flutter to you and list some companies or apps which use or build applications using it.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://flutter.dev" rel="noopener noreferrer"&gt;Flutter&lt;/a&gt; is an &lt;a href="https://www.learn-dev-tools.blog/what-does-open-source-software-mean-a-beginners-guide/" rel="noopener noreferrer"&gt;Open source&lt;/a&gt; toolkit used to build expressively beautiful, natively compiled applications in a single code base. One of its benefits and why I will encourage you to use it in your project is the fact that you can build amazing UI and fancy animations. You also have the possibility to build an app that will run on different operating systems. The factor is commonly known as cross-platform. But apart from this why should you learn Flutter in 2023?&lt;/p&gt;

&lt;h2&gt;Fast Development with Flutter&lt;/h2&gt;

&lt;p&gt;Flutter provides a feature known as hot reload which helps you to quickly build and test your UI as well as fix some bugs related to them without having to re-run the whole app. Flutter framework automatically rebuilds the widget tree in order for you to quickly view the effects of any changes.&lt;/p&gt;

&lt;h2&gt;Native Performance&lt;/h2&gt;

&lt;p&gt;Flutter’s widgets provide most of the native components such as scrolling, navigation, icons and fonts to provide full native performance on both iOS and Android.&lt;/p&gt;

&lt;h2&gt;Flutter, a Wonderful Documentation&lt;/h2&gt;

&lt;p&gt;Even if you are new to mobile development or not flutter offers highly detailed and comprehensive &lt;a href="https://www.learn-dev-tools.blog/an-easy-overview-of-software-documentation/" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; to help developers or none developers acquire the knowledge needed to perform a particular task.&lt;/p&gt;

&lt;h2&gt;Ready-to-use tutorials&lt;/h2&gt;

&lt;p&gt;Truly if you are not still satisfied with the documentation you can go ahead and download tutorials on Udacity, Udemy or any other platform which offers complete mastery tools. These tutorials may help you polish up your skills since they usually contain practical projects.&lt;/p&gt;

&lt;h2&gt;Learn from Developers&lt;/h2&gt;

&lt;p&gt;Learning does not imply learning on your own. There are many developers with outstanding experience as well as forums such as Stack Overflow or GitHub forums to help. Just be humble to yourself and accept to receive and share knowledge with others.&lt;/p&gt;

&lt;h2&gt;Who is using Flutter?&lt;/h2&gt;

&lt;p&gt;I forget to mention it but Google is actually the one who is behind the Flutter framework and many companies around you may know actually use it. Some of those companies are&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://google.com" rel="noopener noreferrer"&gt;Google&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;Groupon,&lt;/li&gt;
&lt;li&gt;EMAAR,&lt;/li&gt;
&lt;li&gt;UNbank,&lt;/li&gt;
&lt;li&gt;Ebay,&lt;/li&gt;
&lt;li&gt;Alibaba group,&lt;/li&gt;
&lt;li&gt;CapitalOne&lt;/li&gt;
&lt;li&gt;Tencent,&lt;/li&gt;
&lt;li&gt;Square,&lt;/li&gt;
&lt;li&gt;SONOS... and many other organizations&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Some applications around us which are built using Flutter...&lt;/h3&gt;

&lt;p&gt;For example, we have,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google Ads at the top of this list,&lt;/li&gt;
&lt;li&gt;Insight Timer,&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.abbeyroad.com/" rel="noopener noreferrer"&gt;Abbey Road Studios,&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Baidu,&lt;/li&gt;
&lt;li&gt;ByteDance,&lt;/li&gt;
&lt;li&gt;Hamilton,&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ahhh! I have just been talking about the positive aspects of Flutter. What about the drawbacks, Well Flutter has a handful number of disadvantages just as it has great abilities.&lt;/p&gt;

&lt;p&gt;So what are its drawbacks? Let's flutter together today to expose them. &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%2Fkr1se8eahtc6l3xpnlfu.gif" 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%2Fkr1se8eahtc6l3xpnlfu.gif" alt="Image description" width="346" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope you were able to learn something from this article and wish this article will help you understand more and choose the right technology that will help you to build awesome apps either with or without Flutter. Take your time to choose and then get started right away.&lt;/p&gt;

&lt;p&gt;Want more? then you could check this &lt;a href="https://www.learn-dev-tools.blog/what-is-the-flutter-framework-a-beginners-introduction-to-flutter/" rel="noopener noreferrer"&gt;detailed article about Flutter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>opensource</category>
      <category>mobile</category>
      <category>beginners</category>
    </item>
    <item>
      <title>WordPress, Yet Another CMS</title>
      <dc:creator>Gun</dc:creator>
      <pubDate>Thu, 06 Apr 2023 14:17:06 +0000</pubDate>
      <link>https://dev.to/gunkev/wordpress-yet-another-cms-5bgh</link>
      <guid>https://dev.to/gunkev/wordpress-yet-another-cms-5bgh</guid>
      <description>&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@markuswinkler?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Markus Winkler&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/wordpress?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I recently talked about &lt;a href="https://dev.to/gunkev/wordpresscom-vs-wordpressorg-which-one-should-you-use-4ho0"&gt;WordPress.com and WordPress.org&lt;/a&gt; in my previous articles and actually I have been getting requests from people asking what WordPress actually is. Today you will finally feel relief cause I will give you a brief introduction to WordPress. So guys sit and get a cup of tea to savour this.&lt;br&gt;
WordPress… just another CMS&lt;/p&gt;

&lt;p&gt;WordPress is actually a free and open source Content Management System written in PHP and associated with MySQL or MariaDB databases. Initially, it was created as a blog publishing-System. But it has evolved to include different web content types (such as online stores, membership websites, forums, and media galleries…).&lt;br&gt;
CMS… What is it?&lt;/p&gt;

&lt;p&gt;Content System Management also known as CMS is simply an application that is used to manage web content. In general, it allows a contributor or contributors to create, edit, publish or destroy content(web pages, articles…). A contributor can be any person who has access to a WordPress Dashboard&lt;/p&gt;

&lt;p&gt;WordPress is equally one of the most popular content system management used today. It has also been used for other application domains such as pervasive display systems.&lt;/p&gt;

&lt;p&gt;The software was released under the GPLv2 license. Founded by an American developer Matt Mullenweg and Mike Little an English developer. WordPress is also called a factory that makes webpages. It comes along with many tools to ease management. Some of these tools include themes and plugins.&lt;/p&gt;

&lt;p&gt;Below you will find a screenshot of a section of WordPress Dashboard&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%2Fk8igv7y49ofzukd57v57.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%2Fk8igv7y49ofzukd57v57.PNG" alt="Image description" width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see in the shot above, the WordPress Dashboard has many tools you can use to manage your web content. To have a better experience just install WordPress and take a look around. If you would like to set up WordPress on your own don’t worry here is a tutorial on how to install it locally.&lt;/p&gt;

&lt;p&gt;To conclude, WordPress is an application used for building web platforms. Be it a blog, a website, or a portfolio, WordPress facilitates and eases your efforts to build such platforms. For example &lt;a href="https://www.tradnow.co" rel="noopener noreferrer"&gt;MangAnime tradnow&lt;/a&gt; and &lt;a href="https://www.learn-dev-tools.blog" rel="noopener noreferrer"&gt;Learndevtools&lt;/a&gt; are two blogs which talks about anime and development build essentially with WordPress&lt;/p&gt;

&lt;p&gt;Last but not least there exist different versions of WordPress. Some of us can use WordPress.com(Practically no coding). Then developers have the chance to get beautiful documentation in order to customize and bring in some innovations with WordPress.org.&lt;/p&gt;

&lt;p&gt;I hope I was able to answer most of your questions guys. Feel free to ask more questions. I will be glad to understand and help you.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>opensource</category>
      <category>wordpress</category>
      <category>cms</category>
    </item>
    <item>
      <title>Medusa Vs Woocommerce: Comparing Two Open source Online Commerce Platforms</title>
      <dc:creator>Gun</dc:creator>
      <pubDate>Mon, 20 Mar 2023 10:57:53 +0000</pubDate>
      <link>https://dev.to/gunkev/medusa-vs-woocommerce-comparing-two-open-source-online-commerce-platforms-4g8g</link>
      <guid>https://dev.to/gunkev/medusa-vs-woocommerce-comparing-two-open-source-online-commerce-platforms-4g8g</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://woocommerce.com" rel="noopener noreferrer"&gt;Woocommerce&lt;/a&gt; is an &lt;a href="https://www.learn-dev-tools.blog/what-does-open-source-software-mean-a-beginners-guide/" rel="noopener noreferrer"&gt;open source&lt;/a&gt;, customizable ecommerce platform built on WordPress. Woocommerce offers features like flexible and secure payment and shipping integration. It is written in PHP which is a universal language that can be used to build complex applications.&lt;/p&gt;

&lt;p&gt;On the other hand, &lt;a href="https://medusajs.com" rel="noopener noreferrer"&gt;Medusa&lt;/a&gt; is an open source composable commerce engine built with Node.Js. It offers out-of-the-box features like multi-currency support, plugin integration support, and tax configurations among many others. Besides these, Medusa is known for its Return Merchandise Authorization (RMA) flows and how it is fully customizable.&lt;/p&gt;

&lt;p&gt;Through this article, you will learn why open source ecommerce tools are essential, how to choose a tool for your ecommerce, and the difference between Woocommerce and Medusa open source online commerce platforms per developer’s experience and the general ecommerce features they offer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an Open Source Ecommerce Platform?
&lt;/h2&gt;

&lt;p&gt;Open source refers to software that has its source code publicly accessible for anyone to see, modify, modify, contribute to, and distribute as they want. An open source ecommerce platform is software that gives you full access to the source code, allowing you to customize the ecommerce platform to meet your needs and equally giving you total control over your store.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Woocommerce?
&lt;/h2&gt;

&lt;p&gt;Woocommerce is a &lt;a href="https://wordpress.org/plugins/woocommerce/" rel="noopener noreferrer"&gt;WordPress plugin&lt;/a&gt; used to build an online store. Woocommerce's first version was launched in 2011 and became extremely popular. In 2014, the plugin hit 4 million downloads.&lt;/p&gt;

&lt;p&gt;At the time of writing this article, Woocommerce has over 5 million active installations and 8.3k stars on GitHub. Woocommerce is a beginner-friendly tool, so you don’t need to be an expert developer to use it. Additionally, there are thousands of free and paid themes on Woocommerce.&lt;/p&gt;

&lt;p&gt;Woocommerce's main aim is to enable you to create an online store with just a few clicks and start selling. Woocommerce runs under WordPress; after creating your Woocommerce account, you will create a &lt;a href="https://wordpress.com/" rel="noopener noreferrer"&gt;WordPress account&lt;/a&gt; and give some permission to Woocommerce before building a store. You will need to set up a WordPress installation before setting up a Woocommerce store. &lt;/p&gt;

&lt;h2&gt;
  
  
  What is Medusa?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.notion.so/Medusa-Vs-Woocommerce-Comparing-Two-Open-source-Online-Commerce-Platforms-d9ed9f2db73c4e6f9d336d7820cd7dcf" rel="noopener noreferrer"&gt;Medusa&lt;/a&gt; is a JavaScript-based open source tool for building online stores. Medusa was launched in 2021, aiming to provide a great experience to developers building an ecommerce platform, using NodeJs as an engine.&lt;/p&gt;

&lt;p&gt;Although Medusa is newer than Woocommerce,  it becomes increasingly popular each day as it’s being adopted by companies and individuals across the world. What attracts businesses and developers mostly is the customization ability Medusa offers.&lt;/p&gt;

&lt;p&gt;Medusa also offers other out-of-the-box features like bulk export and import, creation and management of multiple sales channels, configuration and management of many regions on one platform, addition, customization, and sorting of products into collections, and many more.&lt;/p&gt;

&lt;p&gt;Medusa  is made up of 3 components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;a href="https://docs.medusajs.com/quickstart/quick-start/" rel="noopener noreferrer"&gt;Medusa Server&lt;/a&gt;: It’s a headless backend built on Node.js and it's the main component that contains all the logic and data of the store.&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://docs.medusajs.com/admin/quickstart" rel="noopener noreferrer"&gt;Admin Dashboard&lt;/a&gt;: The store operator uses this component to manage the store, i.e. add, remove and update products, and customize and manage the store settings.&lt;/li&gt;
&lt;li&gt;The Storefront: Here, customers can view products and place orders. By default, Medusa offers 2 storefronts. One is built with &lt;a href="https://docs.medusajs.com/starters/nextjs-medusa-starter" rel="noopener noreferrer"&gt;NextJs&lt;/a&gt; and the other &lt;a href="https://docs.medusajs.com/starters/gatsby-medusa-starter" rel="noopener noreferrer"&gt;Gatsby&lt;/a&gt;, but you could build your own storefront using the &lt;a href="https://docs.medusajs.com/api/store/" rel="noopener noreferrer"&gt;Storefront REST APIs&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Medusa Vs Woocommerce
&lt;/h2&gt;

&lt;p&gt;This section highlights the difference between Medusa and Woocommerce in terms of the general features both offer and the developer’s experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  General Features Comparison
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Payment Gateways
&lt;/h3&gt;

&lt;p&gt;Woocomerce and Medusa allow both developers and businesses to integrate third-party payment solutions. Woocommerce has a variety of ready-made extensions to integrate payment. Most of these payment gateways support Stripe, Paypal, Verifone, Apple Pay, and Amazon Pay.&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%2Fgobg96etcc8bhh9xdce3.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%2Fgobg96etcc8bhh9xdce3.PNG" alt="payment woo commerce" width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Developers can integrate payment methods in their Medusa store using payment providers such as &lt;a href="https://docs.medusajs.com/add-plugins/klarna" rel="noopener noreferrer"&gt;Klarna&lt;/a&gt;, &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; with existing plugins. However, as a developer, you could also create a plugin to integrate other payment methods.&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%2Flh6.googleusercontent.com%2FpKPLMQjg9M9RmGi2fPxoK9ADavJmEaHmtZl6Wt5v2Wxn0BxgCSbnIL3kc6ClETJFzXC_9Zlg0teNpTh6y6RoXNU3cNClVTftGa7ihF8JAFTmqsvQ_XlJeWt0YV6tzebjxuJ85vdTseW-0bwBo6FHjlc-yjQjzoTKdSMPsN31Q3_vPmP6qd-6p31TxvHL8w" 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%2Flh6.googleusercontent.com%2FpKPLMQjg9M9RmGi2fPxoK9ADavJmEaHmtZl6Wt5v2Wxn0BxgCSbnIL3kc6ClETJFzXC_9Zlg0teNpTh6y6RoXNU3cNClVTftGa7ihF8JAFTmqsvQ_XlJeWt0YV6tzebjxuJ85vdTseW-0bwBo6FHjlc-yjQjzoTKdSMPsN31Q3_vPmP6qd-6p31TxvHL8w" alt="https://lh6.googleusercontent.com/pKPLMQjg9M9RmGi2fPxoK9ADavJmEaHmtZl6Wt5v2Wxn0BxgCSbnIL3kc6ClETJFzXC_9Zlg0teNpTh6y6RoXNU3cNClVTftGa7ihF8JAFTmqsvQ_XlJeWt0YV6tzebjxuJ85vdTseW-0bwBo6FHjlc-yjQjzoTKdSMPsN31Q3_vPmP6qd-6p31TxvHL8w" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Live-Chat Integrations
&lt;/h3&gt;

&lt;p&gt;A live chat will help engage more visitors and increase customer satisfaction across many channels.&lt;/p&gt;

&lt;p&gt;Woocommerce offers extensions like &lt;a href="https://woocommerce.com/products/livechat/?quid=cb0d6d6a56c15ac947f1f062efb6b885" rel="noopener noreferrer"&gt;LiveChat&lt;/a&gt; that you can install and set up on your store.  WordPress has many plugins for live chat Integration compatible with Woocommerce and some of them include LiveChat's WordPress Plugin, OLark WordPress Plugin, Tidio WordPress Plugin, &lt;a href="https://www.chatwoot.com/docs/product/channels/live-chat/integrations/wordpress" rel="noopener noreferrer"&gt;Chatwoot&lt;/a&gt;, and WP Social Chat.&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%2Flh5.googleusercontent.com%2FrPzqsSVziC9TrKXUmHppJINR-BPjSc8tN-XuBU5LxJS6eqsf-y1G7MQpxt8K0psyfPXH5V2HJAiE34K-S9yX-cftxqK-LyShdOEnueHHEzA81Ej5_I5w0uzl8-B6I_-reuJINqh_L06sbgCAl1RwZffNXgc0hJSSOSCva1qu40h8P2mb8TcJP14gCczhVg" 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%2Flh5.googleusercontent.com%2FrPzqsSVziC9TrKXUmHppJINR-BPjSc8tN-XuBU5LxJS6eqsf-y1G7MQpxt8K0psyfPXH5V2HJAiE34K-S9yX-cftxqK-LyShdOEnueHHEzA81Ej5_I5w0uzl8-B6I_-reuJINqh_L06sbgCAl1RwZffNXgc0hJSSOSCva1qu40h8P2mb8TcJP14gCczhVg" alt="https://lh5.googleusercontent.com/rPzqsSVziC9TrKXUmHppJINR-BPjSc8tN-XuBU5LxJS6eqsf-y1G7MQpxt8K0psyfPXH5V2HJAiE34K-S9yX-cftxqK-LyShdOEnueHHEzA81Ej5_I5w0uzl8-B6I_-reuJINqh_L06sbgCAl1RwZffNXgc0hJSSOSCva1qu40h8P2mb8TcJP14gCczhVg" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Medusa, on the other hand, offers many ways to &lt;a href="https://medusajs.com/blog/how-to-integrate-live-chat-with-gatsby-tidio-medusa/" rel="noopener noreferrer"&gt;integrate Live Chat with Tidio&lt;/a&gt;, Chatwoot, Zendesk, Hotspot, ChatBot, and many others. In addition, Medusa plugin systems make it easier to &lt;a href="https://docs.medusajs.com/advanced/backend/plugins/create" rel="noopener noreferrer"&gt;create plugins&lt;/a&gt; and integrate with these chat services.&lt;/p&gt;

&lt;h3&gt;
  
  
  Taxes
&lt;/h3&gt;

&lt;p&gt;Woocommerce offers a simple way to manage taxes, but before configuring your tax, you need to enable taxes. You can choose to either include taxes in your product’s prices or charge taxes separately. You can set up taxes to be applied in a specific region.&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%2Flh6.googleusercontent.com%2FvDv9CJBdJfdWri5_mozcdsbmZPueeuQQlbURyv1bLig6FxqVA1Tj5ntpWqLUC9nlP3PCsd465UFL8CrXRsfjfE6P78lfFu6wX25Z75jEByeeLKJdt9UiSlnDwQPu-WZ4ShJLD9mQjo50mXD5W8VmPt5K4HWoy6CLcJNBqDPGVsal72fq-YzLDs6w81vPJA" 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%2Flh6.googleusercontent.com%2FvDv9CJBdJfdWri5_mozcdsbmZPueeuQQlbURyv1bLig6FxqVA1Tj5ntpWqLUC9nlP3PCsd465UFL8CrXRsfjfE6P78lfFu6wX25Z75jEByeeLKJdt9UiSlnDwQPu-WZ4ShJLD9mQjo50mXD5W8VmPt5K4HWoy6CLcJNBqDPGVsal72fq-YzLDs6w81vPJA" alt="https://lh6.googleusercontent.com/vDv9CJBdJfdWri5_mozcdsbmZPueeuQQlbURyv1bLig6FxqVA1Tj5ntpWqLUC9nlP3PCsd465UFL8CrXRsfjfE6P78lfFu6wX25Z75jEByeeLKJdt9UiSlnDwQPu-WZ4ShJLD9mQjo50mXD5W8VmPt5K4HWoy6CLcJNBqDPGVsal72fq-YzLDs6w81vPJA" width="800" height="400"&gt;&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%2Flh4.googleusercontent.com%2Fqchh2VuEGFGUhFK-d5TWyKrxVPmyBTvpKwvGCoasahr7d0ppNcBmfHK4YODPw7EzTxlcQfY8bVWhNCOB20X9LqdqQxaIk-lHflQvyZIUEimE6TLBmagE9s6apAm1crePpHD7cmA4qgH_Vu2vfVA0guWvC2nzlfSihvPTdHHKmo8t3FSD9Y2HRlr8-82kbw" 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%2Flh4.googleusercontent.com%2Fqchh2VuEGFGUhFK-d5TWyKrxVPmyBTvpKwvGCoasahr7d0ppNcBmfHK4YODPw7EzTxlcQfY8bVWhNCOB20X9LqdqQxaIk-lHflQvyZIUEimE6TLBmagE9s6apAm1crePpHD7cmA4qgH_Vu2vfVA0guWvC2nzlfSihvPTdHHKmo8t3FSD9Y2HRlr8-82kbw" alt="https://lh4.googleusercontent.com/qchh2VuEGFGUhFK-d5TWyKrxVPmyBTvpKwvGCoasahr7d0ppNcBmfHK4YODPw7EzTxlcQfY8bVWhNCOB20X9LqdqQxaIk-lHflQvyZIUEimE6TLBmagE9s6apAm1crePpHD7cmA4qgH_Vu2vfVA0guWvC2nzlfSihvPTdHHKmo8t3FSD9Y2HRlr8-82kbw" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.medusajs.com/user-guide/taxes/" rel="noopener noreferrer"&gt;Taxes&lt;/a&gt; are available out-of-the-box in Medusa. Like Woocommerce, you can manage taxes in specific regions as well as add multiple tax rates.&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%2Flh4.googleusercontent.com%2Fap3ycJfK_XD7Cy25t_2omrSR9TQEG5bYzDekDZVoacSApuQ-LCbpV4F_vwIIhd9_YB2kqdnSX_lggYlJHbflXpZc4WnJ0tx9Vz_tnpQ7iASVjmGXgDJVOFOWDXIWzVF4thu3qth3T6-QHUQjsXQtNs-c-M_6JhtyAzya8q5DOpnwbhsi3rDAW6YJ8vo0QQ" 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%2Flh4.googleusercontent.com%2Fap3ycJfK_XD7Cy25t_2omrSR9TQEG5bYzDekDZVoacSApuQ-LCbpV4F_vwIIhd9_YB2kqdnSX_lggYlJHbflXpZc4WnJ0tx9Vz_tnpQ7iASVjmGXgDJVOFOWDXIWzVF4thu3qth3T6-QHUQjsXQtNs-c-M_6JhtyAzya8q5DOpnwbhsi3rDAW6YJ8vo0QQ" alt="https://lh4.googleusercontent.com/ap3ycJfK_XD7Cy25t_2omrSR9TQEG5bYzDekDZVoacSApuQ-LCbpV4F_vwIIhd9_YB2kqdnSX_lggYlJHbflXpZc4WnJ0tx9Vz_tnpQ7iASVjmGXgDJVOFOWDXIWzVF4thu3qth3T6-QHUQjsXQtNs-c-M_6JhtyAzya8q5DOpnwbhsi3rDAW6YJ8vo0QQ" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Medusa provides a &lt;a href="https://docs.medusajs.com/api/admin/#tag/Tax-Rate" rel="noopener noreferrer"&gt;Tax API&lt;/a&gt; to developers that allow them to further integrate third-party services.&lt;/p&gt;

&lt;h3&gt;
  
  
  RMA Flows
&lt;/h3&gt;

&lt;p&gt;Woocommerce offers a powerful and reliable RMA tool for selling, managing, processing warranties, and handling return requests within your Woocommerce store. However, you need to download the &lt;a href="https://woocommerce.com/document/warranty-and-returns/" rel="noopener noreferrer"&gt;Woocommerce Product RMA&lt;/a&gt;, install, activate and configure it. Unfortunately, this product is not free.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.medusajs.com/user-guide/orders/" rel="noopener noreferrer"&gt;RMA Flows&lt;/a&gt; are available out-of-the-box in Medusa and customers can send requests to return items from an ecommerce store. The admin or store operator can manage the order status, shipping, and payment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shipping
&lt;/h3&gt;

&lt;p&gt;Woocommerce allows you to set up shipping zones and add methods to those zones and rates to your shipping methods. Users can create as many zones as possible and add methods and rates.&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%2Flh5.googleusercontent.com%2FyfE5MhBemMrsdApJY1LAnChSx_0EOYWrMo5-QMRE5hksyLSAzxSqFO9gRnWqgOwXIz1MVTYRIBbTyhetmvT2kc6HswxUkMzfDiipQcNK6OFPTYXO1nZ3nMSBl837Mih7P3paKdh_WiIBdhI68YLGRMQcrfVithx5OjNCNWIw36q5e71_cf5adHkX4u9XAA" 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%2Flh5.googleusercontent.com%2FyfE5MhBemMrsdApJY1LAnChSx_0EOYWrMo5-QMRE5hksyLSAzxSqFO9gRnWqgOwXIz1MVTYRIBbTyhetmvT2kc6HswxUkMzfDiipQcNK6OFPTYXO1nZ3nMSBl837Mih7P3paKdh_WiIBdhI68YLGRMQcrfVithx5OjNCNWIw36q5e71_cf5adHkX4u9XAA" alt="https://lh5.googleusercontent.com/yfE5MhBemMrsdApJY1LAnChSx_0EOYWrMo5-QMRE5hksyLSAzxSqFO9gRnWqgOwXIz1MVTYRIBbTyhetmvT2kc6HswxUkMzfDiipQcNK6OFPTYXO1nZ3nMSBl837Mih7P3paKdh_WiIBdhI68YLGRMQcrfVithx5OjNCNWIw36q5e71_cf5adHkX4u9XAA" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Medusa allows developers to integrate third-party providers like WebShipping. &lt;a href="https://docs.medusajs.com/user-guide/regions/shipping-options/" rel="noopener noreferrer"&gt;Medusa has 4 components in its shipping architecture&lt;/a&gt;: fulfillment provider*&lt;em&gt;,&lt;/em&gt;*  &lt;a href="https://docs.medusajs.com/user-guide/regions/shipping-options/" rel="noopener noreferrer"&gt;shipping options&lt;/a&gt;, shipping methods, and shipping profiles which are the highest in the hierarchy of shipping. However, developers can equally create plugins to manage any shipping provider.&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%2Flh4.googleusercontent.com%2FFovmJ3Wg-kquTFWru2h22QVSVUKPNwq40q_dxzIIpd5gX9J1UIcQTfpZNBAI1FB_J6zVjWXl_lsnfvgkvZrCiSByOPxb5-pL0xc244102QL4c9k_zSQMNTRA_b0I78eNm-NZuvHM92qjsuMxt46hXiHWWQNOicNgZx-a10gXM6tP__dF8pN3cVsCzu8Wkw" 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%2Flh4.googleusercontent.com%2FFovmJ3Wg-kquTFWru2h22QVSVUKPNwq40q_dxzIIpd5gX9J1UIcQTfpZNBAI1FB_J6zVjWXl_lsnfvgkvZrCiSByOPxb5-pL0xc244102QL4c9k_zSQMNTRA_b0I78eNm-NZuvHM92qjsuMxt46hXiHWWQNOicNgZx-a10gXM6tP__dF8pN3cVsCzu8Wkw" alt="https://lh4.googleusercontent.com/FovmJ3Wg-kquTFWru2h22QVSVUKPNwq40q_dxzIIpd5gX9J1UIcQTfpZNBAI1FB_J6zVjWXl_lsnfvgkvZrCiSByOPxb5-pL0xc244102QL4c9k_zSQMNTRA_b0I78eNm-NZuvHM92qjsuMxt46hXiHWWQNOicNgZx-a10gXM6tP__dF8pN3cVsCzu8Wkw" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Admin Dashboard
&lt;/h3&gt;

&lt;p&gt;Woocommerce does not have an admin dashboard on its own but rather uses the WordPress dashboard since it’s functionally built to use WordPress. When you install the plugin, the Woocommerce menu appears on the sidebar of the WordPress dashboard. &lt;/p&gt;

&lt;p&gt;The dashboard is simple and allows you to manage products, orders, Extensions, Reports, and other features. You need to know how the WP admin dashboard works to use Woocommerce.&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%2Flh4.googleusercontent.com%2FYrJ0A8wgvxPas5rBXD535RQTvy9iAZOeJHfAdjxZheZnmDVeU1FP1vrMG42D0eoRbYDlHqw8CakAprg55__K50vmT4H1xE6l-YVVkEbcS0sB7c6q6_twIaWs42ysJDIBqvLNYQmVwKgc2raLBUfmLUvE0UPYOz7Cfxw6b7Ga330hQZ0pc_KTuT06-ulfGw" 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%2Flh4.googleusercontent.com%2FYrJ0A8wgvxPas5rBXD535RQTvy9iAZOeJHfAdjxZheZnmDVeU1FP1vrMG42D0eoRbYDlHqw8CakAprg55__K50vmT4H1xE6l-YVVkEbcS0sB7c6q6_twIaWs42ysJDIBqvLNYQmVwKgc2raLBUfmLUvE0UPYOz7Cfxw6b7Ga330hQZ0pc_KTuT06-ulfGw" alt="https://lh4.googleusercontent.com/YrJ0A8wgvxPas5rBXD535RQTvy9iAZOeJHfAdjxZheZnmDVeU1FP1vrMG42D0eoRbYDlHqw8CakAprg55__K50vmT4H1xE6l-YVVkEbcS0sB7c6q6_twIaWs42ysJDIBqvLNYQmVwKgc2raLBUfmLUvE0UPYOz7Cfxw6b7Ga330hQZ0pc_KTuT06-ulfGw" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Medusa has a simple and fluent &lt;a href="https://docs.medusajs.com/admin/quickstart" rel="noopener noreferrer"&gt;admin dashboard&lt;/a&gt;. The dashboard allows you to manage products, price listings, customers, regions, currencies, settings, and many other elements of your store.&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%2Flh6.googleusercontent.com%2FonBj5fpd9Zg6QrWOGCmWXgid97HxXCCjtOdG88_bF0r77CRmhV8kMDo1CROHqL9inOKuYjFYoptBA9G0X7lB0wXzzxerpJNhkQFWCWafCrM0-bRutZnervJypH56sGDR6Frxu3t5x1pHgeZOIceLe3mO4x6xQdA6If93E1GA3_e75f7JgXZJaV1vm_sG0A" 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%2Flh6.googleusercontent.com%2FonBj5fpd9Zg6QrWOGCmWXgid97HxXCCjtOdG88_bF0r77CRmhV8kMDo1CROHqL9inOKuYjFYoptBA9G0X7lB0wXzzxerpJNhkQFWCWafCrM0-bRutZnervJypH56sGDR6Frxu3t5x1pHgeZOIceLe3mO4x6xQdA6If93E1GA3_e75f7JgXZJaV1vm_sG0A" alt="https://lh6.googleusercontent.com/onBj5fpd9Zg6QrWOGCmWXgid97HxXCCjtOdG88_bF0r77CRmhV8kMDo1CROHqL9inOKuYjFYoptBA9G0X7lB0wXzzxerpJNhkQFWCWafCrM0-bRutZnervJypH56sGDR6Frxu3t5x1pHgeZOIceLe3mO4x6xQdA6If93E1GA3_e75f7JgXZJaV1vm_sG0A" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Localization
&lt;/h3&gt;

&lt;p&gt;Woocommerce does not offer localization options on its own. To localize your store, you need to install a plugin like PoEdit, &lt;a href="https://woocommerce.com/document/woocommerce-localization/" rel="noopener noreferrer"&gt;Loco Translate&lt;/a&gt;, or &lt;a href="https://multilingualpress.org/" rel="noopener noreferrer"&gt;MultilingualPress&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Currently, the localization feature is not also available out-of-the-box in Medusa. But it can be implemented using CMS plugins like &lt;a href="https://docs.medusajs.com/add-plugins/contentful/" rel="noopener noreferrer"&gt;Contentful&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Multi-currency Support
&lt;/h3&gt;

&lt;p&gt;Unfortunately, multi-currency is not available out–of–the–box in Woocommerce. To set up multiple currencies in your online store, you need to purchase the &lt;a href="https://woocommerce.com/products/currency-converter-widget/" rel="noopener noreferrer"&gt;Currency Converter Widget&lt;/a&gt; extension and set it up. There are other extensions like Woocommerce Multi-Currency or Multi-Currency Switcher which are also not free.&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%2Flh4.googleusercontent.com%2FvEKitssP-Eck-6Wtn4UtvB67Aoj5X8AP1fjyjXM2rhnFx53zP2QSsqA-MHRRxGMNRHZqsNB4rNelWd9DYB7illMfNz_Sp_zgApveUs-_ttx8dxeW379umTjO8rH6_A71ETdHSLueK61q8UDsvhivg8KtO_uQIp_dX3zapl48Z3_kQ6-BS1UdUYA9M92ggg" 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%2Flh4.googleusercontent.com%2FvEKitssP-Eck-6Wtn4UtvB67Aoj5X8AP1fjyjXM2rhnFx53zP2QSsqA-MHRRxGMNRHZqsNB4rNelWd9DYB7illMfNz_Sp_zgApveUs-_ttx8dxeW379umTjO8rH6_A71ETdHSLueK61q8UDsvhivg8KtO_uQIp_dX3zapl48Z3_kQ6-BS1UdUYA9M92ggg" alt="https://lh4.googleusercontent.com/vEKitssP-Eck-6Wtn4UtvB67Aoj5X8AP1fjyjXM2rhnFx53zP2QSsqA-MHRRxGMNRHZqsNB4rNelWd9DYB7illMfNz_Sp_zgApveUs-_ttx8dxeW379umTjO8rH6_A71ETdHSLueK61q8UDsvhivg8KtO_uQIp_dX3zapl48Z3_kQ6-BS1UdUYA9M92ggg" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Medusa supports the multi-currency feature. A business can set up a region and choose specific regional settings such as currency. Additionally, the business can manage each region from one store, hence eliminating the need to create many stores or switch between them&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%2Flh4.googleusercontent.com%2FVE8PaS7hQTQcP8I12mrA_-KAbDtOKmZ2GCWBb0AAx4bJ8TzLTvZKDReTm4NUatNRkNRNP6w_yWjrQAT8qmxQxJdfRaOCq-KcqI4ak8xZE8_uwJht01RTbVbfDVDhZdEqjY3cYZFAHVX1a10DMT8ECJMr-96KowCMwxIoJ-hk51680v7AAiy_C9popHOn6w" 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%2Flh4.googleusercontent.com%2FVE8PaS7hQTQcP8I12mrA_-KAbDtOKmZ2GCWBb0AAx4bJ8TzLTvZKDReTm4NUatNRkNRNP6w_yWjrQAT8qmxQxJdfRaOCq-KcqI4ak8xZE8_uwJht01RTbVbfDVDhZdEqjY3cYZFAHVX1a10DMT8ECJMr-96KowCMwxIoJ-hk51680v7AAiy_C9popHOn6w" alt="https://lh4.googleusercontent.com/VE8PaS7hQTQcP8I12mrA_-KAbDtOKmZ2GCWBb0AAx4bJ8TzLTvZKDReTm4NUatNRkNRNP6w_yWjrQAT8qmxQxJdfRaOCq-KcqI4ak8xZE8_uwJht01RTbVbfDVDhZdEqjY3cYZFAHVX1a10DMT8ECJMr-96KowCMwxIoJ-hk51680v7AAiy_C9popHOn6w" width="800" height="400"&gt;&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%2Flh5.googleusercontent.com%2FqEDbcmsmsqtGhBIyQz89rbbJpLcm3rF4bLxHUgabCIJqdPYAcxCdlqg9FwSfKkr6WLM0GFEUYC89-zd0VBG2dtsTFkqKbQ3FUD6YFZ31nCs-6_x_YmxuJ6Sp15VKTabool-iGqBiCflxQ3_J2k1WzsVEeChCXN74XZ79xYUsMeGJPg0UhsK-nnruUBLYeA" 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%2Flh5.googleusercontent.com%2FqEDbcmsmsqtGhBIyQz89rbbJpLcm3rF4bLxHUgabCIJqdPYAcxCdlqg9FwSfKkr6WLM0GFEUYC89-zd0VBG2dtsTFkqKbQ3FUD6YFZ31nCs-6_x_YmxuJ6Sp15VKTabool-iGqBiCflxQ3_J2k1WzsVEeChCXN74XZ79xYUsMeGJPg0UhsK-nnruUBLYeA" alt="https://lh5.googleusercontent.com/qEDbcmsmsqtGhBIyQz89rbbJpLcm3rF4bLxHUgabCIJqdPYAcxCdlqg9FwSfKkr6WLM0GFEUYC89-zd0VBG2dtsTFkqKbQ3FUD6YFZ31nCs-6_x_YmxuJ6Sp15VKTabool-iGqBiCflxQ3_J2k1WzsVEeChCXN74XZ79xYUsMeGJPg0UhsK-nnruUBLYeA" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Gift Cards
&lt;/h3&gt;

&lt;p&gt;You can create and sell prepaid multipurpose gift cards to customers, which they can redeem at your store. Gift cards are not available out-of-the-box in Woocommerce. Some Woocommerce gift card extensions require at least version 3.9. of Woocommerce. They are not free of charge.&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%2Flh3.googleusercontent.com%2FvlB-FYpA6UMqBEOjSMTMoxvSFyJySL7W0eP_eWBoiFhZIiGwxNtOca0HJF5F-957fmfhvWC90YgNstj4g5MQcq9m0lzZyVZBCyhpQHoojoyqMt4vIrNc3N8CcEmj1EC7LGuZKz4v86hck9f_bUU3rsshLRqZaoBF9F0-E6fXG7ZuSHGTZbVh21Mhkbxqeg" 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%2Flh3.googleusercontent.com%2FvlB-FYpA6UMqBEOjSMTMoxvSFyJySL7W0eP_eWBoiFhZIiGwxNtOca0HJF5F-957fmfhvWC90YgNstj4g5MQcq9m0lzZyVZBCyhpQHoojoyqMt4vIrNc3N8CcEmj1EC7LGuZKz4v86hck9f_bUU3rsshLRqZaoBF9F0-E6fXG7ZuSHGTZbVh21Mhkbxqeg" alt="https://lh3.googleusercontent.com/vlB-FYpA6UMqBEOjSMTMoxvSFyJySL7W0eP_eWBoiFhZIiGwxNtOca0HJF5F-957fmfhvWC90YgNstj4g5MQcq9m0lzZyVZBCyhpQHoojoyqMt4vIrNc3N8CcEmj1EC7LGuZKz4v86hck9f_bUU3rsshLRqZaoBF9F0-E6fXG7ZuSHGTZbVh21Mhkbxqeg" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gift cards are available in Medusa out-of-the-box. Merchants can specify multiple denominations and images. Customers can then purchase the gift cards as if they were buying a product. However, gift cards are not packaged and shipped like products. Customers can receive it in the form of a link or by email.&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%2Flh6.googleusercontent.com%2FhC2g4pu_hoWSDzs3rPHRTamRbjxtixH1MtPwONRKVDJg1f3HwUDEBE9NJgKJW0OnuR12g6BcUs8oORR2eLffRZHi9ZC1H93gVm0yIEPKNXwjB5yYBAXo3r31cJcirIRiFZTDDIOp9ayxmO9nngKLfPbP86d5pWZuGUgA7AePzbW3hbxNtm7SiJBBhdo4fA" 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%2Flh6.googleusercontent.com%2FhC2g4pu_hoWSDzs3rPHRTamRbjxtixH1MtPwONRKVDJg1f3HwUDEBE9NJgKJW0OnuR12g6BcUs8oORR2eLffRZHi9ZC1H93gVm0yIEPKNXwjB5yYBAXo3r31cJcirIRiFZTDDIOp9ayxmO9nngKLfPbP86d5pWZuGUgA7AePzbW3hbxNtm7SiJBBhdo4fA" alt="https://lh6.googleusercontent.com/hC2g4pu_hoWSDzs3rPHRTamRbjxtixH1MtPwONRKVDJg1f3HwUDEBE9NJgKJW0OnuR12g6BcUs8oORR2eLffRZHi9ZC1H93gVm0yIEPKNXwjB5yYBAXo3r31cJcirIRiFZTDDIOp9ayxmO9nngKLfPbP86d5pWZuGUgA7AePzbW3hbxNtm7SiJBBhdo4fA" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Reporting and Analytics
&lt;/h3&gt;

&lt;p&gt;Woocommerce offers an analytical board where you can view your number of sales, net sales, number of orders, products sold as well as variation sold. You can compare your sales per date and even download your reports for further utilization.&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%2Flh6.googleusercontent.com%2FZhTL19GZWc2gq5djJoRBIxRf3r_FtIT1kWVjpNQCyjuLGorkBtfQfTJtELjADRavRImxQkmMALTCsssP0gIHLDjdQOaVx04tON2TC-thlSo-sLuIo2dx1n-wWZAUPtw1OQVhSW5qJ7u7G8ff-X1pxl7baUa4docpRXA-u748JSzI8QSUIJRtKz08upHDJQ" 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%2Flh6.googleusercontent.com%2FZhTL19GZWc2gq5djJoRBIxRf3r_FtIT1kWVjpNQCyjuLGorkBtfQfTJtELjADRavRImxQkmMALTCsssP0gIHLDjdQOaVx04tON2TC-thlSo-sLuIo2dx1n-wWZAUPtw1OQVhSW5qJ7u7G8ff-X1pxl7baUa4docpRXA-u748JSzI8QSUIJRtKz08upHDJQ" alt="https://lh6.googleusercontent.com/ZhTL19GZWc2gq5djJoRBIxRf3r_FtIT1kWVjpNQCyjuLGorkBtfQfTJtELjADRavRImxQkmMALTCsssP0gIHLDjdQOaVx04tON2TC-thlSo-sLuIo2dx1n-wWZAUPtw1OQVhSW5qJ7u7G8ff-X1pxl7baUa4docpRXA-u748JSzI8QSUIJRtKz08upHDJQ" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Right now, Medusa does not provide any analytic module but developers can use third-party services to add analytical features. Fortunately, with the flexibility Medusa offers, developers can easily implement and &lt;a href="https://docs.medusajs.com/advanced/backend/plugins/overview/" rel="noopener noreferrer"&gt;integrate third-party services&lt;/a&gt; in their store.&lt;/p&gt;

&lt;h3&gt;
  
  
  Speed and Performance
&lt;/h3&gt;

&lt;p&gt;The process of creating a store with Woocommerce is quite fast. With a few clicks, you will have your store set up and ready to sell. If you need to measure the speed and performance in terms of the tools used to build the frontend and backend, this will be different since Woocommerce is not a headless commerce. You can optimize the speed and performance of your store in various ways.&lt;/p&gt;

&lt;p&gt;For example, if you decide to use a lighter framework or just pure CSS rather than using Bootstrap, the number of stylesheet files will considerably reduce, and the pages will load rapidly increasing user experience as well as some &lt;a href="https://www.learn-dev-tools.blog/topics/search-engine-optimization/" rel="noopener noreferrer"&gt;SEO&lt;/a&gt; factors hence improving the speed ad performance of your store&lt;/p&gt;

&lt;p&gt;Medusa's headless architecture allows you to separate the backend from the frontend. This makes it faster and lighter compared to tightly coupled architecture. So you can decide to use a lighter framework or fewer resources for both your backend and frontend and this can greatly impact the speed and performance of your store. &lt;/p&gt;

&lt;p&gt;In addition, you can set up your store following this &lt;a href="https://docs.medusajs.com/quickstart/quick-start" rel="noopener noreferrer"&gt;quick guide&lt;/a&gt; and the process is fast since in just three steps, you will now have a complete commerce engine running. However, if you need advanced functionalities then you can check the &lt;a href="https://docs.medusajs.com/" rel="noopener noreferrer"&gt;complete Documentation&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Developer’s Features Comparison
&lt;/h3&gt;

&lt;p&gt;This section presents a brief comparison between Medusa and Woocommerce in terms of developer features&lt;/p&gt;

&lt;h3&gt;
  
  
  Documentation
&lt;/h3&gt;

&lt;p&gt;Both Woocommerce and Medusa provide extensive &lt;a href="https://www.learn-dev-tools.blog/topics/writing-good-documentation/" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; for both developers and business owners. &lt;a href="https://woocommerce.com/documentation/plugins/woocommerce/woocommerce-codex/" rel="noopener noreferrer"&gt;Woocommerce codex&lt;/a&gt; provides a library of documentation and tutorials to set up, customize and expand your online store whereas Medusa has a &lt;a href="https://docs.medusajs.com/user-guide/" rel="noopener noreferrer"&gt;detailed user guide&lt;/a&gt; to help you get started.&lt;/p&gt;

&lt;h3&gt;
  
  
  Community
&lt;/h3&gt;

&lt;p&gt;Developers can contribute or report bugs on &lt;a href="https://github.com/woocommerce/woocommerce" rel="noopener noreferrer"&gt;Woocommerce’s GitHub repository&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Medusa is an open source platform whose aim is to build a strong and collaborative relationship with the community. Both developers or tier persons can join the &lt;a href="https://discord.gg/medusajs" rel="noopener noreferrer"&gt;Discord server&lt;/a&gt; to stay up to date with current trends and request and receive help from the community members as well as the core Medusa team.&lt;/p&gt;

&lt;p&gt;Developers can equally showcase their work, report bugs, propose fixes or contribute to issues to the Medusa platform on its &lt;a href="https://github.com/medusajs/medusa" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;. There are other channels like &lt;a href="https://twitter.com/medusajs" rel="noopener noreferrer"&gt;Twitter and LinkedIn&lt;/a&gt; that developers can join to bring their contribution or get help.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installation and Time to Get Started
&lt;/h3&gt;

&lt;p&gt;WooCommerce’s &lt;a href="https://woocommerce.com/documentation/plugins/woocommerce/getting-started/installation-and-updating/" rel="noopener noreferrer"&gt;installation guide&lt;/a&gt; shows you a step-by-step process on how to install and set up your online store easily. To get started with Woocommerce, developers need to know PHP, HTML, CSS3, and WordPress. Non-developers can install WooCommerce via &lt;a href="http://wordpress.com/" rel="noopener noreferrer"&gt;WordPress.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Medusa provides a &lt;a href="https://docs.medusajs.com/quickstart/quick-start" rel="noopener noreferrer"&gt;quick guide&lt;/a&gt; that allows developers to create and manage their store in just 3 steps: Installing Medusa CLI with yarn or npm, creating a new Medusa project using the CLI, and starting the Medusa server.&lt;/p&gt;

&lt;p&gt;In less than 4 steps, you will have a store set up with the features mentioned earlier. You’ll then need to set up the &lt;a href="https://docs.medusajs.com/admin/quickstart" rel="noopener noreferrer"&gt;admin&lt;/a&gt; and storefront with Gatsby or NextJs to effectively manage your store. Medusa ecommerce store is written in Typescript and JavaScript essentially and uses SQLite as a database if no database engine is set up.&lt;/p&gt;

&lt;p&gt;For production purposes, it’s recommended to install and configure a &lt;a href="https://docs.medusajs.com/tutorial/set-up-your-development-environment#postgresql" rel="noopener noreferrer"&gt;PostgreSQL&lt;/a&gt; database and &lt;a href="https://docs.medusajs.com/tutorial/set-up-your-development-environment#redis" rel="noopener noreferrer"&gt;Redis&lt;/a&gt; to handle events. The step-by-step process to install and manage these tools for various OS is included in the &lt;a href="https://docs.medusajs.com/tutorial/set-up-your-development-environment/#nodejs" rel="noopener noreferrer"&gt;Medusa documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deployment and Upgrade
&lt;/h3&gt;

&lt;p&gt;Since Woocommerce is built on top of WordPress, it’s recommended to deploy the online store on a WordPress deployment plan hence restricting deployment on any cloud hosting. &lt;/p&gt;

&lt;p&gt;Woocommerce deals mostly with updates rather than upgrades. Before thinking of updating your Woocommerce store, it’s recommended to manually back up or &lt;a href="https://jetpack.com/upgrade/backup/" rel="noopener noreferrer"&gt;automatically back up&lt;/a&gt; your store. &lt;/p&gt;

&lt;p&gt;Unlike Woocommerce, Medusa can be deployed on any cloud hosting. In its documentation, you can find a straightforward guide on how to deploy on various platforms like &lt;a href="https://docs.medusajs.com/deployments/server/deploying-on-heroku" rel="noopener noreferrer"&gt;Heruko&lt;/a&gt;, &lt;a href="https://docs.medusajs.com/deployments/server/deploying-on-digital-ocean" rel="noopener noreferrer"&gt;Digital Ocean&lt;/a&gt;, or &lt;a href="https://docs.medusajs.com/deployments/server/deploying-on-qovery" rel="noopener noreferrer"&gt;Qovery&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Upgrading Medusa is quite simple; however, some versions may require you to run migration scripts or take additional actions. Fortunately, Medusa provides an &lt;a href="https://docs.medusajs.com/advanced/backend/upgrade-guides/" rel="noopener noreferrer"&gt;upgrade guide&lt;/a&gt; with detailed steps to follow.&lt;/p&gt;

&lt;h3&gt;
  
  
  Customization
&lt;/h3&gt;

&lt;p&gt;Woocommerce is not a headless architecture. Nevertheless, you can build a WooCommerce headless store on your own. This is not recommended, though, as Woocommerce is not designed for this purpose and it does not have the tools or features to build one.&lt;/p&gt;

&lt;p&gt;The fact that Medusa has a headless architecture allows anyone to easily and freely customize their storefront. You can choose any framework or programming language to use on your frontend. This also applies to the admin dashboard. Creating custom features is like adding a JavaScript file that loads automatically into Medusa as soon as you run the server.&lt;/p&gt;

&lt;p&gt;The backend &lt;a href="https://docs.medusajs.com/api/admin/" rel="noopener noreferrer"&gt;uses an API&lt;/a&gt; so developers can extend these APIs to add third-party services and custom features.&lt;/p&gt;

&lt;h3&gt;
  
  
  Developer’s Level
&lt;/h3&gt;

&lt;p&gt;You don’t need to be a developer to be able to set up a store with WordPress and Woocommerce. You can set up your online store with just a few clicks. However, if you need advanced features and more customization, then you may need to hire an experienced developer to build those features or make them by yourself.&lt;/p&gt;

&lt;p&gt;Medusa has a simple and understandable architecture. As a developer, you just need knowledge of JavaScript/TypeScript and NodeJs. Both the Medusa storefront and admin dashboard are built with JavaScript Frameworks. &lt;/p&gt;

&lt;p&gt;Due to the decoupled nature of Medusa, you can create the admin dashboard and storefront with any language or framework. All you need is to link the backend using &lt;a href="https://docs.medusajs.com/api/store/auth" rel="noopener noreferrer"&gt;REST API&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary of Medusa vs Woocommerce
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Medusa&lt;/th&gt;
&lt;th&gt;Woocommerce&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Language&lt;/td&gt;
&lt;td&gt;TypeScript&lt;/td&gt;
&lt;td&gt;PHP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API&lt;/td&gt;
&lt;td&gt;REST API&lt;/td&gt;
&lt;td&gt;REST API but you need to enable it in the Woocommerce settings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stars on GitHub&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/medusajs/medusa" rel="noopener noreferrer"&gt;https://github.com/medusajs/medusa&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;8.3k&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;License&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/medusajs/medusa/blob/master/LICENSE" rel="noopener noreferrer"&gt;https://github.com/medusajs/medusa/blob/master/LICENSE&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Activity&lt;/td&gt;
&lt;td&gt;Since 2021&lt;/td&gt;
&lt;td&gt;Since 2011&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latest Release&lt;/td&gt;
&lt;td&gt;1.7.5(5 days ago)&lt;/td&gt;
&lt;td&gt;7.3.0(2 weeks ago)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Platform&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;WordPress&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mobile App&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RMA Flows&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Taxes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Localization&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-Region Support&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gift Cards&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Headless Architecture&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customization&lt;/td&gt;
&lt;td&gt;Highly Customizable&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

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

&lt;p&gt;In this article, you learned the difference between Woocommerce and Medusa based on the features each ecommerce store offers and the developer’s experience. Choosing the best ecommerce platform is an important decision to reflect on because taking the wrong decision may greatly affect your business in the long run.&lt;/p&gt;

&lt;p&gt;Woocommerce is easy to set up and can handle both smaller and bigger businesses. It is a good choice for non-developers and developers who know PHP and WordPress.&lt;/p&gt;

&lt;p&gt;Medusa is a perfect choice for anyone aiming to build headless commerce. Medusa can equally manage both larger and smaller businesses. It’s a good choice for developers with great JS/TS skills, looking forward to building a NodeJs ecommerce Platform. If you want to design your storefront and admin dashboard then Medusa is also a good choice.&lt;/p&gt;

</description>
      <category>headless</category>
      <category>opensource</category>
      <category>commerce</category>
      <category>medusajs</category>
    </item>
    <item>
      <title>Fixing Your Software Documentation Problem in 2023</title>
      <dc:creator>Gun</dc:creator>
      <pubDate>Mon, 20 Feb 2023 18:22:15 +0000</pubDate>
      <link>https://dev.to/gunkev/fixing-your-software-documentation-problem-in-2022-3i27</link>
      <guid>https://dev.to/gunkev/fixing-your-software-documentation-problem-in-2022-3i27</guid>
      <description>&lt;p&gt;Software products are being built daily, and the necessity to create vital documentation has become a must. However, many product owners seem to neglect this issue. For instance, I recently worked on a &lt;a href="https://aviyel.com/post/1241/tools-that-have-made-react-documentation-a-piece-of-cake" rel="noopener noreferrer"&gt;React native project&lt;/a&gt; using a package. I faced difficulties with the mismanaged documentation because now I had a minimal idea about the recent upgrades, or previous bugs encountered. It took me days to figure out the correct configuration. To ease your documentation challenges, I’ll also introduce a software documentation tool in the blog so your efforts don’t get wasted.&lt;/p&gt;

&lt;p&gt;Before heading to our main points, let’s define what documentation is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Documentation is the act of communicating any material that describes, explains, instructs detailed information regarding an object, a system, or part of a system on how to assemble, build, maintain and use it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now you may ask, Why should I document my project?&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is Documentation Necessary?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  To Track Progress of Your Software Development Cycle
&lt;/h3&gt;

&lt;p&gt;Be it your project or a team project, you need to provide enough documentation in such a way that even if you or one of your team members revisits the code after six months, you will still be able to understand what the function &lt;code&gt;readNow()&lt;/code&gt; means.&lt;/p&gt;

&lt;p&gt;Documenting your code is essential for you and equally for others. Not everyone knows what you have written, or the methodology you adopted. You might face similar issues. So, to avoid calling your colleague in the middle of the night and asking why he chose a particular code function, it is better to jot everything down so that others can use it as a reference. Another situation where documentation will pose a problem is when a &lt;a href="https://aviyel.com/post/1296/ultimate-guide-to-documenting-react-components-using-docz" rel="noopener noreferrer"&gt;developer builds a product&lt;/a&gt; for his client; later, if the product owner has to hire a new developer, the previous developer fails to provide code documentation. In this case, the new developer will either need to take a long period to walk around the code or rebuild some components or that were present but not documented.&lt;/p&gt;

&lt;h3&gt;
  
  
  We Need It!
&lt;/h3&gt;

&lt;p&gt;Yes, we all need it. Even the &lt;a href="https://aviyel.com/post/1420/impact-of-documentation-on-a-software-project-a-docz-evaluation" rel="noopener noreferrer"&gt;client needs good documentation&lt;/a&gt; to use the product. Suppose you’re developing a product for a group of users in your company or external users. In that case, they need a document on installing, configuring, and using it if it’s a machine, software, framework, package. Another scenario where documentation is essential is when a product has undergone some changes. I mentioned a react native package earlier that was changed, but the documentation was not updated. Each time you modify your product, update the documentation.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Documentation is the reflection of your software product.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Getting Started with Project Documentation
&lt;/h2&gt;

&lt;p&gt;Tip: the first step will be to start at the same time as your project starts. &lt;a href="https://aviyel.com/post/894/how-to-manage-your-software-documentation-with-docz" rel="noopener noreferrer"&gt;Poor documentation&lt;/a&gt; sometimes results due to deadlines, and at the same time, it’s time-consuming and too technical.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time-consuming&lt;/strong&gt;: Yes, documenting is not always easy, plus it takes time because each time you develop a feature, you will need to provide minor changes in the documentation describing what that feature does and how to use it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It’s Technical:&lt;/strong&gt; Let’s say you have a Technical Writer in your team who does the documenting task. If they are not developers themselves, it won’t be easy to grasp what the developers do and provide a good document.&lt;/p&gt;

&lt;h3&gt;
  
  
  In other words, if you are writing documentation:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You should start at the same time as you start your project.&lt;/li&gt;
&lt;li&gt;You should think of how you will document.&lt;/li&gt;
&lt;li&gt;Select a &lt;a href="https://aviyel.com/post/807/best-online-software-documentation-tools-of-2021" rel="noopener noreferrer"&gt;good documentation tool&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Provide multiple support.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  And good documentation should provide:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;A well-defined description of the product and each feature.&lt;/li&gt;
&lt;li&gt;A preview so that a user can know what to expect.&lt;/li&gt;
&lt;li&gt;Smooth navigation from one section of the documentation to another.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Documentation problems
&lt;/h2&gt;

&lt;p&gt;You may have already identified many documentation problems if you read along attentively. Documentation is becoming a daily problem because:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Software updates are made monthly or weekly, and there is a need to update the documentation ASAP. Note that changing the documentation can create inconsistency and errors if not handled well. In this case, updating existing documentation is also a problem and should be done meticulously.&lt;/li&gt;
&lt;li&gt;Documentations are often hard to read due to the absence of precise descriptions.&lt;/li&gt;
&lt;li&gt;Writers assume knowledge that users often do not have. And end up skipping or failing to provide detailed steps.&lt;/li&gt;
&lt;li&gt;Documentation sometimes becomes unavailable when needed (destruction of copies). There is a need to provide it somewhere that will always be available and in many spaces.&lt;/li&gt;
&lt;li&gt;There is a need to review each part of the documentation in detail to detect any error.&lt;/li&gt;
&lt;li&gt;It may be expensive and time-consuming.&lt;/li&gt;
&lt;li&gt;Lack of appealing visuals and preview as well as ugly documentation visual.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Fixing Software Documentation Challenges with Docz
&lt;/h2&gt;

&lt;p&gt;What exactly is Docz? Docz lets you create live-reloading quickly, SEO-friendly, production-ready documentation sites with MDX and customize the look, feel and behave when required by leveraging &lt;a href="https://aviyel.com/post/974/how-to-start-gatsby-documentation-with-docz" rel="noopener noreferrer"&gt;GatsbyJS and Gatsby theme&lt;/a&gt; shadowing.&lt;/p&gt;

&lt;p&gt;We have pointed out many things that are becoming problems in the documentation domain, and Docz will eventually help you tackle most of these problems in the future.&lt;/p&gt;

&lt;p&gt;It’s pretty simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;There is Zero config&lt;/strong&gt;, and it’s easy to learn: Avoid unnecessary build steps with confusing setups.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It’s Blazing fast&lt;/strong&gt;: Built with performance in mind from the start.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It’s easy to customize&lt;/strong&gt;: Create something that will be easy to use and customize.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://aviyel.com/post/1265/using-mdx-with-docz-has-never-been-this-easy" rel="noopener noreferrer"&gt;MDX-based:&lt;/a&gt;&lt;/strong&gt; Use the best standard for writing documentation.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Another essential factor to note while dealing with software is that a well-documented product adds value to software and increases its marketability, contributing to marketing metrics. A well-documented product will attract users. In the next section, we will discuss getting started with Docz.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How Do I Get Started with Docz?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;If you are starting a new project, use the following &lt;code&gt;create-docz-app&lt;/code&gt; command to create your project with Docz
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx create-docz-app my-docz-app
# or
yarn create docz-app my-docz-app --example typescript
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;If you already have an existing project, then use
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ yarn add --dev docz@next # react react-dom#

# or

$ npm install --save-dev docz@next # react react-dom
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create a &lt;code&gt;button.tsx&lt;/code&gt; in your component/button folder
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react'
import t from 'prop-types'
const Button = ({ children, type }) =&amp;gt; (
 &amp;lt;button type={type}&amp;gt;
   {children}
 &amp;lt;/button&amp;gt;
)
Button.propTypes = {
 /**
  * This is a pretty good description for this prop.
  * Button type.
  */
 type: t.oneOf(['button', 'submit', 'reset']),
}
Button.defaultProps = {
 type: 'button',
}
export default Button
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Add a .mdx file in your component folder
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;---
name: Button
route: /
---
import { Playground, Props } from 'docz'
import Button from './Button'
# Button
&amp;lt;Props of={Button} /&amp;gt;
## Basic usage
&amp;lt;Playground&amp;gt;
 &amp;lt;Button type="submit"&amp;gt;Click me&amp;lt;/Button&amp;gt;
 &amp;lt;Button&amp;gt;No, click me&amp;lt;/Button&amp;gt;
&amp;lt;/Playground&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Lastly, run &lt;code&gt;yarn docz:dev&lt;/code&gt; and open your browser(localhost:3000) to see your documentation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We have come to the end of our discussion regarding documentation. We covered what documentation is, why it’s essential, the various documentation problems and how to tackle them with a great open source tool called Docz. It is a powerful tool with zero configuration, easy customization, and even supports &lt;a href="https://aviyel.com/post/824/how-to-create-a-documentation-site-and-github-page-using-docz-with-nextjs-and-typescript" rel="noopener noreferrer"&gt;Typescript.&lt;/a&gt; If you want to learn more about Docz, visit &lt;a href="https://www.docz.site/" rel="noopener noreferrer"&gt;docz.site&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can read more about &lt;a href="https://aviyel.com/projects/9/docz/resources/discussion" rel="noopener noreferrer"&gt;Docz&lt;/a&gt; on &lt;a href="https://aviyel.com/discussions" rel="noopener noreferrer"&gt;Aviyel.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>documentation</category>
      <category>opensource</category>
      <category>docz</category>
      <category>userguide</category>
    </item>
    <item>
      <title>What is Search Engine Optimization and how is it useful?</title>
      <dc:creator>Gun</dc:creator>
      <pubDate>Mon, 20 Feb 2023 17:12:37 +0000</pubDate>
      <link>https://dev.to/gunkev/what-is-search-engine-optimization-and-how-is-it-useful-15i1</link>
      <guid>https://dev.to/gunkev/what-is-search-engine-optimization-and-how-is-it-useful-15i1</guid>
      <description>&lt;p&gt;Nowadays internet users tend to grow as well as the demand for different kinds of resources. To respond to the need for these resources, website creators or developers create and add content to their websites to satisfy each user. But creating and adding content does not guarantee that the content will be readily available to users when they query the internet utilizing a search engine.&lt;/p&gt;

&lt;p&gt;To overcome this problem search engines have introduced some parameters that will help both webmasters/developers and content writers to optimize their content for search engines to rank them while providing the best results to the users. Then What is Search Engine Optimization and how is that useful?&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Search Engine Optimization?
&lt;/h2&gt;

&lt;p&gt;SEO is a technique and practice of &lt;a href="https://medium.com/@gunkev/4-ways-to-increase-traffic-to-your-website-6e2ebf0a82f3" rel="noopener noreferrer"&gt;increasing the quantity and quality of traffic to a website&lt;/a&gt; through organic search engine results. These techniques can be classified into 2 types: On-page SEO and Off-page SEO.&lt;/p&gt;

&lt;h2&gt;
  
  
  On-page SEO
&lt;/h2&gt;

&lt;p&gt;Focus on improving elements on your website to get higher rankings. The main elements are&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; HTML tags.&lt;/li&gt;
&lt;li&gt;    Image alt attribute.&lt;/li&gt;
&lt;li&gt;    The Content.&lt;/li&gt;
&lt;li&gt;    Keyword (primary and secondary).&lt;/li&gt;
&lt;li&gt;    Permalinks Structure.&lt;/li&gt;
&lt;li&gt;    Internal links.&lt;/li&gt;
&lt;li&gt;    Meta Description.&lt;/li&gt;
&lt;li&gt;    Last but not least Keyword density.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Off-page SEO
&lt;/h2&gt;

&lt;p&gt;On the other hand we have Off-page techniques. These are techniques applied out of your pages to increase traffic on a website. Some of these techniques include&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Using social media to boost traffic and&lt;/li&gt;
&lt;li&gt;    Using Backlinks (blogging and forum). Backlinks are simply links that come from some other site to your site. The greater the number of sites that are linked to your site the higher your rank on the search result page.&lt;/li&gt;
&lt;li&gt;    Link building&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Equally, we distinguish 3 types of SEO practitioners: White hat SEO, Gray hat SEO and Black hat SEO. They are classified depending on the way(good and bad) they practice optimization. White is the best and black is the fraudulent way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Examples of Search Engine Optimization Tools
&lt;/h2&gt;

&lt;p&gt;We have an in-exhaustive list of SEO tools but will list some of the most used ones.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google search console.&lt;/li&gt;
&lt;li&gt;    &lt;a href="https://www.glamandtech.cm/what-does-yoast-seo-search-engine-optimization-do/" rel="noopener noreferrer"&gt;Yoast SEO.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;    &lt;a href="https://search.google.com/" rel="noopener noreferrer"&gt;Google Analytics.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;    &lt;a href="https://ahrefs.com/" rel="noopener noreferrer"&gt;Ahrefs.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;    &lt;a href="https://app.neilpatel.com/" rel="noopener noreferrer"&gt;Ubersuggest.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;    &lt;a href="https://answerthepublic.com/" rel="noopener noreferrer"&gt;Answer the public&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;    and many others…&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  But why is Search Engine optimization useful?
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;First of all, with SEO you can bring super [organic traffic](https://medium.com/@gunkev/4-ways-to-increase-traffic-to-your-website-6e2ebf0a82f3) to your websites
Secondly, having great navigation around your website pages also gives you great credibility and builds a strong trusteeship with your users.
Optimizing your site from a user perspective also brings great user experiences thereby encouraging more users to come back.
It helps you have more visibility on your local and international competitors.
It creates job opportunities such as SEO specialists.
ROI.
SEO helps to predict user behaviour patterns based on user queries (keywords).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;If you haven’t thought about &lt;a href="https://medium.com/@gunkev/should-i-use-yoast-free-or-yoast-premium-version-de2e6786a09c" rel="noopener noreferrer"&gt;optimizing your web content&lt;/a&gt; I encourage you to start doing it as soon as possible cause this may help you and have a great impact on your website&lt;/p&gt;

</description>
      <category>gratitude</category>
    </item>
    <item>
      <title>Should I use Yoast Free or Yoast Premium Version?</title>
      <dc:creator>Gun</dc:creator>
      <pubDate>Mon, 20 Feb 2023 16:09:58 +0000</pubDate>
      <link>https://dev.to/gunkev/should-i-use-yoast-free-or-yoast-premium-version-on2</link>
      <guid>https://dev.to/gunkev/should-i-use-yoast-free-or-yoast-premium-version-on2</guid>
      <description>&lt;p&gt;In a previous article, I talked about Yoast, defining what it was as well as listing some of its features. But if you would like to use Yoast to manage your content, have you already thought of which version to use? I mean will you use the Yoast free version or rather the premium version? Well, it may depend on many factors, the first being the different features each offer. In this article I will help you to answer the question– “Should I use Yoast free or Yoast Premium Version ?” for most of you who want to use Yoast SEO in order to optimize your content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Here are some criteria to take into consideration while choosing the Yoast premium version or free version.
&lt;/h2&gt;

&lt;p&gt;I will be using PV and FV in some sections to represent the Premium version and Free version respectively.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In the PV you have full access to academic courses so you have the possibility to get full access to their training and become an expert in &lt;strong&gt;SEO&lt;/strong&gt;. Meanwhile the FV you have access to the free courses only.&lt;/li&gt;
&lt;li&gt;In the premium version you have the possibility to find and add high-performing keywords while in the free version, you add them manually in your text.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can add related keywords in the PV. Unfortunately, you can only add one keyword or key phrase in the FV.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PV word form recognition is available in many languages whereas in FV you are responsible for manually researching and improving your content.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Both of them can tell Google what your page is all about.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Automation, update and supports
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;PV automates your publishing flow, that is you can share your post to more than 2000 entities just by pushing on a button while in the free version sorry but you will have to manually share your posts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the PV, Yoast observes your important posts and pages and if necessary warns you if you haven’t updated for 6 months. You have to manually check your pages in FV in order to ensure that none is outdated.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You have the ability to preview what your pages look like on Google, Bing, Twitter and Facebook. Whereas in the FV you can only preview your pages on Bing and &lt;a href="//google.com"&gt;Google&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For the PV you can get suggestions for internal links that Yoast suggests you internal links you can add to your post. While the FV you have to look for related posts yourself and add them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You have full support 24h/7 (1 year) in PV. No support in the FV but the team provides hundreds of articles to help you.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PV is ad-free. So you won’t see ads on your dashboard. FV contains ads.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Last but not least both work in the WordPress classical and block editor.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now that you have an idea of what each version offers, it's up to you to identify your main objects in order to chose the right solution.&lt;/p&gt;

&lt;p&gt;Reference &lt;a href="//yoast.com"&gt;yoast.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you love this content also check my article on &lt;a href="https://dev.to/gunkev/4-ways-to-increase-traffic-to-your-website-2793"&gt;how to bring more traffic to your website&lt;/a&gt;&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
  </channel>
</rss>
