<?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: Aaron Westbrook</title>
    <description>The latest articles on DEV Community by Aaron Westbrook (@awestbro).</description>
    <link>https://dev.to/awestbro</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%2F788003%2F7a46d5cf-9017-4f57-87c7-db8f6c3cce60.png</url>
      <title>DEV Community: Aaron Westbrook</title>
      <link>https://dev.to/awestbro</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/awestbro"/>
    <language>en</language>
    <item>
      <title>Beginner's Guide to Customizing Bootstrap 5 with SASS</title>
      <dc:creator>Aaron Westbrook</dc:creator>
      <pubDate>Thu, 19 May 2022 16:14:51 +0000</pubDate>
      <link>https://dev.to/awestbro/beginners-guide-to-customizing-bootstrap-5-with-sass-2b6d</link>
      <guid>https://dev.to/awestbro/beginners-guide-to-customizing-bootstrap-5-with-sass-2b6d</guid>
      <description>&lt;p&gt;Bootstrap CSS is a great framework for making your web page look great, but how do you make it feel unique?&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Setup
&lt;/h2&gt;

&lt;p&gt;This guide assumes you have a project with a working SASS setup with Bootstrap. If you don't, clone our ProductDiv Bootstrap Starter project &lt;a href="https://github.com/awestbro/productdiv-bootstrap-starter-free"&gt;here&lt;/a&gt;. ProductDiv makes it easy to develop Bootstrap applications with utility classes! To learn more, check out the &lt;a href="https://productdiv.com/tutorial"&gt;tutorial&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Make sure you have npm and git installed, then run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/awestbro/productdiv-bootstrap-starter-free.git
&lt;span class="nb"&gt;cd &lt;/span&gt;productdiv-bootstrap-starter-free
npm i
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To start our app, run &lt;code&gt;npm run dev&lt;/code&gt; and visit &lt;a href="http://localhost:3000/"&gt;http://localhost:3000/&lt;/a&gt;!  Now we can start customizing the look and feel of our app.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Customizing Bootstrap Works
&lt;/h2&gt;

&lt;p&gt;Bootstrap 5 uses SASS to compile CSS files using variables and mixins. One cool feature of SASS variables is the &lt;code&gt;!default&lt;/code&gt; property. Defining a variable like this: &lt;code&gt;$white:    #fff !default;&lt;/code&gt;, tells the SASS compiler to set the variable named &lt;code&gt;$white&lt;/code&gt; to &lt;code&gt;#fff&lt;/code&gt; unless the variable &lt;code&gt;$white&lt;/code&gt; is  already defined.&lt;/p&gt;

&lt;p&gt;Luckily for us, &lt;a href="https://github.com/twbs/bootstrap/blob/main/scss/_variables.scss"&gt;Bootstrap's variables&lt;/a&gt; are all defined with &lt;code&gt;!default&lt;/code&gt; so we can overwrite them before we compile the library.&lt;/p&gt;

&lt;p&gt;For example: try adding the line &lt;code&gt;$primary: blue;&lt;/code&gt; in our &lt;code&gt;theme.scss&lt;/code&gt; file before the line that imports the Bootstrap library. Save, then check out the app in the browser. The navbar and primary button should be a blue now! Any variable can be overwritten by redefining the variable before importing Bootstrap. This feature lets you change the library to fit your exact style and needs!&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding your own Colors
&lt;/h2&gt;

&lt;p&gt;Like &lt;code&gt;$primary&lt;/code&gt;, you can override any color you like in Bootstrap. Check out the &lt;a href="https://getbootstrap.com/docs/5.2/customize/color/"&gt;colors documentation&lt;/a&gt; for all the main colors to override. &lt;/p&gt;

&lt;p&gt;The main color variables you'll work with are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$primary&lt;/li&gt;
&lt;li&gt;$secondary&lt;/li&gt;
&lt;li&gt;$success&lt;/li&gt;
&lt;li&gt;$info&lt;/li&gt;
&lt;li&gt;$warning&lt;/li&gt;
&lt;li&gt;$danger&lt;/li&gt;
&lt;li&gt;$light&lt;/li&gt;
&lt;li&gt;$dark&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Overwriting any one of these will give your app a custom feel already! Bootstrap defines these in the &lt;code&gt;$theme-colors&lt;/code&gt; variable. If you redefine that map, you can add any color you like to bootstrap. For example, what would happen if we add a $tertiary variable to the $theme-colors map? Bootstrap would generate utility classes like: &lt;code&gt;bg-tertiary&lt;/code&gt;, &lt;code&gt;btn-tertiary&lt;/code&gt;, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Importing New Fonts
&lt;/h2&gt;

&lt;p&gt;Something as simple as changing a font can give your app a custom look and feel. Bootstrap also provides variables for fonts so they're easy to overwrite, but there are some gotchas to look out for. &lt;/p&gt;

&lt;p&gt;Bootstrap has utility classes for fonts built in. These let you apply different weights to fonts like light, bold, etc. To get a font that will work out of the box, we need to know what weights Bootstrap supports. In the variables file, Bootstrap defines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sass"&gt;&lt;code&gt;&lt;span class="nv"&gt;$font-weight-lighter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;         &lt;span class="nb"&gt;lighter&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nb"&gt;default&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt;   
&lt;span class="nv"&gt;$font-weight-light&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;           &lt;span class="m"&gt;300&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nb"&gt;default&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt;   
&lt;span class="nv"&gt;$font-weight-normal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;          &lt;span class="m"&gt;400&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nb"&gt;default&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt;   
&lt;span class="nv"&gt;$font-weight-semibold&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;        &lt;span class="m"&gt;600&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nb"&gt;default&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt;   
&lt;span class="nv"&gt;$font-weight-bold&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;            &lt;span class="m"&gt;700&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nb"&gt;default&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt;   
&lt;span class="nv"&gt;$font-weight-bolder&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;          &lt;span class="nb"&gt;bolder&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nb"&gt;default&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To accommodate the lighter and bolder weights, we'll need to include 100 and 900 weights too. &lt;/p&gt;

&lt;p&gt;To bring in custom fonts, we can use Google fonts here: &lt;a href="https://fonts.google.com/"&gt;https://fonts.google.com/&lt;/a&gt;. We'll use the Lato font since it has all the weights we need! To import it, use the @import directive in SASS like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sass"&gt;&lt;code&gt;&lt;span class="k"&gt;@import&lt;/span&gt; &lt;span class="s"&gt;url("https://fonts.googleapis.com/css2?family=Lato:wght@100;300;400;700;900&amp;amp;display=swap");&lt;/span&gt;
&lt;span class="nv"&gt;$font-family-sans-serif&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"Lato"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;apple-system&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;system-ui&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;BlinkMacSystemFont&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
 &lt;span class="s2"&gt;"Segoe UI"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;Roboto&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"Helvetica Neue"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;Arial&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;sans-serif&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nt"&gt;default&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Overwriting the &lt;code&gt;$font-family-serif&lt;/code&gt; variable tells Bootstrap to use our imported Lato font. Now our application has a beautiful default font!&lt;/p&gt;

&lt;p&gt;You can import fonts and apply them only to specific elements as well!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sass"&gt;&lt;code&gt;&lt;span class="k"&gt;@import&lt;/span&gt; &lt;span class="s"&gt;url("https://fonts.googleapis.com/css2?family=Poppins:wght@100;300;400;700;900&amp;amp;display=swap");&lt;/span&gt;
&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;span class="nt"&gt;h4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;span class="nt"&gt;h5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;span class="nt"&gt;h6&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;span class="nc"&gt;.navbar-brand&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;span class="nc"&gt;.btn&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;span class="nc"&gt;.card-header&lt;/span&gt; &lt;span class="err"&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="s2"&gt;"Poppins"&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change fonts further by playing around with the &lt;code&gt;$font-&lt;/code&gt; variables. For instance, changing the &lt;code&gt;$font-size-base&lt;/code&gt; to &lt;code&gt;1.2rem&lt;/code&gt; increases your font size across all elements.&lt;/p&gt;

&lt;p&gt;Fonts set the tone for your visitors and can change a site from feeling basic to bespoke! &lt;/p&gt;

&lt;h2&gt;
  
  
  What next?
&lt;/h2&gt;

&lt;p&gt;Now that you have a good feel how to overwrite variables, you can change whatever you'd like! Try changing border-radius, box-shadow, and spacing variables to make a beautiful custom theme!&lt;/p&gt;

&lt;p&gt;If you would like to get a head start on your next application, check out &lt;a href="https://productdiv.com/products/bootstrap-pro"&gt;ProductDiv's Bootstrap PRO starter kit&lt;/a&gt;! It includes custom SASS themes and examples for you along with high quality HTML templates to get you started!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Visually building websites</title>
      <dc:creator>Aaron Westbrook</dc:creator>
      <pubDate>Fri, 13 May 2022 13:41:51 +0000</pubDate>
      <link>https://dev.to/awestbro/visually-building-websites-2eih</link>
      <guid>https://dev.to/awestbro/visually-building-websites-2eih</guid>
      <description>&lt;p&gt;My name is &lt;a href="https://github.com/awestbro"&gt;Aaron&lt;/a&gt; and I've been writing web applications since 2011. In that time I've worked with Java, Javascript, Python, XSLT, React, Knockout.js, Backbone.js, Rails, Elixir/ Phoenix, Next.js, Remix.js and more. &lt;/p&gt;

&lt;p&gt;In all the frameworks, I kept running into the same issues...&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Writing HTML and CSS by hand requires a lot of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Domain knowledge&lt;/li&gt;
&lt;li&gt;Troubleshooting&lt;/li&gt;
&lt;li&gt;Open Documentation tabs&lt;/li&gt;
&lt;li&gt;Time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While writing user interfaces can be very fun and rewarding, I found that too much of my time building new applications was spent re-learning the same patterns and re-writing the same HTML. Not only that but after talking with peers, I found many software developers didn't feel confident making good looking web pages because of the HTML and CSS knowledge barrier. Many would write the code, but always get confounded when the browser gave them different results than what was expected ("How do I vertically center this thing???").&lt;/p&gt;

&lt;h3&gt;
  
  
  Existing tools
&lt;/h3&gt;

&lt;p&gt;After some research, I found tools that were visual (like &lt;a href="https://elementor.com/"&gt;Elementor&lt;/a&gt;) and had templates for code re-use, but lacked tools that made them useful for my web development workflow. I wanted a tool that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Has templates and a drag and drop page builder&lt;/li&gt;
&lt;li&gt;Works with my CSS framework of choice&lt;/li&gt;
&lt;li&gt;Exports clean code (No unnecessary inline styles or machine-generated classes)&lt;/li&gt;
&lt;li&gt;Is configurable and grows with my project&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;I started work on &lt;a href="https://github.com/awestbro/productdiv"&gt;ProductDiv&lt;/a&gt; in July of 2021. It went through many design iterations to finally become a productive tool for web development.&lt;/p&gt;

&lt;p&gt;ProductDiv is an open-source library for developing web applications quickly, with any CSS framework. It accomplishes this by running entirely &lt;a href="https://productdiv.com/docs"&gt;on configuration&lt;/a&gt;!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Has templates and a drag and drop page builder&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In ProductDiv, you can write re-usable templates and include them in your configuration. A simple template definition is a simple as:&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;myTemplate&lt;/span&gt; &lt;span class="o"&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;Test&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;htmlTemplate&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;&amp;lt;h1&amp;gt;Hello World!&amp;lt;/h1&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;tags&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;Test&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Any template can be previewed inside your page, meaning if you make changes in your CSS, they are reflected in your template!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Works with my CSS framework of choice&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The real magic of ProductDiv is in its configuration. Since more and more CSS frameworks have moved towards using utility classes, I wanted to design an experience for easily selecting and applying them to existing elements. With a little configuration, you can encapsulate any utility class like so:&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;themeBreakpoints&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sm|md|lg|xl|xxl&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;MarginStart&lt;/span&gt; &lt;span class="o"&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;Margin Start&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;selectMany&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;classes&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;ms-(0|1|2|3|4|5|auto)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s2"&gt;`ms-(&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;themeBreakpoints&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;)-(0|1|2|3|4|5|auto)`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;tags&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;Spacing&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;Margin&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;selectors&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;h1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This example configuration is what is needed to encapsulate all of Bootstrap 5's Margin End classes. Its name is shown in the editor, many of them can be selected at once, and the shorthand classes syntax is expanded at runtime to save time. For example &lt;code&gt;m-(1|2)&lt;/code&gt; will be expanded to: &lt;code&gt;m-1&lt;/code&gt; and &lt;code&gt;m-2&lt;/code&gt;. The &lt;code&gt;selectors&lt;/code&gt; option allows you to match utility classes to elements! In this exmaple, if you clicked a h1 tag, it would show our Margin Start utility class at the top. In the ProductDiv editor, now you can apply these classes to any element you want. Hovering over any of the options applies it to the element you're editing so you never have to second-guess which class you need!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Exports clean code (No unnecessary inline styles or machine-generated classes)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The beauty of ProductDiv and its configuration allows you to generate code at the same quality you would write it by hand. Templates copy out exactly as they came in, and utility classes help you avoid inline styles everywhere and lead to a more consistent code base.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is configurable and grows with my project&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Since ProductDiv is entirely configuration-based, it grows as you do. Need to encapsulate a new design element? Make a template. Pull in an icon library? Write a simple utility class definition. ProductDiv's easy to use interface lets you spend more time designing and less time digging through documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do I get started?
&lt;/h2&gt;

&lt;p&gt;To learn more about the editor, take a look at the &lt;a href="https://dev.to/tutorial"&gt;tutorial&lt;/a&gt;.Check out the &lt;a href="https://github.com/awestbro/productdiv#add-to-your-project"&gt;ProductDiv documentation&lt;/a&gt; for instructions on how to add ProductDiv to your project. If you would like to save time on your next application, please check out our &lt;a href="https://dev.to/products/bootstrap-pro"&gt;Bootstrap PRO&lt;/a&gt; project that includes everything you need for building your next application quickly with Bootstrap 5!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>html</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
