<?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>Forem: Venkata Naga Sai Nivas Mangu</title>
    <description>The latest articles on Forem by Venkata Naga Sai Nivas Mangu (@linuxdotexe).</description>
    <link>https://forem.com/linuxdotexe</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%2F745989%2F01feae09-8def-4036-9182-fab94616f58c.jpg</url>
      <title>Forem: Venkata Naga Sai Nivas Mangu</title>
      <link>https://forem.com/linuxdotexe</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/linuxdotexe"/>
    <language>en</language>
    <item>
      <title>Jamstack!</title>
      <dc:creator>Venkata Naga Sai Nivas Mangu</dc:creator>
      <pubDate>Sun, 06 Feb 2022 00:00:00 +0000</pubDate>
      <link>https://forem.com/linuxdotexe/jamstack-41ge</link>
      <guid>https://forem.com/linuxdotexe/jamstack-41ge</guid>
      <description>&lt;p&gt;I came to know about Jamstack through Netlify, back when I didn’t know anything about web development (except that HTML is easy and CSS is scary). I started discovering the architecture recently and I must say, I’m having a lot of fun! I wanted to document what I’ve been learning here with the hope that it might help someone who is on the same path as I am.&lt;/p&gt;

&lt;p&gt;So, let’s get started!&lt;/p&gt;

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

&lt;p&gt;&lt;a href="///static/0d7223bad9ae9a224696c49c9c017e29/cecac/jamstack_abbr.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GkY3klGD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://layman.dev/static/0d7223bad9ae9a224696c49c9c017e29/f058b/jamstack_abbr.png" alt="jamstack abbr pic" title="jamstack abbr pic" width="630" height="199"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Jamstack is an architecture designed to make the web faster, more secure, and easier to scale. It builds on many of the tools and workflows which developers love, and which bring maximum productivity.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Simply put, it is a practice of making websites a certain way that is simpler than the traditional monolithic way. Imagine you are building a fullstack application. The typical approach to this problem would be to build the front-end and back-end as one application, connect it to a database, host the backend to run on a server and manage these servers. This approach sounds complicated.&lt;/p&gt;

&lt;p&gt;Now, consider Jamstack.&lt;/p&gt;

&lt;p&gt;It uses the principles of &lt;a href="https://jamstack.org/glossary/pre-render/"&gt;pre-rendering&lt;/a&gt; and &lt;a href="https://jamstack.org/glossary/decoupling/"&gt;decoupling&lt;/a&gt; to increase simplicity and help deliver faster more secure web applications. This means you don’t have to worry about maintaining servers, scaling and other back-end stuff since the &lt;a href="https://jamstack.org/glossary/cdn/"&gt;CDN&lt;/a&gt; already took care of it.&lt;/p&gt;

&lt;p&gt;At a high level, Jamstack consists of the following components:&lt;/p&gt;

&lt;h3&gt;
  
  
  JavaScript
&lt;/h3&gt;

&lt;p&gt;JavaScript allows us to provide all of the dynamic and interactive parts of our application and make it more than just markup. It also allows us to organize our code, access necessary APIs and increase the functionality of our web app.&lt;/p&gt;

&lt;h3&gt;
  
  
  APIs
&lt;/h3&gt;

&lt;p&gt;This layer powers up our application. Using APIs, we can fetch data from an outside source and hydrate our pre-built markup. This opens up endless possibilities for creating applications with the Jamstack architecture.&lt;/p&gt;

&lt;h3&gt;
  
  
  Markup
&lt;/h3&gt;

&lt;p&gt;Markup can be the HTML you wrote or the JavaScript that compiles to HTML on the frontend. Markup is what the user ends up seeing on your web application.&lt;/p&gt;

&lt;p&gt;For a web application to be considered a Jamstack app, the HTML needs to be served statically.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Jamstack works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;We build pages using basic markup like HTML or something more functional like JavaScript.&lt;/li&gt;
&lt;li&gt;If we used JavaScript of a JS framework, we use a build tool like webpack to make these pages deployment ready i.e., convert the JS to HTML on the server.&lt;/li&gt;
&lt;li&gt;These deployment-ready HTML files can be served from a CDN (like Netlify or Vercel) which cache the data as needed and deliver these pages all over the world.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Comparison to traditional stacks
&lt;/h2&gt;

&lt;p&gt;In traditional monolithic stacks like MEAN or MERN, the JavaScript framework used i.e., Angular and React are client-side rendered. This means when the site is served, the JavaScript loads and manipulates the &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Introduction"&gt;Document Object Model(DOM)&lt;/a&gt; when the site is accessed by the user. This results in a slower load time.&lt;/p&gt;

&lt;p&gt;In Jamstack, the CDN builds the delivered JavaScript files and delivers HTML files to the user which results in a comparatively faster load time. Even for a dynamic web application, all the non-dynamic parts are pre-rendered and the dynamic elements are then hydrated into the site on the client side.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Jamstack?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Security
&lt;/h3&gt;

&lt;p&gt;On a Jamstack site, there aren’t many moving parts when it is delivered. Everything is rendered into HTML files which makes some common attacks like SQL injection impossible.&lt;/p&gt;

&lt;p&gt;&lt;a href="///static/a16884e08d9943527fc60466fbcdeae7/eafa3/dbmeme.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pQjiH51Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://layman.dev/static/a16884e08d9943527fc60466fbcdeae7/828fb/dbmeme.jpg" alt="Fine handmade meme to keep you engaged" title="Fine handmade meme to keep you engaged" width="630" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;( Well, you CAN have a DB if you want to. You can have it in the API layer of Jamstack by using something like Hasura )&lt;/p&gt;

&lt;h3&gt;
  
  
  Scale
&lt;/h3&gt;

&lt;p&gt;In the case of monolithic stacks, the application needs logic on the server to cache the most accessed content. For Jamstack sites, the CDN takes care of caching entirely.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;With Jamstack sites, everything can be cached in a content delivery network. With simpler deployments, built-in redundancy and incredible load capacity.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Performance
&lt;/h3&gt;

&lt;p&gt;Since the pages are served pre-rendered, there will be a noticeable increase in performance. With all the pages already available on a CDN close to the user’s location, load times will also be decreased.&lt;/p&gt;

&lt;h3&gt;
  
  
  Maintainability
&lt;/h3&gt;

&lt;p&gt;You won’t have any maintenance tasks on the server side since it is taken care of by the CDN. The biggest maintenance issue you might face is to update your packages which can be very easily solved with a tool like Snyk since it makes PRs with the required changes. You just have to merge the PR and you are good to go. This gives the developer more time to concentrate on the application.&lt;/p&gt;

&lt;h3&gt;
  
  
  Portability
&lt;/h3&gt;

&lt;p&gt;The entire site can be stored in a single git repository. You can import into a CDN of your choice and you are good to go. This makes switching CDNs easier.&lt;/p&gt;

&lt;h3&gt;
  
  
  Developer Experience
&lt;/h3&gt;

&lt;p&gt;Jamstack sites can be built with just HTML, JavaScript, any of the many JS frameworks, or a simple static site generator like Hugo, Jekyll and many more. These are existing technologies many developers are familiar with and the Jamstack architecture is basically how most developers build websites. Hence, the development process will be efficient and effective.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hosting options
&lt;/h2&gt;

&lt;p&gt;All you need to host a Jamstack site is a Content Delivery Network (CDN). CDN eliminates the need for you to do the deployment tasks like maintaining and scaling servers, setting up CI/CD, configuring the CDN. It allows you to write code and not worry about the deployment process. Here are the two popular options you should consider:&lt;/p&gt;

&lt;h3&gt;
  
  
  Netlify
&lt;/h3&gt;

&lt;p&gt;Netlify is one of the most famous content delivery networks out there and has a lot of interesting features. It allows you to host your website on their CDN and assign a Netlify subdomain for free. You can write Lambda functions to run during build time if necessary, configure Netlify Forms for collecting data, see the analytics of your website too! All in one place. They have a generous free tier called “Starter” which covers automated builds with each push to your site’s repository, live site previews, instant rollbacks, 1 concurrent build, 100 GB bandwidth and 300 build minutes per month.&lt;/p&gt;

&lt;p&gt;Know more at &lt;a href="https://netlify.com/pricing"&gt;Netlify&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vercel
&lt;/h3&gt;

&lt;p&gt;Vercel is also one of the most famous CDNs and it has similar features to Netlify in most cases. They also have a generous free tier called “Hobby” which gives you 100 GB bandwidth, serverless functions, 1 concurrent build, 6000 minutes of build time per month and free analytics.&lt;/p&gt;

&lt;p&gt;Know more at &lt;a href="https://vercel.com/pricing"&gt;Vercel&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://jamstack.wtf"&gt;JAMstack WTF&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/what-is-the-jamstack-and-how-do-i-host-my-website-on-it/"&gt;What is Jamstack and how do I get started?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/an-introduction-to-the-jamstack-the-architecture-of-the-modern-web-c4a0d128d9ca/"&gt;An introduction to the Jamstack: the architecture of the modern web&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=ySJGjo3_EX4"&gt;What is the Jamstack?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>jamstack</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Update wallpaper previews on each push</title>
      <dc:creator>Venkata Naga Sai Nivas Mangu</dc:creator>
      <pubDate>Wed, 01 Dec 2021 02:24:40 +0000</pubDate>
      <link>https://forem.com/linuxdotexe/update-wallpaper-previews-on-each-push-29i5</link>
      <guid>https://forem.com/linuxdotexe/update-wallpaper-previews-on-each-push-29i5</guid>
      <description>&lt;p&gt;I maintain a wallpaper collection repository &lt;a href="https://github.com/linuxdotexe/nordic-wallpapers"&gt;nordic-wallpapers&lt;/a&gt; and I have a &lt;code&gt;wallpaper-preview.md&lt;/code&gt; in that repo to preview all the available wallpapers. I used to have a script that needed to be run before each commit to update the wallpapers. I shifted that to GitHub Actions because I thought all wallpaper enthusiasts might not be able to run the scripts.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;

&lt;p&gt;These are the steps involved in my workflow (not including cloning the repository into the system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get a list of all the available wallpapers

&lt;ul&gt;
&lt;li&gt;This uses the &lt;code&gt;ls&lt;/code&gt; command and redirects the output of that command into the &lt;code&gt;wallpaper-preview.md&lt;/code&gt; file wiping the file clean in the process to avoid duplicate previews.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Add the markdown syntax for previewing images around the file name

&lt;ul&gt;
&lt;li&gt;This step is executed as a multi-line script in the workflow.&lt;/li&gt;
&lt;li&gt;The first step adds the &lt;code&gt;![](&lt;/code&gt; in-front of each line using the &lt;code&gt;sed&lt;/code&gt; tool.&lt;/li&gt;
&lt;li&gt;The second step adds the &lt;code&gt;)&lt;/code&gt; at the end of each line using the &lt;code&gt;sed&lt;/code&gt; tool.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Add a heading and an empty line between the heading and the wallpapers

&lt;ul&gt;
&lt;li&gt;This adds the page heading &lt;code&gt;# Wallpapers in this repository&lt;/code&gt; using the &lt;code&gt;sed&lt;/code&gt; tool.&lt;/li&gt;
&lt;li&gt;To add a new line, I used the &lt;code&gt;sed&lt;/code&gt; tool to search for "# Wallpapers" and add an empty line in the immediately next line.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Commit and push changes to the repository

&lt;ul&gt;
&lt;li&gt;I used EndBug/add-and-commit to commit the changes to the repository and ad-m/github-push-action to push the changes.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/EndBug"&gt;
        EndBug
      &lt;/a&gt; / &lt;a href="https://github.com/EndBug/add-and-commit"&gt;
        add-and-commit
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Add &amp;amp; commit files from a path directly from GitHub Actions
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Add &amp;amp; Commit&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://github.com/search?o=desc&amp;amp;q=EndBug+add-and-commit+path%3A.github%2Fworkflows+language%3AYAML&amp;amp;s=&amp;amp;type=Code"&gt;&lt;img src="https://camo.githubusercontent.com/519b2b0aa21f11bae88a163c76bb7bf27d8030e148ad7455de024c4c82652402/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f75726c3d68747470732533412532462532466170692d656e646275672e76657263656c2e6170702532466170692532466769746875622d616374696f6e73253246757365642d6279253346616374696f6e253344456e644275672532466164642d616e642d636f6d6d6974253236626164676525334474727565" alt="Public workflows that use this action."&gt;&lt;/a&gt;
&lt;a href="https://github.com/EndBug/add-and-commit#contributors-"&gt;&lt;img src="https://camo.githubusercontent.com/81d05f0713fb6b53b8ce9d8ef668ee3f824a09b659cf8f80ea69fc3ff1ec693c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616c6c2d636f6e7472696275746f72732f456e644275672f6164642d616e642d636f6d6d6974" alt="All Contributors"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can use this GitHub Action to commit changes made in your workflow run directly to your repo: for example, you use it to lint your code, update documentation, commit updated builds, etc....&lt;/p&gt;
&lt;p&gt;This is &lt;strong&gt;heavily&lt;/strong&gt; inspired by &lt;a href="https://github.com/stefanzweifel/git-auto-commit-action"&gt;git-auto-commit-action&lt;/a&gt; (by &lt;a href="https://github.com/stefanzweifel"&gt;Stefan Zweifel&lt;/a&gt;): that action automatically detects changed files and commits them. While this is useful for most situations, this doesn't commit untracked files and can sometimes commit unintended changes (such as &lt;code&gt;package-lock.json&lt;/code&gt; or similar, that may have happened during previous steps).&lt;br&gt;
This action lets you choose the path that you want to use when adding &amp;amp; committing changes so that it works as you would normally do using &lt;code&gt;git&lt;/code&gt; on your machine.&lt;/p&gt;
&lt;h2&gt;
Inputs&lt;/h2&gt;
&lt;p&gt;Add a step like this to your workflow:&lt;/p&gt;
&lt;div class="highlight highlight-source-yaml position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;- &lt;span class="pl-ent"&gt;uses&lt;/span&gt;: &lt;span class="pl-s"&gt;EndBug/add-and-commit@v7 &lt;/span&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; You can change this to use a specific version.&lt;/span&gt;
  &lt;span class="pl-ent"&gt;with&lt;/span&gt;
    &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; The arguments for the `git add` command (see&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/EndBug/add-and-commit"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ad-m"&gt;
        ad-m
      &lt;/a&gt; / &lt;a href="https://github.com/ad-m/github-push-action"&gt;
        github-push-action
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      GitHub actions to push back to repository eg. updated code
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
GitHub Action for GitHub Push&lt;/h1&gt;
&lt;p&gt;The GitHub Actions for pushing to GitHub repository local changes authorizing using GitHub token.&lt;/p&gt;
&lt;p&gt;With ease:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;update new code placed in the repository, e.g. by running a linter on it,&lt;/li&gt;
&lt;li&gt;track changes in script results using Git as archive,&lt;/li&gt;
&lt;li&gt;publish page using GitHub-Pages,&lt;/li&gt;
&lt;li&gt;mirror changes to a separate repository.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Usage&lt;/h2&gt;
&lt;h3&gt;
Example Workflow file&lt;/h3&gt;
&lt;p&gt;An example workflow to authenticate with GitHub Platform:&lt;/p&gt;
&lt;div class="highlight highlight-source-yaml position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-ent"&gt;jobs&lt;/span&gt;
  &lt;span class="pl-ent"&gt;build&lt;/span&gt;:
    &lt;span class="pl-ent"&gt;runs-on&lt;/span&gt;: &lt;span class="pl-s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="pl-ent"&gt;steps&lt;/span&gt;:
    - &lt;span class="pl-ent"&gt;uses&lt;/span&gt;: &lt;span class="pl-s"&gt;actions/checkout@v2&lt;/span&gt;
      &lt;span class="pl-ent"&gt;with&lt;/span&gt;:
        &lt;span class="pl-ent"&gt;persist-credentials&lt;/span&gt;: &lt;span class="pl-s"&gt;false &lt;/span&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; otherwise, the token used is the GITHUB_TOKEN, instead of your personal access token.&lt;/span&gt;
        &lt;span class="pl-ent"&gt;fetch-depth&lt;/span&gt;: &lt;span class="pl-c1"&gt;0&lt;/span&gt; &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; otherwise, there would be errors pushing refs to the destination repository.&lt;/span&gt;
    - &lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;Create local changes&lt;/span&gt;
      &lt;span class="pl-ent"&gt;run&lt;/span&gt;: &lt;span class="pl-s"&gt;|&lt;/span&gt;
&lt;span class="pl-s"&gt;        ...&lt;/span&gt;
    - &lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;Commit files&lt;/span&gt;
      &lt;span class="pl-ent"&gt;run&lt;/span&gt;: &lt;span class="pl-s"&gt;|&lt;/span&gt;
&lt;span class="pl-s"&gt;        git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"&lt;/span&gt;
&lt;span class="pl-s"&gt;        git config --local user.name "github-actions[bot]"&lt;/span&gt;
&lt;span class="pl-s"&gt;        git commit -m "Add changes" -a&lt;/span&gt;
    - &lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ad-m/github-push-action"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Wacky Wildcards&lt;/p&gt;

&lt;h3&gt;
  
  
  Yaml File
&lt;/h3&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;p&gt;Link to the repository:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/linuxdotexe"&gt;
        linuxdotexe
      &lt;/a&gt; / &lt;a href="https://github.com/linuxdotexe/nordic-wallpapers"&gt;
        nordic-wallpapers
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A collection of wallpapers that go well with the rices inspired by the Nord Colorscheme
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Website:&lt;/p&gt;

&lt;p&gt;I made a website using gatsby to preview all the wallpapers more easily. &lt;a href="https://nordicwallpapers.vercel.app"&gt;Here&lt;/a&gt; is a link for the website.&lt;/p&gt;

&lt;p&gt;The website is also open source. I am new to web development and can use all the help I can get from the community. PRs are very welcome.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/linuxdotexe"&gt;
        linuxdotexe
      &lt;/a&gt; / &lt;a href="https://github.com/linuxdotexe/nordic-wallpapers-website"&gt;
        nordic-wallpapers-website
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A Gatsby website that uses the GitHub API to easily preview all the wallpapers in my nordic-wallpapers repository,
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;This is my first time sharing a post here. Very glad to be on dev.to :)&lt;/p&gt;

</description>
      <category>actionshackathon21</category>
      <category>actionshackathon</category>
      <category>github</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
