<?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: Jaakko</title>
    <description>The latest articles on DEV Community by Jaakko (@bjakyt).</description>
    <link>https://dev.to/bjakyt</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%2F537181%2F49402438-c9b3-4d3e-a309-3a612a0ccff5.jpg</url>
      <title>DEV Community: Jaakko</title>
      <link>https://dev.to/bjakyt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bjakyt"/>
    <language>en</language>
    <item>
      <title>Speed up your development with Git aliases 🚀</title>
      <dc:creator>Jaakko</dc:creator>
      <pubDate>Sun, 28 Nov 2021 19:02:34 +0000</pubDate>
      <link>https://dev.to/bjakyt/speed-up-your-development-with-git-aliases-c0j</link>
      <guid>https://dev.to/bjakyt/speed-up-your-development-with-git-aliases-c0j</guid>
      <description>&lt;p&gt;Git aliases are a powerful workflow tool that creates shortcuts to frequently used Git commands. Using Git aliases will make you a faster and more efficient developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating aliases
&lt;/h2&gt;

&lt;p&gt;Use the command below to create aliases, replacing &lt;code&gt;&amp;lt;alias&amp;gt;&lt;/code&gt; with the name of the alias and &lt;code&gt;&amp;lt;command&amp;gt;&lt;/code&gt; with the command to be aliased:&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%2Ffe18yrdgfo35yo9094bw.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%2Ffe18yrdgfo35yo9094bw.png" alt="command"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alternatively, you can edit the global git configuration file and add all aliases at once, by opening the git configuration file by running &lt;code&gt;git config --global -e&lt;/code&gt; in your terminal.&lt;/p&gt;

&lt;h3&gt;
  
  
  Useful aliases
&lt;/h3&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%2Fa091r6ic6d5tu0t0ax7a.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%2Fa091r6ic6d5tu0t0ax7a.png" alt=".gitconfig"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm &lt;a href="https://twitter.com/bjakyt" rel="noopener noreferrer"&gt;@bjakyt&lt;/a&gt; on Twitter. Follow me for more!&lt;/p&gt;

</description>
      <category>git</category>
      <category>javascript</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Responsive typography in one line</title>
      <dc:creator>Jaakko</dc:creator>
      <pubDate>Sat, 27 Nov 2021 20:22:56 +0000</pubDate>
      <link>https://dev.to/bjakyt/responsive-typography-in-one-line-3jfi</link>
      <guid>https://dev.to/bjakyt/responsive-typography-in-one-line-3jfi</guid>
      <description>&lt;p&gt;The CSS clamp() function is a small and maybe a bit unknown function, but I think it's pretty awesome. It works by clamping a value between an upper and lower range.&lt;/p&gt;

&lt;p&gt;It can be used for various things such as border size or padding values, but so far I have only used it for font sizes. &lt;/p&gt;

&lt;p&gt;The usual way to create fluid typography involves playing around with different calculations around the viewport size and for some reason, I have never liked doing it that way. The clamp() however, has nice readability and it's easy to control.&lt;/p&gt;

&lt;p&gt;Here's a small snippet of using clamp():&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--k2YpJpvv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/62lvk57q7m2ytx9opc7t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k2YpJpvv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/62lvk57q7m2ytx9opc7t.png" alt="css styles" width="880" height="850"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, it takes three values. Those values are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A minimum value&lt;/li&gt;
&lt;li&gt;A preferred value&lt;/li&gt;
&lt;li&gt;A maximum value&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In the snippet above, I set the minimum size as &lt;code&gt;1.75rem&lt;/code&gt; and the maximum size as &lt;code&gt;3rem&lt;/code&gt; for the h1. For h2 we have &lt;code&gt;1.2rem&lt;/code&gt; and &lt;code&gt;1.4rem&lt;/code&gt;, and the h3 has &lt;code&gt;1rem&lt;/code&gt; and &lt;code&gt;1.5rem&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Here's the result, when used in the front page of dev.to: &lt;/p&gt;

&lt;p&gt;Mobile:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5jMIoCtn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9jeseck1j8o2aika47a1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5jMIoCtn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9jeseck1j8o2aika47a1.png" alt="mobile" width="359" height="678"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Desktop:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--j05zQ4-W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wuj75j7okubsum0wfkvs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--j05zQ4-W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wuj75j7okubsum0wfkvs.png" alt="desktop" width="880" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cool and easy, huh? No need for complex calculations or media queries.&lt;/p&gt;

&lt;p&gt;You can play around with the middle value (preferred size), as it controls the fluidity. You can use &lt;code&gt;vw&lt;/code&gt; units that allow the font to scale with the size of the display but stay within your ranges.&lt;/p&gt;

&lt;p&gt;Follow me on Twitter for more: &lt;a href="https://twitter.com/bjakyt"&gt;https://twitter.com/bjakyt&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>webdev</category>
      <category>programming</category>
      <category>html</category>
    </item>
    <item>
      <title>How I structure my React.js projects</title>
      <dc:creator>Jaakko</dc:creator>
      <pubDate>Sat, 27 Nov 2021 01:54:00 +0000</pubDate>
      <link>https://dev.to/bjakyt/how-i-structure-my-reactjs-projects-4cmc</link>
      <guid>https://dev.to/bjakyt/how-i-structure-my-reactjs-projects-4cmc</guid>
      <description>&lt;p&gt;Structuring React applications into files and folders is an opinionated topic, because there is no right or wrong way to do it. I decided to share how I have structured my projects lately. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; Highly opinionated!&lt;/p&gt;

&lt;p&gt;Let's get started.&lt;/p&gt;

&lt;h3&gt;
  
  
  Single file
&lt;/h3&gt;

&lt;p&gt;React projects usually start with an &lt;code&gt;src/&lt;/code&gt; folder and one &lt;code&gt;src/App.tsx&lt;/code&gt; file with an App component.&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%2Fej5es5a20cdybqrn7ngj.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%2Fej5es5a20cdybqrn7ngj.png" alt="1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At some point, your app has more features, more lines, and you will need to make smaller standalone components:&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%2Fforl9qz4dcqawmteaz3v.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%2Fforl9qz4dcqawmteaz3v.png" alt="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sometimes it's OK to have multiple components in one file, especially if those components are tightly coupled to the main component. Often it's better to use multiple files because eventually, that one file is not sufficient anymore.&lt;/p&gt;

&lt;h3&gt;
  
  
  Multiple files
&lt;/h3&gt;

&lt;p&gt;Instead of having all our code in one file, we can split these components into multiple files. At this point, as our project is still quite small, I would do it like this:&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%2Ftpc5jl5y2b6f6d2b91s4.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%2Ftpc5jl5y2b6f6d2b91s4.png" alt="3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the above example, List component exports only &lt;code&gt;List&lt;/code&gt;, but it also has the &lt;code&gt;ListItem&lt;/code&gt; component, which is not exported.&lt;/p&gt;

&lt;p&gt;If you want to take it to the next level, you can start using directories instead of files. I would also extract the &lt;code&gt;ListItem&lt;/code&gt; from &lt;code&gt;List&lt;/code&gt; and make it its own standalone component inside &lt;code&gt;src/components/List/partials&lt;/code&gt; subdirectory:&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%2F88h4a8te8e7ximsgjpdm.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%2F88h4a8te8e7ximsgjpdm.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From now on, I would only use &lt;code&gt;/components&lt;/code&gt; directory for reusable components.&lt;/p&gt;

&lt;h3&gt;
  
  
  Folder separation
&lt;/h3&gt;

&lt;p&gt;Next, we separate features from components. Let's say we need to create an &lt;code&gt;useUser&lt;/code&gt; hook, so we'll create a dedicated &lt;code&gt;hooks&lt;/code&gt; directory and put it in there: &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%2Fx86dawzg1zgtk6b63h5d.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%2Fx86dawzg1zgtk6b63h5d.png" alt="4"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That &lt;code&gt;hooks&lt;/code&gt; folder is meant for reusable hooks only. If you have a hook that is used by one component only, it should remain in the component's own file (or directory). &lt;/p&gt;

&lt;p&gt;That same principle applies to many other things as well. For example, if we need to create a reusable service - we'll create a &lt;code&gt;services&lt;/code&gt; directory and put our service in there:&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%2F6t2prz9s1274xpof6zsz.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%2F6t2prz9s1274xpof6zsz.png" alt="5"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Separated views
&lt;/h3&gt;

&lt;p&gt;When we create separate directories for everything that's reusable and keep the non-reusable stuff only where it is used, we've come a long way.&lt;/p&gt;

&lt;p&gt;Lastly, I want to create a directory called &lt;code&gt;views&lt;/code&gt;. Those views are basically a representation of the url. For example, a directory &lt;code&gt;User&lt;/code&gt; could mean &lt;code&gt;https://&amp;lt;url&amp;gt;/user&lt;/code&gt; and so on.&lt;/p&gt;

&lt;p&gt;These views can of course import reusable services or components, but they also have their own subdirectories for non-reusable stuff.&lt;/p&gt;

&lt;p&gt;Here's an example, how my project structure could look like:&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%2Fklbc1mn1cty4nrfvwhln.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%2Fklbc1mn1cty4nrfvwhln.png" alt="6"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow on Twitter for more: &lt;a href="https://twitter.com/bjakyt" rel="noopener noreferrer"&gt;https://twitter.com/bjakyt&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>100 design resources for developers</title>
      <dc:creator>Jaakko</dc:creator>
      <pubDate>Fri, 26 Nov 2021 11:15:19 +0000</pubDate>
      <link>https://dev.to/bjakyt/100-design-resources-for-developers-2ddk</link>
      <guid>https://dev.to/bjakyt/100-design-resources-for-developers-2ddk</guid>
      <description>&lt;h3&gt;
  
  
  Colors
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://colorhunt.co"&gt;Color Hunt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coolors.co"&gt;Coolors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://color.adobe.com/create/color-wheel"&gt;Adobe Color Wheel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://grabient.com"&gt;Grabient&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://palettte.app"&gt;Palettte App&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.polarite.app"&gt;Polarite App&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.degraeve.com/color-palette"&gt;DaGraeve&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.donesmart.com/free-online-tools/online-color-scheme-generator-picker"&gt;Color Scheme Generator&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.paletton.com"&gt;Paletton - Color Scheme Designer&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://colorleap.app"&gt;Color Leap - History's Palettes&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://randomcolorpalettes.com"&gt;Random Color Palettes&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://culrs.com"&gt;Culrs&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://palette.site"&gt;Site Palette&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://colorkitty.com/"&gt;ColorKitty&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Icons
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://icons.getbootstrap.com/"&gt;Bootstrap Icons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://boxicons.com/"&gt;Boxicons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://danklammer.com/bytesize-icons"&gt;Byte Size Icons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://akveo.github.io/eva-icons"&gt;Eva icons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://evil-icons.io"&gt;Evil icons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://feathericons.com"&gt;Feather&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flaticon.com"&gt;Flaticon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/microsoft/fluentui-system-icons#fluent-system-icons"&gt;Fluent System Icons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fontawesome.com"&gt;Font Awesome&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heroicons.dev"&gt;Heroicons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://iconpark.bytedance.com"&gt;IconPark&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://iconsvg.xyz"&gt;ICONSVG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ionic.io/ionicons"&gt;Ion icons&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://material.io/tools/icons"&gt;Material design icons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://octicons.github.com"&gt;Octicons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://useiconic.com/open"&gt;Open Iconic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yne.fr/picon"&gt;Picon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://icons.modulz.app"&gt;Radix Icons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://remixicon.com"&gt;Remix Icon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://shape.so"&gt;Shape.so&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/edent/SuperTinyIcons"&gt;Super Tiny Icons&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tabler/tabler-icons"&gt;Tabler Icons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://teenyicons.com"&gt;Teenyicons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://thenounproject.com/"&gt;The Noun Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tilda.cc/free-icons"&gt;Tilda Icons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://iconscout.com/unicons"&gt;Unicons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/microsoft/vscode-icons"&gt;VSCode Icons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/erikflowers/weather-icons"&gt;Weather icons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.zondicons.com"&gt;Zondicons&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Free illustrations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://error404.fun"&gt;404 Illustrations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blackillustrations.com"&gt;Black Illustrations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.humaaans.com"&gt;Humaaans&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://illlustrations.co"&gt;illlustrations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.manypixels.co/gallery"&gt;Illustration Gallery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usesmash.com"&gt;Smash Illustrations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stubborn.fun"&gt;Stubborn Generator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://undraw.co/illustrations"&gt;unDraw Illustrations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://designs.ai/graphicmaker"&gt;Designs.ai Graphicmaker&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://storyset.com/"&gt;Story Set&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Freemium illustrations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://absurd.design"&gt;Absurd Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blush.design"&gt;Blush&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://control.rocks"&gt;Control Illustrations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://deliciousdesign.store/pandemic.html"&gt;Pandemic Illustrations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://selfspace.design"&gt;Self Space Illustrations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Online design tools
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.figma.com/graphic-design-tool/"&gt;Figma&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://snappa.com"&gt;Snappa&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.taler.app"&gt;Taler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.canva.com"&gt;Canva&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://getwaves.io"&gt;Get Waves&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bennettfeely.com/clippy"&gt;Clippy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Typography
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://fonts.google.com/"&gt;Google Fonts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dafont.com/"&gt;DaFont&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemodify.com/"&gt;Use &amp;amp; Modify&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.1001freefonts.com/"&gt;1001 Free Fonts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fontsquirrel.com/"&gt;Font Squirrel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fontfabric.com/free-fonts/"&gt;Font Fabric&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tiff.herokuapp.com/"&gt;Tiff&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://practice.typekit.com/"&gt;TypeKit Practice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fontjoy.com/"&gt;Fontjoy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grtcalculator.com/"&gt;Golden Ratio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fontpair.co/"&gt;FontPair&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fontspace.com/"&gt;Font Space&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.abstractfonts.com/"&gt;Abstract Fonts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://freetypography.com/"&gt;Free Typography&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cmiscm/leonsans/"&gt;Leon Sans&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.lexend.com/"&gt;Lexend&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fontflipper.com/"&gt;Font Flipper&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fontsarena.com/"&gt;Fonts Arena&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://befonts.com/"&gt;Befonts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Patterns
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://lea.verou.me/css3patterns/"&gt;CSS3 Patterns Gallery&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://gradienta.io/"&gt;Gradienta&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.heropatterns.com/"&gt;Hero Patterns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.toptal.com/designers/subtlepatterns/"&gt;Subtle Patterns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://thepatternlibrary.com/"&gt;The Pattern Library&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learn design
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://designbetter.co"&gt;Design Better&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reallygoodux.io"&gt;ReallyGoodUX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lawsofux.com"&gt;Laws of UX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.refactoringui.com"&gt;Refactoring UI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Inspiration
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mobbin.design"&gt;MobbinDesign&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://onepagelove.com"&gt;OnePageLove&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://landingfolio.com"&gt;Landingfolio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://land-book.com"&gt;Land-book&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Miscellaneous
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://illustration.tools"&gt;Illustration Tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://airbnb.design/lottie"&gt;Lottie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lottiefiles.com"&gt;LottieFiles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ray.so"&gt;Ray.so&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>ux</category>
      <category>design</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Which technologies would you choose for your next web project?</title>
      <dc:creator>Jaakko</dc:creator>
      <pubDate>Thu, 25 Nov 2021 19:08:33 +0000</pubDate>
      <link>https://dev.to/bjakyt/which-technologies-would-you-choose-for-your-next-web-project-3a4h</link>
      <guid>https://dev.to/bjakyt/which-technologies-would-you-choose-for-your-next-web-project-3a4h</guid>
      <description>&lt;p&gt;If you were building an application consisting of a user interface and an API, what technology choices would you make and why?&lt;/p&gt;

&lt;p&gt;I'll go first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. TypeScript&lt;/strong&gt;&lt;br&gt;
I'd choose TypeScript because it's worth it. If you haven't used TypeScript before, you may have a temporary productivity loss, but in the end, it's worth it. I haven't met anyone who would go back to plain JavaScript, after learning TypeScript.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. React &amp;amp; Next.js&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;React is a battle-tested library for building UI's. It has good documentation and a large community. There are so many components already implemented and ready to use, so you don't have to build everything yourself.&lt;/p&gt;

&lt;p&gt;Next.js has been around for only a couple of years, but it is already one of the most popular tools in the React ecosystem. Next.js offers you so much out of the box. SSR, file-system-based routing, has the potential to improve metrics such as time-to-first-draw (TTFD) and so much more...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. PostgreSQL or MongoDB&lt;/strong&gt;&lt;br&gt;
In general, you should choose your database based on the structure of your data. However, I think either PostgreSQL or MongoDB is a great place to start.&lt;/p&gt;

&lt;p&gt;If I'd end up using PostgreSQL, I would choose Prisma as an ORM. Their API is very intuitive to use, it has hassle-free migrations, and they even have a VSCode extension!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Zod&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For input validation, I would probably go with Zod. Again, it goes so well with TypeScript. It was built with DX in mind, it doesn't have any dependencies, and it's lightweight (only 8kb zipped + minified).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Stitches or TailwindCSS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For styling, I would choose Stitches or TailwindCSS.&lt;br&gt;
Stitches is a styling solution focusing on component architecture and developer experience. It has similarities with styled-components, but it also has a first-class variant API and a nice design system config. It's fully typed and lightweight (less than 5kb).&lt;/p&gt;

&lt;p&gt;Another possible solution would be Tailwind. As a low-level CSS framework, it has become one of my preferred styling solutions. It has increased my productivity and made me more consistent. Even though I have liked using it, it doesn't mean that it is the perfect solution for every project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Supabase&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For database, authentication, and storage, I would most likely use Supabase. For those who don't know what Supabase is: Supabase is a set of tools that help developers build projects faster by automatically handling a lot of the behind-the-scenes work.&lt;/p&gt;

&lt;p&gt;Create a project, and Supabase will give you a Postgres database, an API for interacting with the database, a user authentication system that plays well with common login providers (such as Facebook, Twitter, etc), a storage system for handling uploads, and a pretty UI for managing this all. It takes off a bunch of work you'd need to do otherwise - so you can focus on building your product.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Hosting:&lt;/strong&gt; Vercel or Netlify&lt;br&gt;
&lt;strong&gt;8. Logging and error tracking:&lt;/strong&gt; Sentry or Logrocket&lt;br&gt;
&lt;strong&gt;9. Testing:&lt;/strong&gt; Jest, React Testing Library, Jest-axe&lt;/p&gt;

&lt;p&gt;Comment below, how you would build your next project :)&lt;/p&gt;

&lt;p&gt;Follow on Twitter for more: &lt;a href="https://twitter.com/bjakyt"&gt;https://twitter.com/bjakyt&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>react</category>
      <category>programming</category>
    </item>
    <item>
      <title>Free Next.js landing page template</title>
      <dc:creator>Jaakko</dc:creator>
      <pubDate>Thu, 25 Feb 2021 10:37:35 +0000</pubDate>
      <link>https://dev.to/bjakyt/free-next-js-landing-page-template-1o3g</link>
      <guid>https://dev.to/bjakyt/free-next-js-landing-page-template-1o3g</guid>
      <description>&lt;p&gt;React and Next.js resources and landing page templates can be difficult to find on the internet, especially the ones that are not outdated or don't have performance issues.&lt;/p&gt;

&lt;p&gt;STARTD is a free Next.js landing page template for SaaS products, online services and more.&lt;/p&gt;

&lt;p&gt;Technologies used:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js — An amazing React framework&lt;/li&gt;
&lt;li&gt;Twind — The smallest, fastest, most feature complete Tailwind-in-JS solution in existence&lt;/li&gt;
&lt;li&gt;TypeScript — It's worth it&lt;/li&gt;
&lt;li&gt;ESLint — Pluggable JavaScript linter&lt;/li&gt;
&lt;li&gt;Prettier — Opinionated Code Formatter&lt;/li&gt;
&lt;li&gt;Husky — Use git hooks with ease&lt;/li&gt;
&lt;li&gt;Commitlint — Lint commit messages&lt;/li&gt;
&lt;li&gt;Renovate — Dependency update tool&lt;/li&gt;
&lt;li&gt;lint-staged — Run linters against staged git files&lt;/li&gt;
&lt;li&gt;Absolute import — Import folders and files using the @ prefix&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Live demo: &lt;a href="https://next-startd.vercel.app"&gt;https://next-startd.vercel.app&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/jkytoela/next-startd"&gt;https://github.com/jkytoela/next-startd&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to use it for whatever you want 🙌&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>tailwindcss</category>
      <category>typescript</category>
      <category>react</category>
    </item>
  </channel>
</rss>
