<?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: Vino Samari</title>
    <description>The latest articles on DEV Community by Vino Samari (@vinosamari).</description>
    <link>https://dev.to/vinosamari</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%2F493594%2F0288886a-95d4-4ef6-82fe-a15d7bda57ad.jpeg</url>
      <title>DEV Community: Vino Samari</title>
      <link>https://dev.to/vinosamari</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vinosamari"/>
    <language>en</language>
    <item>
      <title>The Myth of The Short Attention Span</title>
      <dc:creator>Vino Samari</dc:creator>
      <pubDate>Thu, 14 Mar 2024 05:29:17 +0000</pubDate>
      <link>https://dev.to/vinosamari/the-myth-of-the-short-attention-span-4cm8</link>
      <guid>https://dev.to/vinosamari/the-myth-of-the-short-attention-span-4cm8</guid>
      <description>&lt;p&gt;Ever catch yourself mindlessly scrolling through your phone, only to realize you've spent hours in a digital trance? It's a common lament these days: the notion that our attention spans are shrinking faster than an ice cube in the Sahara. But let's hit pause on that assumption for a moment and dig a little deeper.&lt;/p&gt;

&lt;p&gt;Sure, the internet era bombards us with endless stimuli, from cat videos to breaking news alerts. And yeah, it's easy to blame our scattered focus on the constant barrage of information. But what if I told you that this narrative of the short attention span might just be a convenient excuse, rather than an irrefutable truth?&lt;/p&gt;

&lt;p&gt;Consider this: throughout history, humans have achieved incredible feats of focus and concentration without the aid of smartphones or social media. From Michelangelo meticulously painting the Sistine Chapel ceiling to Mozart composing symphonies in his head, there's no shortage of examples of deep, unwavering focus.&lt;/p&gt;

&lt;p&gt;So why do we continue to buy into the myth of the short attention span? Perhaps it's because it's easier to blame external factors than to confront our own lack of discipline. After all, it's far more comfortable to blame Instagram algorithms for our inability to focus than to admit that we haven't put in the hard work to cultivate our attention.&lt;/p&gt;

&lt;p&gt;But here's the kicker: we've always had the ability for deep focus, and we still do today. It's not about the length of our attention span; it's about how we choose to use it. If we're willing to put in the effort to train our minds and prioritize our tasks, we can achieve the same level of focus as our ancestors did centuries ago.&lt;/p&gt;

&lt;p&gt;So the next time you find yourself zoning out in front of a screen, remember that your attention span is not predetermined by the digital age. You have the power to reclaim your focus and dive deep into whatever task is at hand. It just takes a little bit of determination and a whole lot of discipline.&lt;/p&gt;

&lt;p&gt;Now, let me leave you with this: What would happen if we stopped blaming our attention spans on external factors and started taking responsibility for our own focus? How could we use our innate ability for deep concentration to achieve our goals and make a real impact in the world? Leave a comment; let's start the conversation.&lt;/p&gt;

</description>
      <category>mentalhealth</category>
    </item>
    <item>
      <title>The Real Threat to Your Job Security (Hint: It's Not AI).</title>
      <dc:creator>Vino Samari</dc:creator>
      <pubDate>Thu, 09 Mar 2023 17:28:02 +0000</pubDate>
      <link>https://dev.to/vinosamari/the-real-threat-to-your-job-security-hint-its-not-ai-38b2</link>
      <guid>https://dev.to/vinosamari/the-real-threat-to-your-job-security-hint-its-not-ai-38b2</guid>
      <description>&lt;p&gt;Are you worried about losing your job to artificial intelligence (AI)? It's a common fear that many people share, but the reality is not as dire as some might think. In fact, the real threat to job security is not AI but something else entirely.&lt;/p&gt;

&lt;p&gt;If we look back in history, we can see that technological advancements have always threatened certain jobs. For example, the introduction of tractors and power tools in agriculture and carpentry respectively were once seen as major threats to job security in those industries. While there were certainly some job losses, people adapted and learned how to use the new technology to their advantage. The same can be said for AI.&lt;/p&gt;

&lt;p&gt;While AI has the potential to automate certain tasks, it doesn't mean that humans are completely replaceable. In fact, the collaboration between humans and machines can lead to better outcomes in fields like art, music, and data analysis. Instead of being scared of AI, we should be embracing its potential and learning how to work alongside it.&lt;/p&gt;

&lt;p&gt;&lt;a href="//read://https_www.elsevier.com/?url=https%3A%2F%2Fwww.elsevier.com%2Fconnect%2Fthe-biggest-misconceptions-about-ai-the-experts-view"&gt;According to experts&lt;/a&gt;, some of the biggest misconceptions around AI are that people think it's close to being sentient and that there is a single algorithm that suddenly knows everything. However, AI is still limited and cannot reason about the world in the way humans do. Despite its limitations, AI has the potential to be a beneficial tool for almost any scientist, and collaborations with machine learning specialists can yield positive results. Therefore, it's essential not to overestimate the current standards of AI, as it is still a glorified signal processing tool.&lt;/p&gt;

&lt;p&gt;One of the biggest challenges we face with AI is ensuring that machines learn from unbiased and diverse sources of information. Humans have a crucial role to play in providing this firsthand information to machines, and we need to make sure that our biases don't get in the way of progress.&lt;/p&gt;

&lt;p&gt;It's important to note that AI has the potential to transform many industries and create new jobs that we haven't even imagined yet. For example, AI can help us tackle some of the world's biggest challenges, such as climate change, healthcare, and poverty. In the healthcare industry, AI can be used to develop more personalized treatments and improve patient outcomes. In the environmental sector, AI can help us better understand climate patterns and develop more effective solutions to reduce greenhouse gas emissions. These are just a few examples of how AI can be a powerful tool for good.&lt;/p&gt;

&lt;p&gt;However, we must also be aware of the potential negative consequences of AI. For example, AI could potentially displace certain workers and exacerbate existing inequalities. Therefore, it's important to consider the social and ethical implications of AI as we continue to develop and implement it in various industries.&lt;/p&gt;

&lt;p&gt;In the end, it's up to us to shape the future of work with AI. Let's not be afraid of it, but instead, let's work together to create a world where humans and machines can coexist and thrive. So, the next time you hear someone say that AI will take your job, remember that the real threat to your job security is not AI but our own resistance to change.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>futureofwork</category>
      <category>motivation</category>
    </item>
    <item>
      <title>Building the Ideal AI Learning Companion (Part 2)</title>
      <dc:creator>Vino Samari</dc:creator>
      <pubDate>Mon, 06 Mar 2023 05:50:00 +0000</pubDate>
      <link>https://dev.to/vinosamari/from-concept-to-creation-building-the-ideal-ai-learning-companion-part-2-2pma</link>
      <guid>https://dev.to/vinosamari/from-concept-to-creation-building-the-ideal-ai-learning-companion-part-2-2pma</guid>
      <description>&lt;p&gt;In part 1 of this series, I introduced you to SmartStudy Companions, an AI-powered learning companion app that will revolutionize the way we learn and study. While the idea behind the app is exciting, the project is also a massive undertaking that requires careful planning and execution.&lt;/p&gt;

&lt;p&gt;SmartStudy Companions is not only tailored to students, but to all types of learners, including professionals and anyone interested in personal development. Here are some potential problems and target audiences to consider in this broader context:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Problem: Learners struggle to find personalized learning resources tailored to their specific interests and needs. Target audience: Learners of all ages and levels who are looking for a more personalized and engaging learning experience.&lt;/li&gt;
&lt;li&gt;Problem: Learners often struggle to stay motivated and engaged when studying alone. Target audience: Learners who benefit from social learning and enjoy collaborating with others.&lt;/li&gt;
&lt;li&gt;Problem: Learners may not have access to high-quality educational resources due to financial or geographical barriers. Target audience: Learners who may not have access to traditional educational resources, such as those in remote or underprivileged areas.&lt;/li&gt;
&lt;li&gt;Problem: Traditional educational resources may not be adaptive enough to meet the needs of all learners. Target audience: Learners who may have unique learning needs or who learn at a different pace than others.&lt;/li&gt;
&lt;li&gt;Problem: Learners may struggle to find a balance between learning and other obligations, such as work or family. Target audience: Learners who need flexibility in their learning schedule and access to resources that can help them optimize their study time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is important to note that while SmartStudy Companions has the potential to address these problems, there is no guarantee that it will be able to completely solve them. Therefore, it is crucial to design the app in a realistic and feasible way, while leveraging the power of AI technology to create a personalized and engaging learning experience. I need to define the key features of the app and how they will work together to create an ideal user experience. I need to define the key features of the app and how they will work together to create an ideal user experience. I also need to decide on the technology stack that will power the app and how it will be hosted and distributed.&lt;/p&gt;

&lt;p&gt;After considering all these factors, I've decided to build SmartStudy Companions as a progressive web app rather than a native app. This decision was made for several reasons, including the ability to iterate quickly and receive feedback in real-time(or near-real-time), as well as the ability to reach a wider audience without the need for app store approval. Building SmartStudy Companions as a progressive web app (PWA) has many advantages over making it as a native app. PWAs are like native apps, but they are made using web technologies such as HTML, CSS, and JavaScript. One of the main advantages of PWAs is that they don't need app store approval or installation, since they're accessed through a web browser. This makes them more accessible to users, especially those who don't have app stores or have limited device storage.&lt;/p&gt;

&lt;p&gt;Another advantage of PWAs is that they're easily and quickly updated and maintained. Updates are pushed directly to the user's browser, so they always have the latest version of the app. This makes for a better user experience and reduces the need for users to manually update their apps.&lt;/p&gt;

&lt;p&gt;PWAs are also faster and more responsive than native apps, thanks to service workers that cache data and resources. This means that the app loads faster and is more reliable, even with a poor or non-existent internet connection. Native apps, on the other hand, need to be downloaded and installed, which can take time and add extra steps to the user experience.&lt;/p&gt;

&lt;p&gt;Finally, PWAs are more flexible than native apps in terms of compatibility across different devices and operating systems, since they're built using web technologies. This means they can be accessed on any device with a modern web browser, regardless of the operating system or device type. In contrast, native apps are limited to specific platforms and often require separate development for each platform, which can be costly and time-consuming. Native apps also require users to download and install the app, which can be a barrier to adoption, especially for users with limited storage on their devices.&lt;/p&gt;

&lt;p&gt;Overall, building SmartStudy Companions as a PWA is a smart choice, since it offers many advantages over building it as a native app. PWAs are more accessible, easier to update and maintain, faster and more responsive, and more flexible than native apps. These benefits will ultimately result in a better user experience and wider adoption of the app.&lt;/p&gt;

&lt;p&gt;To build the app, I will be using Nuxt.js, a powerful framework for building Vue.js applications. Nuxt.js provides a number of benefits, including server-side rendering, automatic code-splitting, and easy configuration of Vue.js plugins.&lt;/p&gt;

&lt;p&gt;Now that I've settled on the technology stack, I need to dive into the user experience. An ideal user flow for SmartStudy Companions would begin with a user signing up for an account and creating a profile. The user would then be able to create a companion with their specific needs or interests, or they can browse through a list of preset companions and select the ones that match their interests. The user would then be able to interact with their companions through a chat interface, asking questions, receiving feedback, and sharing resources. This description is a high-level overview of what the user journey will look like. However, &lt;a href="https://miro.com/app/board/uXjVP01_QvM=/?share_link_id=350931423528"&gt;this board&lt;/a&gt; will help to to illustrate this process in more detail.&lt;/p&gt;

&lt;p&gt;In this part, we talked about the possible issues that the app could tackle and the benefits of developing it as a progressive web app. In the next part of this series, I'll be exploring more about the user experience and creating the key features of the Interface (front and backend) of SmartStudy Companions. Stay tuned to see the progress and the difficulties to be faced in making this idea a reality!&lt;/p&gt;

</description>
      <category>edtech</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>From Dream to Danger: Building an AI Learning Companion App and the Potential Letdown.</title>
      <dc:creator>Vino Samari</dc:creator>
      <pubDate>Sun, 05 Mar 2023 12:21:20 +0000</pubDate>
      <link>https://dev.to/vinosamari/from-dream-to-danger-building-an-ai-learning-companion-app-and-the-potential-letdown-1ggb</link>
      <guid>https://dev.to/vinosamari/from-dream-to-danger-building-an-ai-learning-companion-app-and-the-potential-letdown-1ggb</guid>
      <description>

&lt;blockquote&gt;
&lt;p&gt;Remember that one friend you had in school who was always great at science or math, while another was a master in history or football? It was as if they had their own little superpowers. The thing is, they also had other stuff/subjects they were great or at least good at. What if you could create a learning companion who had the combination of skills and knowledge you needed, tailored to your specific interests? &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's the idea behind SmartStudy Companions, a web app I'm building that will give you your own personal AI study buddies. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;" With this app, you'll never have to study alone again. Your exposure to new ideas will be on a self-paced rise as your customized companions will be there to share unique insights, keep you company, and help you learn in ways you never experienced or thought possible. Whether you need help with art, music, study habits, languages, learning, ancient history, cooking or even soccer, your companions have got you covered. "&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But let me be honest with you - this project is far from risk-free. While I believe that SmartStudy Companions has the potential to revolutionize the way we learn and study, there's always the danger that it might not live up to expectations. After all, what happens when you combine seemingly disparate fields - like soccer and culinary arts - into a single companion? Will it be a game-changer, or a complete dud?&lt;/p&gt;

&lt;p&gt;Despite these uncertainties, I'm excited to share my journey with you as I build SmartStudy Companions. As a progressive web app, I'm using Nuxt.js, Express, and MongoDB to create a lightweight, fast, and responsive experience for users. And while I'm still deciding on whether to make it open source or not, I'm excited about the possibility of collaborating with other developers to create something truly unique and groundbreaking. &lt;small&gt; Exploring some form of balance between open and closed-source is also a looming thought but i digress.&lt;small&gt;&lt;/small&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;In this series, I'll be documenting my process, from ideation to MVP, to public beta, and beyond. You'll get an inside look at my thought process, the challenges I face, the successes and setbacks, and the lessons I'm learning along the way. Whether you're a developer, a student, or simply curious about AI and education, I hope this series will be both informative and entertaining.&lt;/p&gt;

&lt;p&gt;So join me on this journey, as we ride the wave of uncertainty and discover whether SmartStudy Companions will be the future of learning, or a potential letdown.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>edtech</category>
      <category>opensource</category>
    </item>
    <item>
      <title>No Internet, No Problem: Building a Progressive Web Application(PWA) with Nuxt.js that Works Anytime, Anywhere (Part 2).</title>
      <dc:creator>Vino Samari</dc:creator>
      <pubDate>Wed, 01 Mar 2023 13:42:23 +0000</pubDate>
      <link>https://dev.to/vinosamari/no-internet-no-problembuildin-a-progressive-web-applicationpwa-with-nuxtjs-that-works-anytime-anywhere-part-2-3374</link>
      <guid>https://dev.to/vinosamari/no-internet-no-problembuildin-a-progressive-web-applicationpwa-with-nuxtjs-that-works-anytime-anywhere-part-2-3374</guid>
      <description>&lt;p&gt;🎉 Welcome back to our series on building offline apps and PWAs with Nuxt.js! In the previous article, we introduced the power of Nuxt.js and discussed how it can help us create web apps that work great even without an internet connection. Today, we're excited to dive deeper into building Sportswire - a web app that delivers up-to-date sports news and analysis in a fun and engaging way 🏆.&lt;/p&gt;

&lt;p&gt;Our focus is setting up the frontend including basic assets and pages and learning how to configure Nuxt.js to package our web app to behave like a native app, so users can access Sportswire anytime, anywhere, even without an internet connection 🌎.&lt;/p&gt;




&lt;p&gt;We will walk through each step of the Nuxt.js configuration, including the pwa module, service workers, caching strategies, and offline fallback pages, to build a PWA that works seamlessly offline 💻. Get ready to discover how Nuxt.js can make it easy for you to create PWAs with offline capabilities that deliver an exceptional user experience! 🚀&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;small&gt;Before we dive into the walkthrough, it's important to note that a few assumptions have been made. First, we assume that you have the latest/LTS version of node installed on your computer. Second, we assume that you have a basic understanding of Vue.js. Lastly, we assume that you have experience hosting a static website. If any of these assumptions do not apply to you, we recommend doing some research on the topics before proceeding.&lt;/small&gt;&lt;/em&gt;&lt;br&gt;
&amp;lt;hr/&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  1. Nuxt.js project boilerplate
&lt;/h2&gt;

&lt;p&gt;Let's set up our Nuxt frontend with all the necessary boilerplate code by running the following command in our terminal or command line interface.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx create-nuxt-app sportswire
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;small&gt;Below are the resulting project initialization options. Some of these options are essential for our project, and others are optional, which we'll elaborate on later. It is recommended that you use similar values when initializing your project for more predictable results.&lt;/small&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;create-nuxt-app v4.0.0
✨  Generating Nuxt.js project in sportswire
? Project name: sportswire
? Programming language: JavaScript
? Package manager: Npm
? UI framework: None
? Nuxt.js modules: Axios - Promise based HTTP client, Progressive Web App (PWA)
? Linting tools: None
? Testing framework: None
? Rendering mode: Universal (SSR / SSG)
? Deployment target: Static (Static/Jamstack hosting)
? Development tools: jsconfig.json (Recommended for VS Code if you're not using typescript)
? What is your GitHub username? vinosamari
? Version control system: Git
⠸ Installing packages with npm ...

🎉  Successfully created project sportswire

  To get started:

        cd sportswire
        npm run dev

  To build &amp;amp; start for production:

        cd sportswire
        npm run build
        npm run start

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

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;small&gt;🚨IMPORTANT: *MAKE SURE YOU SELECT &lt;code&gt;Progressive Web App (PWA)&lt;/code&gt; UNDER &lt;code&gt;Nuxt.js modules&lt;/code&gt;(There will be a setup instructions for already initialized Nuxt projects later in the article). *We have selected Tailwind CSS as the UI framework option, but other frameworks also work well. However, all the custom Tailwind classes will still be included in their vanilla CSS form in the project's global CSS file.*Linting and testing tools are not covered in this walkthrough.&lt;/small&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  2. Nuxt config
&lt;/h2&gt;

&lt;p&gt;The next step is to navigate into the sportswire directory (&lt;code&gt;cd sportswire&lt;/code&gt;) and open it in your favourite code editor or IDE (for me that's VS Code with &lt;code&gt;code .&lt;/code&gt;). In the root directory(project folder) you will find a &lt;code&gt;nuxt.config.js&lt;/code&gt; file. This file is a core configuration file for your Nuxt application. It contains a variety of options that determine the behavior of your application, such as the css, plugins, server settings and build options. I have displayed my current &lt;code&gt;nuxt.config.js&lt;/code&gt; file below, which will help you to better understand the configuration options for this project and how to modify them in yours.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="c1"&gt;//nuxt.config.js&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Target: https://go.nuxtjs.dev/config-target&lt;/span&gt;
  &lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;static&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

  &lt;span class="c1"&gt;// Global page headers: https://go.nuxtjs.dev/config-head&lt;/span&gt;
  &lt;span class="na"&gt;head&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;SportsWire - Up-to-date Sports News and Analysis App&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;meta&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;charset&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;utf-8&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;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;viewport&lt;/span&gt;&lt;span class="dl"&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;width=device-width, initial-scale=1&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;hid&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;name&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;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
          &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Stay up-to-date with the latest sports news and analysis anytime, anywhere with Sportswire - a fun and engaging web app built with Nuxt.js.&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="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;format-detection&lt;/span&gt;&lt;span class="dl"&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;telephone=no&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;link&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;icon&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;image/x-icon&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/favicon.ico&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="c1"&gt;// Global CSS: https://go.nuxtjs.dev/config-css&lt;/span&gt;
  &lt;span class="na"&gt;css&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;@/assets/css/styles.css&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;

  &lt;span class="c1"&gt;// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins&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="c1"&gt;// Auto import components: https://go.nuxtjs.dev/config-components&lt;/span&gt;
  &lt;span class="na"&gt;components&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="c1"&gt;// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules&lt;/span&gt;
  &lt;span class="na"&gt;buildModules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="c1"&gt;// https://go.nuxtjs.dev/tailwindcss&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@nuxtjs/tailwindcss&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="c1"&gt;// Modules: https://go.nuxtjs.dev/config-modules&lt;/span&gt;
  &lt;span class="na"&gt;modules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="c1"&gt;// https://go.nuxtjs.dev/axios&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@nuxtjs/axios&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="c1"&gt;// https://go.nuxtjs.dev/pwa&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@nuxtjs/pwa&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="c1"&gt;// Axios module configuration: https://go.nuxtjs.dev/config-axios&lt;/span&gt;
  &lt;span class="na"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Workaround to avoid enforcing hard-coded localhost:3000: https://github.com/nuxt-community/axios-module/issues/308&lt;/span&gt;
    &lt;span class="na"&gt;baseURL&lt;/span&gt;&lt;span class="p"&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="p"&gt;},&lt;/span&gt;

  &lt;span class="c1"&gt;// PWA module configuration: https://go.nuxtjs.dev/pwa&lt;/span&gt;
  &lt;span class="na"&gt;pwa&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;manifest&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;lang&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;en&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="c1"&gt;// Build Configuration: https://go.nuxtjs.dev/config-build&lt;/span&gt;
  &lt;span class="na"&gt;build&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;small&gt;&lt;br&gt;
Keep a few things in mind:&lt;br&gt;
&lt;/small&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;small&gt; Your &lt;code&gt;title&lt;/code&gt; and &lt;code&gt;description&lt;/code&gt; meta tags will be automatically generated by default, but you can customize them(like i did) to better suit the project.&lt;a href="https://nuxtjs.org/docs/features/meta-tags-seo/" rel="noopener noreferrer"&gt;Check out the official Nuxt.js documentation to learn more.&lt;/a&gt;
&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;small&gt;If you're using a UI framework, you may need to include it as a build module in your &lt;code&gt;nuxt.config.js&lt;/code&gt; file or it will be added if you opt for it at initialization. In my case, i'm using the &lt;code&gt;"@nuxtjs/tailwindcss"&lt;/code&gt; module.&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;small&gt;I have added a path to my &lt;code&gt;css&lt;/code&gt; property &lt;code&gt;@/assets/css/styles.css&lt;/code&gt;. This points to my global css file which i created in &lt;code&gt;projectFolder/assets/css/styles.css&lt;/code&gt; for styling purposes. You can, of course, ignore this step and style your components as you normally would at no peril to the project.&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;small&gt;If you have an already existing nuxt.config project, there may or may not be a &lt;code&gt;pwa&lt;/code&gt; object, depending on your choices at initialization but don't worry. We'll get to setting up for you in a bit.
&lt;/small&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;📝 &lt;small&gt;Note: At this point, serving your app on your localhost/local server with &lt;em&gt;&lt;code&gt;npm run dev&lt;/code&gt;&lt;/em&gt; in your terminal should display the default Nuxt.js landing page at '&lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt;' in your web browser. You can serve it to check that your configuration is error-free.&lt;/small&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  3. PWA module config
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;If you already have an existing Nuxt.js project you want to install the PWA module in, run &lt;code&gt;npm i --save-dev @nuxtjs/pwa&lt;br&gt;
&lt;/code&gt;. &lt;a href="https://pwa.nuxtjs.org/setup" rel="noopener noreferrer"&gt;Read more setup instructions in the docs.&lt;/a&gt;&lt;br&gt;
After installation, edit your &lt;code&gt;nuxt.config.js&lt;/code&gt; file to include the PWA module. &lt;/p&gt;


&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;buildModules&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="s1"&gt;@nuxtjs/pwa&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="c1"&gt;// NOTE: If using `ssr: false` with production mode without `nuxt generate`, you have to use `modules` instead of `buildModules`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/blockquote&gt;

&lt;p&gt;When our web app is added to the users' devices we need accompanying app icons and splash screens for it to look and feel native . For this we ensure that; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There is a &lt;code&gt;static/&lt;/code&gt; directory in the project's root folder.&lt;/li&gt;
&lt;li&gt;It contains a &lt;code&gt;static/icon.png&lt;/code&gt; which should be a square &lt;code&gt;.png&lt;/code&gt; image with dimensions &amp;gt;= 512x512px. This is the file the module uses to generate the various app icons and splash screens for your PWA.&lt;a href="https://flaticon.com" rel="noopener noreferrer"&gt;You can check Flaticon&lt;/a&gt;[ &lt;a href="https://dev.tourl"&gt;&lt;/a&gt;](&lt;a href="https://favicon.io" rel="noopener noreferrer"&gt;https://favicon.io&lt;/a&gt;) for ideas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find more details [in the module docs].(&lt;a href="https://pwa.nuxtjs.org/" rel="noopener noreferrer"&gt;https://pwa.nuxtjs.org/&lt;/a&gt;) For reference i have displayed my PWA module config for this project below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//nuxt.config.js&lt;/span&gt;

&lt;span class="c1"&gt;// PWA module configuration: https://go.nuxtjs.dev/pwa&lt;/span&gt;
  &lt;span class="nx"&gt;pwa&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// https://pwa.nuxtjs.org/manifest&lt;/span&gt;
    &lt;span class="c1"&gt;// Manifest adds Web App Manifest with no pain.&lt;/span&gt;
    &lt;span class="nl"&gt;manifest&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;SportsWire&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;short_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;SportsWire&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Up-to-date Sports News and Analysis App.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;theme_color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#6a5acd&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;lang&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;en&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;background_color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#6a5acd&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="c1"&gt;// https://pwa.nuxtjs.org/icon&lt;/span&gt;
    &lt;span class="nx"&gt;icon&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;sizes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;144&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;152&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;384&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;512&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="c1"&gt;//Array of sizes to be generated (Square).These are the default values&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="c1"&gt;// https://pwa.nuxtjs.org/meta&lt;/span&gt;
    &lt;span class="c1"&gt;// Meta easily adds common meta tags into your project with zero-config needed. &lt;/span&gt;
    &lt;span class="nx"&gt;meta&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;SportsWire&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Up-to-date Sports News and Analysis App.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;author&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Vino Samari&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;theme_color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#6a5acd&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;nativeUi&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="nx"&gt;appleStatusBarStyle&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;black&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;mobileAppIOS&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="p"&gt;},&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So far, the home page looks something like this;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F24avllvc5mmnkjyc8sxc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F24avllvc5mmnkjyc8sxc.png" alt="HomePage" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;index.vue&lt;/code&gt; page looks something like;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"wrapper"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h1&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"header"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Welcome to SportsWire!&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h2&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"subheader"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Your Up-to-date Sports News and Analysis App.&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;section&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card"&lt;/span&gt; &lt;span class="na"&gt;v-for=&lt;/span&gt;&lt;span class="s"&gt;"news in dummyData"&lt;/span&gt; &lt;span class="na"&gt;:key=&lt;/span&gt;&lt;span class="s"&gt;"news.imgUrl"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;:src=&lt;/span&gt;&lt;span class="s"&gt;"news.imgUrl"&lt;/span&gt; &lt;span class="na"&gt;:alt=&lt;/span&gt;&lt;span class="s"&gt;"news.source"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"avatar"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;h1&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"header"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;news&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headline&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;h2&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"subheader"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;news&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;source&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"content"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;news&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"btn"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Read Full Article&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/section&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;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="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;IndexPage&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nf"&gt;data&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="na"&gt;dummyData&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;headline&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Someone said something&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;source&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;He&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Someone said something that sparked a flurry of excitement and anticipation among a small group of enthusiasts yesterday. The comment, which was made during an obscure online forum discussion, hinted at the possibility of a major breakthrough in a long-standing scientific mystery.Many experts in the field were quick to jump on the news, speculating on what the breakthrough could mean for the future of their discipline. The media also picked up on the story, with various outlets running headlines proclaiming the imminent discovery of something groundbreaking.However, as the hours turned into days, it became clear that there was no substance behind the original comment. In fact, the person who made the statement later admitted that it was nothing more than a passing thought that they had shared in the heat of the moment.The disappointment was palpable among the community that had been so excited just a few days earlier. Some criticized the media for running with a story without verifying its authenticity, while others expressed frustration at the person who had made the comment in the first place.Ultimately, though, the episode served as a reminder of the dangers of speculation and hype in the world of science.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;imgUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://images.pexels.com/photos/2608517/pexels-photo-2608517.jpeg?auto=compress&amp;amp;cs=tinysrgb&amp;amp;w=400&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="na"&gt;headline&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Something was said somewhere&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;source&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;She&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Something was said somewhere that has left many people scratching their heads and wondering what it could mean. The comment, which was reportedly made by a high-ranking government official during a closed-door meeting, has been the subject of intense speculation in political circles.Some have interpreted the remark as a sign that major policy changes are on the horizon, while others believe it could be a coded message to a foreign government. There are even those who think the comment was simply a slip of the tongue and should not be taken seriously.Despite the rampant speculation, no one seems to have a clear idea of what the comment was actually referring to. The government official who made the remark has not commented publicly on the matter, and it is unclear whether they will do so in the future.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;imgUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://images.pexels.com/photos/4969845/pexels-photo-4969845.jpeg?auto=compress&amp;amp;cs=tinysrgb&amp;amp;w=400&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="na"&gt;headline&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Somehow, somewhere, something happened&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;source&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;They&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Somehow, somewhere, something happened that has left experts in a state of confusion and bewilderment. The incident, which appears to have taken place in a remote corner of the world, involves a mysterious phenomenon that defies explanation.According to their report, a strange energy field appeared out of nowhere, hovering above the ice and snow for several hours before disappearing just as suddenly. The field appeared to be emitting a high-frequency signal that could not be detected by any of the instruments the researchers had brought with them.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;imgUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://images.pexels.com/photos/3810756/pexels-photo-3810756.jpeg?auto=compress&amp;amp;cs=tinysrgb&amp;amp;w=400&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="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;


&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;style&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="c"&gt;/*
These are the TailwindCSS custom classes. However, We are using their vanilla css forms from `assets/css/styles.css` for this tutorial.

.wrapper {
  @apply container tracking-wider text-center p-2;
}
.header {
  font-family: "Barlow", sans-serif;
  @apply font-bold text-4xl rounded-3xl shadow-xl  my-10 p-5 text-purple-600;
}
.subheader {
  font-family: "Ubuntu", sans-serif;
  @apply text-xl font-light underline;
}
.avatar {
  @apply rounded-full w-24 h-24 object-cover;
}
.card {
  @apply shadow-sm hover:shadow-xl transform transition-all duration-300 ease-in-out rounded w-5/6 my-8 text-left py-5 px-3 mx-auto cursor-pointer;
}
.card .header {
  @apply w-1/2 my-1 rounded-sm text-2xl shadow-none p-0;
}
.card .subheader {
  @apply text-xs;
}
.content {
  @apply my-5 text-xs;
}
.btn {
  @apply bg-purple-600 text-white uppercase font-bold tracking-wider rounded-2xl m-3 px-6 py-2 text-sm;
}
.truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
*/&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;style&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is what the &lt;code&gt;styles.css&lt;/code&gt; file looks like with all the vanilla css forms of the TailwindCSS custom classes. NOTE: THIS IS JUST FOR THE PURPOSE OF CONTINUITY IN REPLICATION OF THIS TUTORIAL NOT A REPRESENTATION OF THE ACTUAL PROJECT.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@import&lt;/span&gt; &lt;span class="sx"&gt;url("https://fonts.googleapis.com/css2?family=Barlow:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&amp;amp;display=swap")&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;@import&lt;/span&gt; &lt;span class="sx"&gt;url("https://fonts.googleapis.com/css2?family=Ubuntu:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,500;1,700&amp;amp;display=swap")&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nc"&gt;.wrapper&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin-right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.5rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.5rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.125rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;line-height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;letter-spacing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.025em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.avatar&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;9999px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;6rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;6rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;object-fit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;cover&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.card&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.05&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;transform-origin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transition-property&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transition-duration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.3s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transition-timing-function&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;cubic-bezier&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0.4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.25rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;83.333333%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;left&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.25rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.25rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.75rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.75rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin-right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;pointer&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.card&lt;/span&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt; &lt;span class="m"&gt;30px&lt;/span&gt; &lt;span class="m"&gt;-10px&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1.05&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#a78bfa&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#fff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.card&lt;/span&gt; &lt;span class="nc"&gt;.header&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;"Ubuntu"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.25rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.25rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.125rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.5rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.card&lt;/span&gt; &lt;span class="nc"&gt;.subheader&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.75rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.header&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;"Barlow"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;700&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2.25rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;line-height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2.5rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.5rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;25px&lt;/span&gt; &lt;span class="m"&gt;50px&lt;/span&gt; &lt;span class="m"&gt;-12px&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.25&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2.5rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2.5rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.25rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.25rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.25rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.25rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.subheader&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;"Ubuntu"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.25rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;700&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;letter-spacing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.1em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.content&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.25rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.25rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.75rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.btn&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;border-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;transparent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#9f7aea&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#fff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;text-transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;uppercase&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;700&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;letter-spacing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.1em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.375rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.75rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.75rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.5rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.5rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.5rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.5rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.875rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.btn&lt;/span&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#8b5cf6&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.truncate&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;overflow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;hidden&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;text-overflow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ellipsis&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;white-space&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;nowrap&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;There you go! A Nuxt.js. Progressive Web Application with all the basic functionalities. A quick lighthouse audit for PWA should indicate how much abstraction the Nuxt.js PWA module handles for all service workers, web manifests, and required assets for your web app. With this setup, once deployed, your browser should indicate that your web app is installable and even prompt you to do so in some browsers on some devices. &lt;a href="https://dev.to/paco_ita"&gt;Francesco Leardini&lt;/a&gt; has &lt;a href="https://dev.to/paco_ita/install-a-pwa-on-the-user-s-device-step-2-27pa"&gt;an in-depth article&lt;/a&gt; on user pwa installation for further reading. iPhones(Safari) will usually present a "Add To Home Page" button in the browser's share menu. The process is fairly similar in Chrome and on Android devices.&lt;/p&gt;

&lt;p&gt;The next part of this series will focus on fetching real news from an API, caching data and assets for offline accessibility and improving the quality of life of users with elements like helper pop-ups to guide them through installing the web app on first-time visit.&lt;/p&gt;

&lt;p&gt;The github repository for the project is available &lt;a href="https://github.com/vinosamari/sportswire" rel="noopener noreferrer"&gt;here.&lt;/a&gt;. Feel free to leave a comment on something i might have missed.&lt;/p&gt;

&lt;p&gt;Cheers!&lt;/p&gt;

</description>
      <category>pwa</category>
      <category>vue</category>
      <category>nuxt</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Offline Magic with Nuxt.js (Part 1): Making Your Web Apps Work Without the Internet in 2023</title>
      <dc:creator>Vino Samari</dc:creator>
      <pubDate>Sat, 25 Feb 2023 04:38:55 +0000</pubDate>
      <link>https://dev.to/vinosamari/offline-magic-with-nuxtjs-part-1-making-your-apps-work-without-the-internet-32a</link>
      <guid>https://dev.to/vinosamari/offline-magic-with-nuxtjs-part-1-making-your-apps-work-without-the-internet-32a</guid>
      <description>&lt;h3&gt;
  
  
  Nuxt.js is an awesome framework based on Vue.js that lets you create really powerful web apps with ease. One of the coolest things about Nuxt.js is that it makes building offline apps and Progressive Web Apps(PWAs) a snap. In this article, we'll show you how to take advantage of Nuxt.js's features and create web apps that work great even without an internet connection. So grab a coffee, get comfy, and let's get started!
&lt;/h3&gt;




&lt;h4&gt;
  
  
  What is a PWA?
&lt;/h4&gt;

&lt;p&gt;A progressive web application (PWA) is a web application that uses modern web technologies to provide a native app-like experience to users. PWAs can be installed on the user's device like a native app, and can work offline by caching the necessary data and resources. PWAs also provide other features such as push notifications, background syncing, and full-screen mode. Check out these &lt;a href="https://www.dizzain.com/blog/insights/pwa-examples/" rel="noopener noreferrer"&gt;10 Successful PWA Examples To Look Into In 2023.&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Using a project-based approach, this article will guide you through building an app that allows users to stay up-to-date with the latest sports news and updates. Let's call it Sportswire.&lt;/p&gt;

&lt;p&gt;Sportswire provides users with real-time sports news and analysis from various sources, including interviews, commentaries, and statistics. With a focus on younger audiences, Sportswire aims to deliver sports news in a fun and engaging way that appeals to younger sports fans.&lt;/p&gt;

&lt;p&gt;In the next part of this series, we will dive into the technical details of building a sports news web app with Nuxt.js and how we can implement various features and functionalities to create a seamless user experience. Let us begin our series on building sports news web apps with Nuxt.js and let's bring to life Sportswire.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Our app will use a mix of different technologies, with the frontend built on Vue and Nuxt. However, we're keeping our options open for the backend and other microservices, making them modular so we can easily integrate new features and dependencies as we develop. We'll start with a simple and comprehensive version of the app, and then gradually add more third-party libraries and services to enhance its capabilities and compare different stack choices.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>career</category>
      <category>careeradvice</category>
      <category>productivity</category>
      <category>mentorship</category>
    </item>
    <item>
      <title>Soft Skills for Developers: Beyond the IDE</title>
      <dc:creator>Vino Samari</dc:creator>
      <pubDate>Tue, 15 Jun 2021 13:18:42 +0000</pubDate>
      <link>https://dev.to/vinosamari/non-tech-skills-you-need-to-develop-to-improve-the-quality-of-your-work-2jpe</link>
      <guid>https://dev.to/vinosamari/non-tech-skills-you-need-to-develop-to-improve-the-quality-of-your-work-2jpe</guid>
      <description>&lt;p&gt;As a developer, you know that coding is only part of the job. You also need soft skills that will help you communicate, collaborate, and problem-solve with your team, as well as understand the needs of your clients and users. In this article, we'll discuss some non-technical skills that you can develop to improve the quality of your work.&lt;/p&gt;




&lt;h5&gt;
  
  
  Feel free to leave additions, more tips and build on top of the information you've picked up from reading.
&lt;/h5&gt;




&lt;h1&gt;
  
  
  1. Read, Read, Read
&lt;/h1&gt;

&lt;p&gt;Reading is a great way to improve your communication skills, vocabulary, and knowledge base. As a developer, you'll be doing a lot of reading: code, documentation, Stackoverflow questions, and more. Reading helps you learn new ways to solve problems, understand the language and terminology used in your field, and communicate your ideas more effectively.&lt;/p&gt;

&lt;p&gt;But reading doesn't have to be a chore. You can read books, blogs, articles, or anything else that interests you. The key is to read regularly and at your own pace. Don't worry about understanding everything on the first try. Take your time and reread sections that you find difficult. As you read more, you'll start to recognize patterns and deepen your understanding of the topics you're interested in.&lt;/p&gt;

&lt;p&gt;Reading also helps you improve your writing skills. As a web developer, you'll need to write documentation, comments, and commit messages that are clear and concise. Reading will help you develop a writing style that's easy to understand and engaging.&lt;/p&gt;

&lt;h1&gt;
  
  
  2. Play Chess, Sudoku, or Jigsaw Puzzles
&lt;/h1&gt;

&lt;p&gt;Chess, sudoku, and jigsaw puzzles are great for developing problem-solving skills, pattern recognition, and strategic thinking. These skills will help you anticipate issues and find solutions faster when you're working on complex projects.&lt;/p&gt;

&lt;p&gt;Playing these games also helps you develop your focus and attention to detail. You'll start to notice small details that you might have missed before, and you'll be better at identifying patterns and trends.&lt;/p&gt;

&lt;p&gt;Chess, in particular, is a great game for developing strategic thinking. It teaches you to think ahead and anticipate your opponent's moves. This skill translates well to software development, where you need to anticipate potential issues and plan for them in advance.&lt;/p&gt;

&lt;p&gt;Sudoku and jigsaw puzzles are also great for developing problem-solving skills. They help you break down complex problems into smaller, more manageable parts. This skill is essential for software development, where you'll need to break down complex tasks into smaller, more manageable ones.&lt;/p&gt;

&lt;h1&gt;
  
  
  3. Improve by Writing More Often
&lt;/h1&gt;

&lt;p&gt;Writing is an essential skill for programmers. It helps you communicate effectively with other team members and stakeholders. It also helps you organize your thoughts and ideas, and document your code for future reference. Writing can also help you become a better problem-solver by forcing you to articulate your ideas clearly and concisely. Start by writing comments in your code, then progress to writing technical documentation, blog posts, and articles. Over time, you'll find that writing becomes easier and you'll be able to express yourself more effectively.&lt;/p&gt;

&lt;h1&gt;
  
  
  4. Improve by Building Relationships
&lt;/h1&gt;

&lt;p&gt;Programming is not a solitary activity. It requires collaboration with team members, stakeholders, and clients. Building strong relationships is essential to effective collaboration. Take the time to get to know your team members and stakeholders. Communicate effectively, listen actively, and be open to feedback. Building strong relationships can help you create a positive work environment, improve team morale, and ultimately lead to better quality work.&lt;/p&gt;

&lt;h1&gt;
  
  
  5. Improve by Learning New Things
&lt;/h1&gt;

&lt;p&gt;The field of programming is constantly evolving. New technologies, tools, and frameworks are being developed all the time. To stay relevant and competitive, it's important to keep learning and growing. Take the time to learn new programming languages, frameworks, and tools. Attend conferences, webinars, and workshops. Read blogs, articles, and books. Participate in online forums and communities. Learning new things can help you become a better programmer, broaden your skillset, and ultimately lead to better quality work.&lt;/p&gt;

&lt;h1&gt;
  
  
  6. Improve by Taking Care of Yourself
&lt;/h1&gt;

&lt;p&gt;Programming can be a mentally and physically demanding activity. It's important to take care of yourself in order to avoid burnout and maintain your productivity. Make sure to get enough sleep, exercise regularly, and eat a healthy diet. Take breaks and disconnect from work when necessary. Practice mindfulness and meditation to reduce stress and improve mental clarity. Taking care of yourself can help you stay focused, motivated, and ultimately lead to better quality work.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Conclusion&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Developing soft skills is just as important as developing technical skills in today's job market. By reading regularly and playing games like chess, sudoku, or jigsaw puzzles, you can improve your communication, problem-solving, and strategic thinking skills. These skills will help you become a better developer and advance in your career. So, take some time away from the IDE and work on developing these skills. Your future self will thank you!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>career</category>
      <category>softskills</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
