<?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: Jacob Marshall</title>
    <description>The latest articles on DEV Community by Jacob Marshall (@jhqcat).</description>
    <link>https://dev.to/jhqcat</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%2F518752%2Fa77513a0-c923-4c85-82ae-1bd659cf674e.jpg</url>
      <title>DEV Community: Jacob Marshall</title>
      <link>https://dev.to/jhqcat</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jhqcat"/>
    <language>en</language>
    <item>
      <title>Product launch: Startrack</title>
      <dc:creator>Jacob Marshall</dc:creator>
      <pubDate>Fri, 03 Jun 2022 14:58:52 +0000</pubDate>
      <link>https://dev.to/jhqcat/product-launch-startrack-1b2c</link>
      <guid>https://dev.to/jhqcat/product-launch-startrack-1b2c</guid>
      <description>&lt;p&gt;Recently, I launched Startrack in a &lt;a href="https://www.youtube.com/watch?v=_ymQsetuz_Q"&gt;YouTube livestream&lt;/a&gt;. It's an easier way to star repos on GitHub. Commonly, you'll head to a repo with the intent to star. Perhaps you saw the website first, or have been using the project for a while but not starred. When you click the link to a repo, you are overwhelmed by a lot of useful information like files, the README, and commit history. This can cause you to loose that intent to star.&lt;/p&gt;

&lt;p&gt;Startrack aims to solve this problem, and is a bit like &lt;a href="https://developer.twitter.com/en/docs/twitter-for-websites/web-intents/overview"&gt;twitter intents&lt;/a&gt;. With Startrack, that intent is preserved. When you go to a Startrack starring page, you are presented with some context about the repo, like a name, description and author, along with a button to star in &lt;em&gt;one click&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I am able to achieve this great user experience, because the first time you attempt to star a repo, you are prompted to authenticate with GitHub. Startrack then receives an oAuth token, which it uses to authenticate with the GitHub API. As this token is persisted in a database, you can easily star repos with minimal friction.&lt;/p&gt;

&lt;p&gt;Another key feature of Startrack is its ease of setup. All it takes to use Startrack with your repo is a URL in this format:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://startrack.vercel.app/star/[OWNER]/[REPO]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it! There is no complex setup required. And Startrack also offers an easy and fast way for returning back to the page you were starring from. It uses the history stack to go back, allowing for the page to be served from the browser cache for fast load times. This results in minimal disruption to the user.&lt;/p&gt;

&lt;p&gt;That's it for this post! If you enjoyed it and are able to financially support me, please &lt;a href="https://buymeacoffee.com/jem"&gt;buy me a coffee&lt;/a&gt;. Otherwise, a Twitter follow (&lt;a href="https://twitter.com/intent/follow?screen_name=jhqcat"&gt;@jqcat&lt;/a&gt;) or a YouTube subscribe (&lt;a href="https://www.youtube.com/channel/UChXCa0OuD-HYr3QAESK434g"&gt;Jacob Marshall&lt;/a&gt;) would be nice. You can also &lt;a href="https://startrack.vercel.app/star/jacobhq/startrack"&gt;star this repo&lt;/a&gt; or follow me on GitHub (&lt;a href="https://github.com/jacobhq"&gt;@jacobhq&lt;/a&gt;). Have a great day.&lt;/p&gt;

</description>
      <category>react</category>
      <category>github</category>
      <category>nextjs</category>
      <category>githubstars</category>
    </item>
    <item>
      <title>How to set up k3s on a raspberry pi 4</title>
      <dc:creator>Jacob Marshall</dc:creator>
      <pubDate>Mon, 23 Aug 2021 15:01:19 +0000</pubDate>
      <link>https://dev.to/jhqcat/how-to-set-up-k3s-on-a-raspberry-pi-4-4343</link>
      <guid>https://dev.to/jhqcat/how-to-set-up-k3s-on-a-raspberry-pi-4-4343</guid>
      <description>&lt;h3&gt;
  
  
  Provisioning your pi
&lt;/h3&gt;

&lt;p&gt;You'll need to download and install raspberry pi imager from the &lt;a href="https://www.raspberrypi.org/software/" rel="noopener noreferrer"&gt;official website&lt;/a&gt;. After you've done that, open it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fya02ovut0aej9nsnl8cs.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%2Fya02ovut0aej9nsnl8cs.png" alt="Raspberry pi imager"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then from the choose os menu, select &lt;code&gt;Raspberry pi OS (other)&lt;/code&gt;, and then select &lt;code&gt;Raspberry pi OS lite (32 bit)&lt;/code&gt;. Make sure you have your sd card inserted into your computer, then choose it from the storage menu.&lt;/p&gt;

&lt;p&gt;Now, hit &lt;code&gt;CTRL + SHIFT + X&lt;/code&gt; with the imager window focused.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fav0ox33s18xkjt1p05ej.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%2Fav0ox33s18xkjt1p05ej.png" alt="Raspberry pi imager config menu"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then configure ssh (use a password if you're new to ssh, or otherwise use a public key), wifi (if your not using ethernet), and a hostname. Now hit save, and then hit write to flash your sd card. You might need to authenticate, depending on your OS.&lt;/p&gt;

&lt;p&gt;After you've flashed the sd card, remove it, then plug it back into your computer. Now, edit &lt;code&gt;cmdline.txt&lt;/code&gt;, if your using linux, its on the &lt;code&gt;boot&lt;/code&gt; partition of the drive. After the word &lt;code&gt;rootwait&lt;/code&gt;, add a space, then add &lt;code&gt;cgroup_memory=1 cgroup_enable=memory&lt;/code&gt;. Save the file. Now open &lt;code&gt;config.txt&lt;/code&gt; and add &lt;code&gt;arm_64bit=1&lt;/code&gt; to the end of the file.&lt;/p&gt;

&lt;h3&gt;
  
  
  K3S install
&lt;/h3&gt;

&lt;p&gt;Now for the moment of truth! Plug in your sd card, and boot up your pi. SSH in to your pi using the hostname you set, followed by &lt;code&gt;.local&lt;/code&gt;. So &lt;code&gt;pi@kube1.local&lt;/code&gt; for me. Type &lt;code&gt;yes&lt;/code&gt; if prompted to accept the fingerprint. If you used a password, you'll be prompted to enter it, and if you used a public key, you'll be logged in automatically.&lt;/p&gt;

&lt;p&gt;Now, will need to use legacy iptables for kubernetes to work properly. Run these commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;sudo iptables -F sudo update-alternatives --set iptables /usr/sbin/iptables-legacy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo reboot&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your ssh session will close automatically, and you'll need to reconnect. &lt;/p&gt;

&lt;p&gt;Now, you'll need to install k3s. First become root by running &lt;code&gt;sudo su -&lt;/code&gt;, then install k3s by running &lt;code&gt;curl -sfL https://get.k3s.io | sh -&lt;/code&gt;. After that's done, check for nodes, by running &lt;code&gt;kubectl get node&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you only have one device in your cluster, read on, and if not, you're all done.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On your master node (the node that you just set up), run this command to get your token: &lt;code&gt;sudo cat /var/lib/rancher/k3s/server/node-token&lt;/code&gt;. Now on the pi you want to add to your cluster (the node), follow the provisioning steps, and edit the iptables. Now fill in this command: &lt;code&gt;curl -sfL https://get.k3s.io | K3S_TOKEN="[the output of above command]" K3S_URL="https://[your master ip]:6443" K3S_NODE_NAME="[name of node]" sh -&lt;/code&gt;, and run it on the node. Repeat this for the number of nodes that you have.&lt;/p&gt;

&lt;p&gt;Now, why not &lt;a href="https://www.buymeacoffee.com/jem" rel="noopener noreferrer"&gt;buy me a coffee&lt;/a&gt;, or follow me on &lt;a href="https://twitter.com/jhqcat" rel="noopener noreferrer"&gt;twitter&lt;/a&gt; or &lt;a href="https://github.com/jacobhq" rel="noopener noreferrer"&gt;github&lt;/a&gt;. Have a great day. :)&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>k3s</category>
      <category>raspberrypi</category>
    </item>
    <item>
      <title>Create a production-ready storybook with tailwind</title>
      <dc:creator>Jacob Marshall</dc:creator>
      <pubDate>Mon, 29 Mar 2021 20:34:02 +0000</pubDate>
      <link>https://dev.to/jhqcat/create-a-production-ready-storybook-with-tailwind-3nhf</link>
      <guid>https://dev.to/jhqcat/create-a-production-ready-storybook-with-tailwind-3nhf</guid>
      <description>&lt;p&gt;Hello everyone, I recently experienced a lot of pain trying to use tailwind, nextjs and storybook for a project. It took a lot of work (and time) to finally get it to work in production, so I thought I'd share a few tips.&lt;/p&gt;

&lt;p&gt;If you have used tailwind, you probably know it uses postcss, which allows for things like treeshaking. Now, I'd used tailwind loads, but I'd usually just followed the installation docs, and left it at that. Anyway, let me show you how I did it.&lt;/p&gt;

&lt;p&gt;First, I ran &lt;code&gt;yarn create next-app&lt;/code&gt;, to bootstrap a nextjs project. Then I installed tailwind by running &lt;code&gt;yarn add -D tailwindcss@latest postcss@latest autoprefixer@latest&lt;/code&gt;. I know nextjs already has postcss, but I install it anyway, to ensure it's up to date. I didn't use the &lt;code&gt;pages&lt;/code&gt; directory for this project, so you can clean out all the files in there. You now have a nextjs app with tailwind.&lt;/p&gt;

&lt;p&gt;It's a good moment to add your tailwind config, so run &lt;code&gt;npx tailwindcss init -p&lt;/code&gt; to create a &lt;code&gt;tailwind.config.js&lt;/code&gt; and a &lt;code&gt;postcss.config.js&lt;/code&gt;. Now let's run &lt;code&gt;npx sb init&lt;/code&gt; to create a storybook. Now run &lt;code&gt;yarn add @storybook/addon-postcss&lt;/code&gt; and add&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;// .storybook/main.js&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="s1"&gt;@storybook/addon-postcss&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;postcssLoaderOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;implementation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;postcss&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to your &lt;code&gt;.storybook/main.js&lt;/code&gt; file. The &lt;code&gt;.storybook/main.js&lt;/code&gt; should now look something like this:&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;// .storybook/main.js&lt;/span&gt;
&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;stories&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;../stories/**/*.stories.mdx&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;../stories/**/*.stories.@(js|jsx|ts|tsx)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;addons&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@storybook/addon-links&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@storybook/addon-essentials&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="s1"&gt;@storybook/addon-postcss&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
     &lt;span class="na"&gt;options&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="na"&gt;postcssLoaderOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
         &lt;span class="na"&gt;implementation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;postcss&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now head to &lt;code&gt;stories/assets&lt;/code&gt; and create a &lt;code&gt;globals.css&lt;/code&gt; file with the following:&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="c"&gt;/* stories/assets/globals.css */&lt;/span&gt;
&lt;span class="k"&gt;@tailwind&lt;/span&gt; &lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;@tailwind&lt;/span&gt; &lt;span class="n"&gt;components&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;@tailwind&lt;/span&gt; &lt;span class="n"&gt;utilities&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add any custom styles above the &lt;code&gt;@tailwind&lt;/code&gt; rules. To import your css in dvelopment, add &lt;code&gt;import '../stories/assets/globals.css'&lt;/code&gt; to your &lt;code&gt;.storybook/preview.js&lt;/code&gt; file. Now, to import your treeshaken css in production, create a file called &lt;code&gt;.storybook/preview-head.html&lt;/code&gt; and populate it with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- .storybook/preview-head.html !--&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"./app.css"&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;Now install &lt;code&gt;postcss-cli&lt;/code&gt; by running &lt;code&gt;yarn add postcss-cli&lt;/code&gt;. Now replace the &lt;code&gt;scripts&lt;/code&gt; section of your &lt;code&gt;package.json&lt;/code&gt; file with this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dev"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"next dev"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"build"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"yarn build-css &amp;amp;&amp;amp; yarn build-storybook"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"start"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"next start"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"storybook"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"start-storybook -s ./stories/assets -p 6006"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"build-css"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"postcss ./stories/assets/globals.css -o ./stories/assets/app.css"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"build-storybook"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"build-storybook -s ./stories/assets"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Congratulations! You now have a tailwindcss storybook. You can now use &lt;a href="https://chromatic.com/"&gt;Chromatic&lt;/a&gt; or a static hosting company to deploy your app. If you use &lt;a href="https://vercel.com"&gt;Vercel&lt;/a&gt;, I'll show you how to deploy.&lt;/p&gt;

&lt;p&gt;Import your repo, and then ensure you have setup your commands like this:&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjjqrt8fo52mk7xptow83.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjjqrt8fo52mk7xptow83.png" alt="Vercel deployment" width="573" height="554"&gt;&lt;/a&gt;&lt;br&gt;
Now you are actually done :). Thanks for reading, that was my first article on dev.to! Please follow me on &lt;a href="https://github.com/jacobhq"&gt;github&lt;/a&gt; and let me know in the comments what thought!&lt;/p&gt;

</description>
      <category>storybook</category>
      <category>nextjs</category>
      <category>tailwindcss</category>
    </item>
  </channel>
</rss>
