<?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: Tara Z. Manicsic</title>
    <description>The latest articles on DEV Community by Tara Z. Manicsic (@tzmanics).</description>
    <link>https://dev.to/tzmanics</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%2F102140%2F2f7af55e-694d-47d3-ad56-53804026eea6.png</url>
      <title>DEV Community: Tara Z. Manicsic</title>
      <link>https://dev.to/tzmanics</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tzmanics"/>
    <language>en</language>
    <item>
      <title>Deploying with the Click of a Button</title>
      <dc:creator>Tara Z. Manicsic</dc:creator>
      <pubDate>Mon, 03 Jan 2022 04:26:50 +0000</pubDate>
      <link>https://dev.to/netlify/deploying-with-the-click-of-a-button-1416</link>
      <guid>https://dev.to/netlify/deploying-with-the-click-of-a-button-1416</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Throughout December we'll be &lt;a href="https://www.netlify.com/blog/2021/12/01/highlighting-a-different-netlify-feature-each-day-in-december/?utm_campaign=featdaily21&amp;amp;utm_source=netlify&amp;amp;utm_medium=blog&amp;amp;utm_content=snippet-injection" rel="noopener noreferrer"&gt;highlighting a different Netlify feature each day&lt;/a&gt;. It might just be the thing you need to unlock those creative juices, and &lt;a href="https://www.netlify.com/blog/2021/12/01/dusty-domains-your-forgotten-domains-raise-money-for-charity/?utm_campaign=featdaily21&amp;amp;utm_source=netlify&amp;amp;utm_medium=blog&amp;amp;utm_content=snippet-injection" rel="noopener noreferrer"&gt;dust off that domain&lt;/a&gt; you registered but never deployed! Keep an eye &lt;a href="https://www.netlify.com/blog/2021/12/01/highlighting-a-different-netlify-feature-each-day-in-december/?utm_campaign=featdaily21&amp;amp;utm_source=netlify&amp;amp;utm_medium=blog&amp;amp;utm_content=snippet-injection" rel="noopener noreferrer"&gt;on the blog&lt;/a&gt; and on &lt;a href="https://twitter.com/netlify" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; for each feature!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If only there was a way to help people (and/or pets) deploy your amazing projects with a click of a button. Well, funny you should mention that, Tara, because indeed there is! Adding the link to your project repo to this snippet of code here:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;https://app.netlify.com/start/deploy?repository=&lt;span class="nt"&gt;&amp;lt;your&lt;/span&gt; &lt;span class="na"&gt;repo&lt;/span&gt; &lt;span class="na"&gt;right&lt;/span&gt; &lt;span class="na"&gt;here&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

example: https://app.netlify.com/start/deploy?repository=https://github.com/netlify-templates/next-netlify-starter
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then you can add the button to your website, repo, blog post, etc with this code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;markdown: 
[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/netlify-templates/next-netlify-starter)

html:
&amp;lt;a href="https://app.netlify.com/start/deploy?repository=https://github.com/netlify-templates/next-netlify-starter"&amp;gt;&amp;lt;img src="https://www.netlify.com/img/deploy/button.svg"&amp;gt;&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Would ya look at that, we have a button. Just look at it!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://app.netlify.com/start/deploy?repository=https://github.com/netlify-templates/next-netlify-starter" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.netlify.com%2Fimg%2Fdeploy%2Fbutton.svg" alt="Deploy to Netlify"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When someone clicks the button it will start to walk them through the deployment process. Have a click and try it yourself. Happy coding 👩🏻‍💻!&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%2Fcdn.netlify.com%2F139476aa52306ca797183171f9e499c906829398%2F23fd5%2Fimg%2Fblog%2Fscreen-shot-2021-12-28-at-12.04.54-pm.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%2Fcdn.netlify.com%2F139476aa52306ca797183171f9e499c906829398%2F23fd5%2Fimg%2Fblog%2Fscreen-shot-2021-12-28-at-12.04.54-pm.png" title="first step" alt="screenshot of the first step in the deployment processes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Resources for the Road
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.netlify.com/site-deploys/create-deploys/#deploy-to-netlify-button" rel="noopener noreferrer"&gt;Deploy to Netlify Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;See it in the wild in &lt;a href="https://github.com/netlify-templates/next-netlify-starter" rel="noopener noreferrer"&gt;the Next.js template repo&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>netlify</category>
      <category>development</category>
      <category>workflow</category>
    </item>
    <item>
      <title>Manage and Authenticate Users with Netlify Identity</title>
      <dc:creator>Tara Z. Manicsic</dc:creator>
      <pubDate>Mon, 03 Jan 2022 04:18:04 +0000</pubDate>
      <link>https://dev.to/netlify/manage-and-authenticate-users-with-netlify-identity-3in6</link>
      <guid>https://dev.to/netlify/manage-and-authenticate-users-with-netlify-identity-3in6</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Throughout December we'll be &lt;a href="https://www.netlify.com/blog/2021/12/01/highlighting-a-different-netlify-feature-each-day-in-december/?utm_campaign=featdaily21&amp;amp;utm_source=netlify&amp;amp;utm_medium=blog&amp;amp;utm_content=netlify-identity" rel="noopener noreferrer"&gt;highlighting a different Netlify feature each day&lt;/a&gt;. It might just be the thing you need to unlock those creative juices, and &lt;a href="https://www.netlify.com/blog/2021/12/01/dusty-domains-your-forgotten-domains-raise-money-for-charity/?utm_campaign=featdaily21&amp;amp;utm_source=netlify&amp;amp;utm_medium=blog&amp;amp;utm_content=netlify-identity" rel="noopener noreferrer"&gt;dust off that domain&lt;/a&gt; you registered but never deployed! Keep an eye &lt;a href="https://www.netlify.com/blog/2021/12/01/highlighting-a-different-netlify-feature-each-day-in-december/?utm_campaign=featdaily21&amp;amp;utm_source=netlify&amp;amp;utm_medium=blog&amp;amp;utm_content=netlify-identity" rel="noopener noreferrer"&gt;on the blog&lt;/a&gt; and on &lt;a href="https://twitter.com/netlify" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; for each feature!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;"Authenticating users is a no-brainer", said no one ever. Managing user data, creating a login process, setting roles, gating content, these things are hard. One of my favorite strategies in web app development is getting a leg up by having someone else do the hard part. After all, you can't spell 'delegation' without 'leg'.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.netlify.com/visitor-access/identity/" rel="noopener noreferrer"&gt;Netlify Identity&lt;/a&gt; lets us delegate a ton of authentication functionality:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the setup and infrastructure of storing user information, as well&lt;/li&gt;
&lt;li&gt;login using external OAuth providers like GitHub, Google, GitLab, and Bitbucket&lt;/li&gt;
&lt;li&gt;trigger serverless functions on validation, signup, or login events&lt;/li&gt;
&lt;li&gt;generate custom emails&lt;/li&gt;
&lt;li&gt;access and edit user information and roles&lt;/li&gt;
&lt;li&gt;and more!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.netlify.com%2Ff8ae462a132108b1eca556ad87308cbd69da3163%2Fced81%2Fimg%2Fblog%2Fidentity.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%2Fcdn.netlify.com%2Ff8ae462a132108b1eca556ad87308cbd69da3163%2Fced81%2Fimg%2Fblog%2Fidentity.png" title="identity dashboard" alt="screenshot of identity dashboard page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Leveraging the open-source &lt;a href="https://github.com/netlify/gotrue" rel="noopener noreferrer"&gt;GoTrue API&lt;/a&gt;, Netlify Identity can be added to your site with the &lt;a href="https://github.com/netlify/netlify-identity-widget" rel="noopener noreferrer"&gt;Netlify Identity widget&lt;/a&gt; by adding this &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; tag:&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="nt"&gt;&amp;lt;head&amp;gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text/javascript"&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://identity.netlify.com/v1/netlify-identity-widget.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;then including the widget in the site template, like so:&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;!-- Add a menu:
   Log in / Sign up - when the user is not logged in
   Username / Log out - when the user is logged in
  --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;data-netlify-identity-menu&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

  &lt;span class="c"&gt;&amp;lt;!-- Add a simpler button:
    Simple button that will open the modal.
  --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;data-netlify-identity-button&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Login with Netlify Identity&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Put it all together and you get this lovely pop-up modal window where users can login or sign up!&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%2Fcdn.netlify.com%2F9c580d1dd7c165720ac4746d305da1c445d102bf%2F9edd6%2Fimg%2Fblog%2Fscreen-shot-2021-12-20-at-11.37.37-pm.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%2Fcdn.netlify.com%2F9c580d1dd7c165720ac4746d305da1c445d102bf%2F9edd6%2Fimg%2Fblog%2Fscreen-shot-2021-12-20-at-11.37.37-pm.png" title="modal window" alt="netlify identity login modal window"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check out the &lt;a href="https://docs.netlify.com/visitor-access/identity/" rel="noopener noreferrer"&gt;Netlify Identity docs&lt;/a&gt; to learn more about everything you can do. I can't wait to see (or not see if I'm not logged in) all the authentication functionality you create! Happy coding 👩🏻‍💻!&lt;/p&gt;

</description>
      <category>netlify</category>
      <category>development</category>
      <category>workflow</category>
    </item>
    <item>
      <title>Long-Running Asynchronous Processes with Netlify Background Functions</title>
      <dc:creator>Tara Z. Manicsic</dc:creator>
      <pubDate>Mon, 03 Jan 2022 04:10:07 +0000</pubDate>
      <link>https://dev.to/netlify/long-running-asynchronous-processes-with-netlify-background-functions-2dpm</link>
      <guid>https://dev.to/netlify/long-running-asynchronous-processes-with-netlify-background-functions-2dpm</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Throughout December we'll be &lt;a href="https://www.netlify.com/blog/2021/12/01/highlighting-a-different-netlify-feature-each-day-in-december/?utm_campaign=featdaily21&amp;amp;utm_source=netlify&amp;amp;utm_medium=blog&amp;amp;utm_content=background-functions"&gt;highlighting a different Netlify feature each day&lt;/a&gt;. It might just be the thing you need to unlock those creative juices, and &lt;a href="https://www.netlify.com/blog/2021/12/01/dusty-domains-your-forgotten-domains-raise-money-for-charity/?utm_campaign=featdaily21&amp;amp;utm_source=netlify&amp;amp;utm_medium=blog&amp;amp;utm_content=background-functions"&gt;dust off that domain&lt;/a&gt; you registered but never deployed! Keep an eye &lt;a href="https://www.netlify.com/blog/2021/12/01/highlighting-a-different-netlify-feature-each-day-in-december/?utm_campaign=featdaily21&amp;amp;utm_source=netlify&amp;amp;utm_medium=blog&amp;amp;utm_content=background-functions"&gt;on the blog&lt;/a&gt; and on &lt;a href="https://twitter.com/netlify"&gt;Twitter&lt;/a&gt; for each feature!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ain't no serverless functions got time for that! If you noticed, that was a double negative because there is a serverless function that &lt;strong&gt;DOES&lt;/strong&gt; have time for your long-running tasks: &lt;a href="https://docs.netlify.com/functions/background-functions/"&gt;Netlify Background Functions&lt;/a&gt;. You can write these serverless functions in JavaScript, Typescript, or Go and like regular &lt;a href="https://docs.netlify.com/functions/overview/"&gt;Netlify Functions&lt;/a&gt;, background functions are version-controlled, built, and deployed along with the rest of your Netlify site.&lt;/p&gt;

&lt;p&gt;Here's a little sample Background Function in Go that you can try to see a function running longer than 10 seconds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s"&gt;"context"&lt;/span&gt;
    &lt;span class="s"&gt;"log"&lt;/span&gt;
    &lt;span class="s"&gt;"time"&lt;/span&gt;

    &lt;span class="s"&gt;"github.com/aws/aws-lambda-go/events"&lt;/span&gt;
    &lt;span class="s"&gt;"github.com/aws/aws-lambda-go/lambda"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ctx&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Context&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt; &lt;span class="n"&gt;events&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;APIGatewayProxyRequest&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;events&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;APIGatewayProxyResponse&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="m"&gt;60&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Second&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="no"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;lambda&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Start&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;handler&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;You can check out some more detailed examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/futuregerald/next-function/blob/master/func_source/save.go"&gt;written in Go&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.netlify.com/functions/build-with-javascript/#background-function-format"&gt;written in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;or &lt;a href="https://docs.netlify.com/functions/build-with-typescript/"&gt;written in TypeScript&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What exactly happens when you use a Background Function? Here are the details about the invocation and responses:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;When a function is invoked asynchronously, there is an initial &lt;code&gt;202&lt;/code&gt; success response. If function execution returns an error, an execution retry happens after one minute. If it fails again, another retry happens two minutes later. When a background function is successfully executed, you generally pass the result to a destination other than the originating client.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Background Functions are currently in beta but try 'em out, and take your time ;} Happy coding 👩🏻‍💻!&lt;/p&gt;

&lt;h3&gt;
  
  
  Resources for the Road
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.netlify.com/functions/background-functions/"&gt;Background Function Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.netlify.com/functions/build-with-javascript/"&gt;Create a Background Function&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>netlify</category>
      <category>development</category>
      <category>workflow</category>
    </item>
    <item>
      <title>Do More at Build Time with Build Plugins</title>
      <dc:creator>Tara Z. Manicsic</dc:creator>
      <pubDate>Mon, 03 Jan 2022 04:04:37 +0000</pubDate>
      <link>https://dev.to/netlify/do-more-at-build-time-with-build-plugins-569</link>
      <guid>https://dev.to/netlify/do-more-at-build-time-with-build-plugins-569</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Throughout December we'll be &lt;a href="https://www.netlify.com/blog/2021/12/01/highlighting-a-different-netlify-feature-each-day-in-december/?utm_campaign=featdaily21&amp;amp;utm_source=netlify&amp;amp;utm_medium=blog&amp;amp;utm_content=build-plugins"&gt;highlighting a different Netlify feature each day&lt;/a&gt;. It might just be the thing you need to unlock those creative juices, and &lt;a href="https://www.netlify.com/blog/2021/12/01/dusty-domains-your-forgotten-domains-raise-money-for-charity/?utm_campaign=featdaily21&amp;amp;utm_source=netlify&amp;amp;utm_medium=blog&amp;amp;utm_content=build-plugins"&gt;dust off that domain&lt;/a&gt; you registered but never deployed! Keep an eye &lt;a href="https://www.netlify.com/blog/2021/12/01/highlighting-a-different-netlify-feature-each-day-in-december/?utm_campaign=featdaily21&amp;amp;utm_source=netlify&amp;amp;utm_medium=blog&amp;amp;utm_content=build-plugins"&gt;on the blog&lt;/a&gt; and on &lt;a href="https://twitter.com/netlify"&gt;Twitter&lt;/a&gt; for each feature!&lt;br&gt;
On engineering teams and in life, in general, time tends to be the most valuable yet least plentiful resource. Since &lt;a href="https://hbr.org/2010/12/you-cant-multi-task-so-stop-tr"&gt;studies have proven that us humans cannot multitask&lt;/a&gt;, we must find another way to do many things at once. May I introduce &lt;a href="https://www.netlify.com/products/build/plugins/"&gt;build plugins&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Build plugins are little utilities that you can install &lt;a href="http://app.netlify.com/plugins"&gt;through your project dashboard&lt;/a&gt; that help with caching, optimizations, security, and a ton more. So when you run your build it can run your tests while you run to get lunch. Yay, more things at once! You can check out the whole list &lt;a href="http://app.netlify.com/plugins"&gt;in the plugins dashboard&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E_24bYFH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.netlify.com/1c53bcc4a9391f2c01735f4e9ed1e464082ac4ce/6e4c0/img/blog/screen-shot-2021-12-28-at-10.49.08-am.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E_24bYFH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.netlify.com/1c53bcc4a9391f2c01735f4e9ed1e464082ac4ce/6e4c0/img/blog/screen-shot-2021-12-28-at-10.49.08-am.png" alt="screenshot of the plugins list page" width="800" height="556"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Customize Your Workflow
&lt;/h2&gt;

&lt;p&gt;Can you think of some tedious task that you have to take on &lt;em&gt;every time&lt;/em&gt; you deploy? Have to check your Lighthouse score, optimize images, run Cypress end-to-end tests? Well, there &lt;em&gt;are&lt;/em&gt; build plugins for that BUT what if there wasn't 😱?! No worries, you can spin up your own 🥳.&lt;/p&gt;

&lt;p&gt;There are two parts to a Build Plugin: the &lt;code&gt;.yml&lt;/code&gt; file for the plugins meta data and any &lt;code&gt;.js&lt;/code&gt; files you need to make it do what you need. Then you can pull it into your projects with your &lt;code&gt;netlify.toml&lt;/code&gt; configuration file. With plugins you can add functionality to each part of the build processes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;onPreBuild&lt;/code&gt;&lt;/strong&gt;: runs before the build command is executed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;onBuild&lt;/code&gt;&lt;/strong&gt;: runs directly after the build command is executed and before Functions bundling and Edge Handlers bundling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;onPostBuild&lt;/code&gt;&lt;/strong&gt;: runs after the build command completes; after onBuild tasks, Functions bundling, and Edge Handlers bundling are executed; and before the deploy stage. Can be used to prevent a build from being deployed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;onError&lt;/code&gt;&lt;/strong&gt;: runs when an error occurs in the build or deploy stage, failing the build. Can’t be used to prevent a build from being deployed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;onSuccess&lt;/code&gt;&lt;/strong&gt;: runs when the deploy succeeds. Can’t be used to prevent a build from being deployed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;onEnd&lt;/code&gt;&lt;/strong&gt;: runs after completion of the deploy stage, regardless of build error or success; is useful for resources cleanup. Can’t be used to prevent a build from being deployed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Learn more about &lt;a href="https://docs.netlify.com/configure-builds/build-plugins/create-plugins"&gt;creating your own Build Plugins&lt;/a&gt; in our documentation. Happy coding 👩🏻‍💻!&lt;/p&gt;

&lt;h3&gt;
  
  
  Resources for the Road
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.netlify.com/configure-builds/build-plugins/"&gt;Netlify Build Plugin Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://app.netlify.com/plugins"&gt;One-click install Build Plugins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.netlify.com/configure-builds/build-plugins/create-plugins"&gt;Creating Build Plugins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.netlify.com/blog/2021/01/25/top-10-netlify-build-plugins-2021-update/"&gt;Top Ten Build Plugins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.netlify.com/tags/build-plugins/"&gt;Many more blog posts on Build Plugins!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>netlify</category>
      <category>development</category>
      <category>workflow</category>
    </item>
    <item>
      <title>Spreading the JAMuary Love</title>
      <dc:creator>Tara Z. Manicsic</dc:creator>
      <pubDate>Wed, 05 Feb 2020 18:35:03 +0000</pubDate>
      <link>https://dev.to/netlify/spreading-the-jamuary-love-2c4l</link>
      <guid>https://dev.to/netlify/spreading-the-jamuary-love-2c4l</guid>
      <description>&lt;p&gt;Hi JAMers! I'm here with the third edition of the JAMuary update. It's been a great month to learn about the JAMstack, the ecosystem, and everything that goes with it. Let's look at everything that's been covered the third week of JAMuary by our very own, talented, &lt;a href="https://www.netlify.com/authors/divya-sasidharan/?utm_source=devto&amp;amp;utm_medium=wk3_jamuary_tzm&amp;amp;utm_campaign=devex"&gt;Divya aka @shortdiv&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To catch up here are the other two awesome recap posts: &lt;a href="https://www.netlify.com/blog/2020/01/13/talking-about-jamstack-this-jamuary/?utm_source=blog&amp;amp;utm_medium=wk3_jamuary_tzm&amp;amp;utm_campaign=devex"&gt;week 1&lt;/a&gt; &amp;amp; &lt;a href="https://www.netlify.com/blog/2020/01/22/lets-keep-talking-about-jamstack-this-jamuary/?utm_source=devto&amp;amp;utm_medium=wk3_jamuary_tzm&amp;amp;utm_campaign=devex"&gt;week 2&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  JAMuary Digest: 15th - 21st
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://dev.to/shortdiv/is-the-jamstack-really-better-for-seo-4534"&gt;JAMuary 15th - Is the JAMstack really better for SEO?&lt;/a&gt;&lt;/strong&gt; Quality SEO has always been a tough subject for the web because how some frameworks render sites on the fly. So, how much of an SEO boost do you get from pre-rendering? Is that the only steps you should take to optimize your SEO? Learn more here where Divya discusses Search Engine Results Page, JSON-LD, and what all these have to do with the JAMstack.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"When it comes to optimizing your content, the JAMstack architecture sets your site up perfectly to hit your SEO goals. Actually reaching those goals however may take a bit of leg work."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Further reading: &lt;a href="https://www.netlify.com/blog/2016/06/17/five-seo-rules-for-your-jamstack-site/?utm_source=devto&amp;amp;utm_medium=wk3-jamuary-tzm&amp;amp;utm_campaign=devex"&gt;Five SEO Rules for Your JAMstack Site&lt;/a&gt; by Aaron Autrand&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://dev.to/shortdiv/can-content-marketers-create-personalized-experiences-on-the-jamstack-5aae"&gt;JAMuary 16th - Can content marketers create personalized experiences on the JAMstack?&lt;/a&gt;&lt;/strong&gt; Not only does this post tell you that you &lt;em&gt;can&lt;/em&gt; create personalized experiences but it also tells you how. It covers CMS features like analytics, standalone personalization services, and A/B testing at the edge.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The decoupling between the presentation layer and content management means content delivery can be treated as a yet another service to plug into."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Further reading: &lt;a href="https://www.netlify.com/blog/2019/07/10/netlify-analytics-accurate-insights-without-performance-impacts/?utm_source=devto&amp;amp;utm_medium=wk3-jamuary-tzm&amp;amp;utm_campaign=devex"&gt;Netlify Analytics - Accurate insights without performance impacts&lt;/a&gt; by Phil Hawksworth&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://dev.to/shortdiv/do-i-have-to-know-git-to-use-the-jamstack-i3f"&gt;JAMuary 17th - Do I have to know git to use the JAMstack?&lt;/a&gt;&lt;/strong&gt; I have to admit I'm a bit biased because git has saved me so much time when I've borked a project and quickly &lt;code&gt;git reset --hard&lt;/code&gt; to revert to the code where my project worked. But is it necessary to use it if you're coding a JAMstack site? This post will look at atomic deploys, immutability, and how much (or little) git you actually need to know.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"With the gaining momentum of JAMstack, there are now more opportunities than ever before for non technical users to access the JAMstack."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Further reading: &lt;a href="https://www.netlify.com/blog/2019/09/27/git-centric-workflow-the-one-api-to-rule-them-all/?utm_source=devto&amp;amp;utm_medium=wk3-jamuary-tzm&amp;amp;utm_campaign=devex"&gt;Git-Centric Workflow: The One API to Rule Them All&lt;/a&gt; by swyx&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://dev.to/shortdiv/is-there-such-a-thing-as-too-many-apis-in-a-jamstack-site-5ehm"&gt;JAMuary 18th - Is there such thing as too many APIs in a JAMstack site?&lt;/a&gt;&lt;/strong&gt; These days it feels like there is an API for everything. For instance, are you ever in dire need of a Kanye quote? Me neither, but nonetheless &lt;a href="https://api.kanye.rest/"&gt;there's an API for that&lt;/a&gt;. Using &lt;em&gt;too&lt;/em&gt; many APIs can slow down your site as well as add more development time to &lt;em&gt;use&lt;/em&gt; those APIs. Read this post to get some insight into API usage and the JAMstack.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Stopping to consider the use case and sometimes even crafting a custom solution to an easily solvable problem (like comments) can mean a more lean, performant JAMstack site."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Further watching: &lt;a href="https://www.youtube.com/watch?time_continue=6&amp;amp;v=uWOWTwJA4rc&amp;amp;feature=emb_logo"&gt;You need an API: Now what?&lt;/a&gt; by Erin McKean&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://dev.to/shortdiv/is-there-a-risk-to-relying-on-external-apis-on-the-jamstack-3o0l"&gt;JAMuary 19th - Is there a risk to relying on external APIs on the JAMstack?&lt;/a&gt;&lt;/strong&gt; Now that we've discussed the amount of APIs, Divya shines a light into how we &lt;em&gt;use&lt;/em&gt; these APIs. Covering the use of APIs in JAMstack projects and how they effect the complexity of the development process she helps us weigh out API options.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The move towards an API driven architecture offers flexibility and promises an improved developer experience, but doesn’t make the claim to prevent over-engineering. Instead, the JAMstack approach pushes developers to think critically about their sites, and make conscious decisions on what and how to consume and build."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Further reading: Check out the &lt;a href="https://docs.netlify.com/api/get-started/?utm_source=devto&amp;amp;utm_medium=wk3-jamuary-tzm&amp;amp;utm_campaign=devex"&gt;Netlify API&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://dev.to/shortdiv/can-the-jamstack-be-used-for-the-public-good-18k5"&gt;JAMuary 20th - Can the JAMstack be used for the public good?&lt;/a&gt;&lt;/strong&gt; Spoiler alert 🚨 the answer is, "yes!" Government sites have to deal with compliance standards and security which may make the JAMstack seem like a bad choice. Yet, Divya walks us through the many ways that the JAMstack can actually be a really smart choice utilizing prerendering assets, decoupling front and backend, Git workflow, and serving static content over a CDN.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"By encouraging a separation between frontend and backend, and a reliance on Git for version control and user management, the JAMstack eases the workflow for building and delivering federally compliant websites."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Further reading: &lt;a href="https://www.netlify.com/site-of-the-week/water-for-people/?utm_source=devto&amp;amp;utm_medium=wk3-jamuary-tzm&amp;amp;utm_campaign=devex"&gt;Site of the Week: Water for People&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://dev.to/shortdiv/what-does-the-m-in-jamstack-actually-mean-5hnf"&gt;JAMuary 21st - What does the M in JAMstack actually mean?&lt;/a&gt;&lt;/strong&gt; This post clarifies that the M in JAMstack stands for Markup and not Markdown as some may misconstrue. The process of content delivery is the focus as well as the ups and downs (see what I did there) of different approaches.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The ambiguity of the acronym aside, the M in JAMstack emphasizes how content is delivered, instead of what format that content was in prior to pre-rendering. Content on the JAMstack can effectively come from anywhere, but as long as it’s pre-rendered it counts as “M”."&lt;br&gt;
&lt;em&gt;Further Reading: &lt;a href="https://jamstack.org/examples/"&gt;JAMstack Examples&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Tune in Next Week 📺
&lt;/h2&gt;

&lt;p&gt;We hope you've enjoyed this installment of the JAMuary catch up. We'll be coming out with the another one for the last week (😩) of this JAMuary season. Stay tuned and remember, it doesn't need to be JAMuary season for you to enjoy the JAMstack too!&lt;/p&gt;

</description>
      <category>jamuary</category>
      <category>jamstack</category>
    </item>
    <item>
      <title>What is Serverless Besides a Bad Name for Using Servers</title>
      <dc:creator>Tara Z. Manicsic</dc:creator>
      <pubDate>Tue, 07 Jan 2020 19:18:37 +0000</pubDate>
      <link>https://dev.to/tzmanics/what-is-serverless-besides-a-bad-name-for-using-servers-35ag</link>
      <guid>https://dev.to/tzmanics/what-is-serverless-besides-a-bad-name-for-using-servers-35ag</guid>
      <description>&lt;p&gt;Chances are you've heard the term serverless and are even using some form of ✨serverless magic✨ yourself. But software is confusing, and software terms even more so. When I started &lt;a href="https://www.netlify.com/blog/2019/10/30/whats-angular-in-the-jamstack-it-sounds-delicious/?utm_source=devto&amp;amp;utm_medium=whatisserverless-tzm&amp;amp;utm_campaign=devex"&gt;learning about the JAMstack&lt;/a&gt; it threw me for a loop. Talk about how the JAMstack doesn’t use servers but relies on &lt;a href="https://en.wikipedia.org/wiki/Serverless_computing"&gt;serverless&lt;/a&gt; functions left me confused. &lt;strong&gt;Spoiler alert&lt;/strong&gt;: this doesn't make sense because serverless computing &lt;em&gt;actually&lt;/em&gt; uses servers. In the hopes of clarifying one mystery I wanted to write a quick post on what serverless really means.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it is, tho
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Serverless_computing"&gt;Serverless&lt;/a&gt;: is a cloud-computing execution model in which the cloud provider runs the server, and dynamically manages the allocation of machine resources. (via &lt;a href="https://en.wikipedia.org/wiki/Serverless_computing"&gt;Wiki&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Serverless is just a way of handling &lt;em&gt;how&lt;/em&gt; you are &lt;em&gt;using servers&lt;/em&gt;. Instead of handling all the infrastructure and server operations yourself you're relying on a cloud provider. The cloud provider can help with &lt;a href="https://www.ibm.com/blogs/cloud-computing/2014/04/09/explain-vertical-horizontal-scaling-cloud/"&gt;scaling&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/Provisioning_(telecommunications)#Server_provisioning"&gt;server provisioning&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/Capacity_management"&gt;capacity provisioning&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/Patch_(computing)"&gt;patching&lt;/a&gt;, and more (depending on the provider). This takes a lot of operational burden off of your team and can help solve potential problems like slow response due to bottleneck or expensive unused overhead. Like most &lt;a href="https://jamstack.org/best-practices/"&gt;JAMstack best practices&lt;/a&gt;, serverless provides a way to delegate more tasks so the dev team can spend more time innovating and creating features, not focusing on maintenance.&lt;/p&gt;

&lt;p&gt;Why the term "serverless" was chosen is mind-boggling to me. Regardless, the use of such an arguably contentious name has generated a good amount of buzz. So many people have heard or know the term "serverless". I mean, I had &lt;em&gt;finally&lt;/em&gt; convinced my family that "the cloud" is just servers. Do you know how long it's going to take me to convince them that "server*&lt;em&gt;less&lt;/em&gt;*" is servers!?! Thanks, internet 🙄.&lt;/p&gt;

&lt;h2&gt;
  
  
  It's All About the Money
&lt;/h2&gt;

&lt;p&gt;Although serverless is technically an execution model, you're mostly talking about a service. Adding more to the confusion pile, the pricing model of serverless is enough to throw you into a tizzy. Traditionally, the cost model for running your own server is usually [server capabilities] * [uptime] or you pay upfront for what you think you'll use. In comparison, with serverless computing, cloud providers will charge based on the resources used. How much capacity is used or how many times something is executed can determine the cost for a service.&lt;/p&gt;

&lt;p&gt;A nice part about this pricing model, and one of the main benefits of serverless, is that most providers won't charge you if your server is idle, isn't taking up a lot of memory or executing code a ton. This can cost a lot less because a server usually sits idle for a huge percentage of the time. Although it's great to be able to hand your server reins over to a cloud provider you'll want to understand how often your code is executing and how your app is using memory to avoid a financial &lt;a href="https://en.wiktionary.org/wiki/footgun"&gt;foot gun&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;serverless uses servers&lt;/li&gt;
&lt;li&gt;cloud providers handle the server operations&lt;/li&gt;
&lt;li&gt;pricing is usually quite confusing&lt;/li&gt;
&lt;li&gt;naming things is hard&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope this helps shed some light onto one of the key elements of the JAMstack. The awesome &lt;a href="https://twitter.com/jlengstorf"&gt;Jason Lengstorf&lt;/a&gt; has a whole series coming out this #JAMuary to help you wrap your mind around serverless functions. Keep your ear to the ground for that. In the meantime here are some other resources to peruse. Happy coding!👩🏻‍💻&lt;/p&gt;

&lt;p&gt;Resources for the Road:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.netlify.com/products/functions/?utm_source=devto&amp;amp;utm_medium=whatisserverless-tzm&amp;amp;utm_campaign=devex"&gt;Netlify Functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=Mu9zKpGhX1Y"&gt;Going Serverless with VueJS talk by Divya Sasidharan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kentcdodds.com/blog/super-simple-start-to-serverless"&gt;Super simple start to serverless by Kent C. Dodds&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;p.s. I use a lot of handy Wiki links here, if you feel so inclined to thank them for this you can donate &lt;a href="https://wikimediafoundation.org/support/"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>web</category>
      <category>jamstack</category>
      <category>jamuary</category>
    </item>
  </channel>
</rss>
