<?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: Dev.to Rater Organization</title>
    <description>The latest articles on DEV Community by Dev.to Rater Organization (@dev-to-rater-org).</description>
    <link>https://dev.to/dev-to-rater-org</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%2Forganization%2Fprofile_image%2F10255%2F4c37576e-cd46-43a4-b9a9-69971c925f94.png</url>
      <title>DEV Community: Dev.to Rater Organization</title>
      <link>https://dev.to/dev-to-rater-org</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dev-to-rater-org"/>
    <language>en</language>
    <item>
      <title>Modern React website with stunning animations and free code</title>
      <dc:creator>Nikola Perišić</dc:creator>
      <pubDate>Thu, 20 Feb 2025 10:26:46 +0000</pubDate>
      <link>https://dev.to/dev-to-rater-org/modern-react-website-with-stunning-animations-and-free-code-15gi</link>
      <guid>https://dev.to/dev-to-rater-org/modern-react-website-with-stunning-animations-and-free-code-15gi</guid>
      <description>&lt;h4&gt;
  
  
  Tech stack: &lt;strong&gt;React.js&lt;/strong&gt; + &lt;strong&gt;TypeScript&lt;/strong&gt; + &lt;strong&gt;Vite&lt;/strong&gt;
&lt;/h4&gt;

&lt;h5&gt;
  
  
  Live preview: &lt;a href="https://dev-to-rater.xyz" rel="noopener noreferrer"&gt;https://dev-to-rater.xyz&lt;/a&gt;
&lt;/h5&gt;

&lt;h5&gt;
  
  
  Repository: &lt;a href="https://github.com/perisicnikola37/dev-to-rater" rel="noopener noreferrer"&gt;https://github.com/perisicnikola37/dev-to-rater&lt;/a&gt;
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Frcpfp3x5vi73a2ud7vja.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Frcpfp3x5vi73a2ud7vja.png" alt="Dev.to Rater" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.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%2F6gr1zmcaxq81126iv4on.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F6gr1zmcaxq81126iv4on.png" alt="Dev.to Rater - Next-Gen Blog Scanner Tool. Analyze your blog post to uncover trends, engagement metrics, and content patterns. Gain insights to optimize your posts and reach a wider audience." width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F8r4eagc45wbboo2jff2o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F8r4eagc45wbboo2jff2o.png" alt="Dev.to Rater - Next-Gen Blog Scanner Tool. Analyze your blog post to uncover trends, engagement metrics, and content patterns. Gain insights to optimize your posts and reach a wider audience." width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fom2685yd70donz3jywyu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fom2685yd70donz3jywyu.png" alt="Dev.to Rater - Next-Gen Blog Scanner Tool. Analyze your blog post to uncover trends, engagement metrics, and content patterns. Gain insights to optimize your posts and reach a wider audience." width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F3z1mdaikqv0twiifpnsa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F3z1mdaikqv0twiifpnsa.png" alt="Dev.to Rater - Next-Gen Blog Scanner Tool. Analyze your blog post to uncover trends, engagement metrics, and content patterns. Gain insights to optimize your posts and reach a wider audience." width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fjskno93sx1r2dgkq0fys.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fjskno93sx1r2dgkq0fys.png" alt="Dev.to Rater blog posts" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://dev-to-rater.xyz/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.postimg.cc%2FbJvBsD5Y%2Fcroppedz.png" width="800" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The end: Create React App (2016-2025)</title>
      <dc:creator>Nikola Perišić</dc:creator>
      <pubDate>Tue, 18 Feb 2025 07:13:35 +0000</pubDate>
      <link>https://dev.to/dev-to-rater-org/the-end-create-react-app-2016-2025-3cdf</link>
      <guid>https://dev.to/dev-to-rater-org/the-end-create-react-app-2016-2025-3cdf</guid>
      <description>&lt;h2&gt;
  
  
  The Sunsetting of Create React App
&lt;/h2&gt;

&lt;p&gt;On February 14, 2025, React officially deprecated &lt;strong&gt;Create React App&lt;/strong&gt; (&lt;strong&gt;CRA&lt;/strong&gt;), marking the end of an era for React developers. For years, CRA was the go-to tool for bootstrapping new React projects.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why is Create React App Being Deprecated?
&lt;/h2&gt;

&lt;p&gt;React ecosystem has evolved significantly since CRA’s introduction in 2016. Modern frameworks and build tools have surpassed CRA in both &lt;u&gt;performance&lt;/u&gt; and &lt;u&gt;flexibility&lt;/u&gt;. With no active maintainers and better alternatives available, the React team decided to retire CRA. The React team is encouraging developers to migrate to frameworks like &lt;strong&gt;Next.js&lt;/strong&gt; or build tools like &lt;strong&gt;Vite&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Also because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CRA does not provide a routing system&lt;/li&gt;
&lt;li&gt;CRA lacks optimized data-fetching strategies&lt;/li&gt;
&lt;li&gt;CRA ships apps as a single JavaScript bundle, which can result in longer load times. Modern frameworks automatically handle code splitting&lt;/li&gt;
&lt;li&gt;CRA has lacked active maintainers&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;Starting today, developers installing &lt;strong&gt;Create React App&lt;/strong&gt; will see a deprecation warning:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;create-react-app is deprecated.

You can find a list of up-to-date React frameworks on react.dev
For more info see: react.dev/link/cra
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CRA will still function in maintenance mode and has been updated to support React 19. However, no new features will be added, and developers are strongly encouraged to migrate to modern solutions.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Migrate Away from Create React App
&lt;/h2&gt;

&lt;p&gt;You can visit the official guide at the React blog post &lt;a href="https://react.dev/blog/2025/02/14/sunsetting-create-react-app" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Our tip:&lt;/strong&gt; If you're looking for the simplest and most efficient way to set up a new &lt;strong&gt;React&lt;/strong&gt; project after &lt;strong&gt;Create React App&lt;/strong&gt;'s deprecation, &lt;code&gt;React + Vite&lt;/code&gt; is the way to go. &lt;/p&gt;

&lt;p&gt;What are your thoughts on this change? Let’s discuss in the comments! 🚀&lt;/p&gt;




&lt;p&gt;&lt;a href="https://dev-to-rater.xyz/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.postimg.cc%2FbJvBsD5Y%2Fcroppedz.png" width="800" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>react</category>
    </item>
    <item>
      <title>The biggest backend mistakes you can do</title>
      <dc:creator>Nikola Perišić</dc:creator>
      <pubDate>Fri, 14 Feb 2025 09:13:35 +0000</pubDate>
      <link>https://dev.to/dev-to-rater-org/the-biggest-backend-mistakes-you-can-do-ki0</link>
      <guid>https://dev.to/dev-to-rater-org/the-biggest-backend-mistakes-you-can-do-ki0</guid>
      <description>&lt;p&gt;Hello, fellow devs! Welcome to the second part of our series how to become a better developer. You really liked the first part (&lt;a href="https://dev.to/dev-to-rater-org/the-biggest-frontend-mistakes-you-can-do-bng"&gt;The biggest frontend mistakes&lt;/a&gt;) sooo, voila! &lt;/p&gt;

&lt;p&gt;Today we will learn about common backend mistakes. I'll highlight some of these mistakes and show you how to avoid them.&lt;/p&gt;




&lt;h3&gt;
  
  
  1. Missing security
&lt;/h3&gt;

&lt;p&gt;I intentionally set this as the first point. As a backend developer, you build the system. &lt;/p&gt;

&lt;p&gt;Of course, that system need to be secured. I can’t believe how many people still neglect security features like &lt;strong&gt;CORS&lt;/strong&gt; or &lt;strong&gt;Rate Limiting&lt;/strong&gt; in their applications, but sadly, it happens. These topics are crucial for protecting your system against vulnerability attacks. Below, I’ve made a checklist of essential topics to test your system with.&lt;/p&gt;

&lt;h4&gt;
  
  
  Security Checklist:
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Security Measures&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Network Security&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Enable HSTS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Use SSL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Check SSL Version, Algorithms, Key length&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Authentication &amp;amp; Session&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Use Secure cookies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Implement SHA256 encryption for passwords&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Authorization &amp;amp; Access Control&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Implement CSRF&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Test for bypassing authorization schema on forms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Input &amp;amp; Data Validation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Test for HTML and SQL Injection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Test file extensions handling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Client-Side Security&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Check for sensitive data in client-side code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Use reCAPTCHA whenever you can&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  2. Poor Database Design
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lack of Proper Indexing&lt;/strong&gt;: Developers sometimes forget to add indexes or &lt;strong&gt;add too many&lt;/strong&gt;. Neither is good. You should find the &lt;strong&gt;right balance&lt;/strong&gt;. Without indexes, queries become slow as the database scans entire tables. On the other hand, excessive indexing increases storage use and slows down write operations. So be careful. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Our tip:&lt;/strong&gt; Add indexes only for columns that are queried frequently.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ignoring Scalability and Future Growth in the beggining&lt;/strong&gt;: Many developers design databases based on current needs without considering future growth. This leads to issues like lack of partitioning, poor choice of data types, and difficulty in handling high traffic loads later on. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Our tip:&lt;/strong&gt; You might think that spending a lot of time on database design is unnecessary, but it's not. Database planning requires you to think about current needs and for future growth. As in a previous example, here also, you need to strike for the right balance. We suggest using this formula:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;currentNeeds = 10GB // For example

myDatabase = currentNeeds x 0.20 // So add 20%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Practical Explanation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This formula helps you plan your database by accounting for not just your current needs, but also future growth.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;currentNeeds&lt;/code&gt; -&amp;gt; This is how much space or how many resources your database currently requires. Think of it as the size of your existing data or the capacity you need for your current operations.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;myDatabase&lt;/code&gt; -&amp;gt;  This is the final size or capacity of your database, which is the combination of your current needs and the additional buffer (20%).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, instead of just allocating &lt;strong&gt;10GB&lt;/strong&gt; for your database, you plan for &lt;strong&gt;12GB&lt;/strong&gt;. This &lt;strong&gt;20%&lt;/strong&gt; extra space accounts for growth, ensuring your database won't run out of space as you add more data or features over time. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Additional Considerations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Column Choices:&lt;/strong&gt; Use appropriate data types. For example, instead of using a &lt;code&gt;VARCHAR(255)&lt;/code&gt; for a field that will never exceed &lt;strong&gt;100&lt;/strong&gt; characters, use &lt;code&gt;VARCHAR(100)&lt;/code&gt; to save space.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Growth Monitoring:&lt;/strong&gt; Continuously monitor your database's growth. You can set up &lt;code&gt;alerts&lt;/code&gt; based on &lt;u&gt;disk usage&lt;/u&gt;, &lt;u&gt;table size&lt;/u&gt;, and the &lt;u&gt;number of rows&lt;/u&gt;. More about database alerts you can find &lt;a href="https://www.metricfire.com/blog/receiving-mysql-database-alerts/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By thinking ahead and allocating 20% more space for growth, you're avoiding potential problems related to database performance and the need for frequent redesigns.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Not Considering Caching
&lt;/h3&gt;

&lt;p&gt;Caching is an essential aspect of backend development, yet it's often overlooked.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why it’s important:
&lt;/h4&gt;

&lt;p&gt;Without caching, your system might become slow as more users access your app. Every time a request is made to the server, the system has to process the request fully, which can lead to latency and performance issues and surely you don't want that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Our tip:&lt;/strong&gt; Use in-memory data stores like &lt;strong&gt;Redis&lt;/strong&gt; or Mem****cached to cache frequently accessed data (like product details or user sessions). Also remember to set expiration times and cache invalidation strategies to ensure that the cache is refreshed with the latest data.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Hardcoding Values
&lt;/h3&gt;

&lt;p&gt;Hardcoding values such as database connection strings, API keys, and other configuration parameters directly in your code is a common and &lt;strong&gt;BIG&lt;/strong&gt; mistake.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why it’s bad:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;It makes the code harder to maintain.&lt;/li&gt;
&lt;li&gt;Exposing sensitive information, like API keys, in code can lead to security issues.&lt;/li&gt;
&lt;li&gt;If you need to change a configuration value, you’ll have to search through the entire codebase and update it everywhere.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bad ❌&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UserService&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;ConnectToDatabase&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Hardcoded connection string, making it difficult to change or secure&lt;/span&gt;
        &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;connectionString&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="c1"&gt;// Code to establish a connection...&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;Good ✅&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UserService&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;ConnectToDatabase&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Use environment variable to get the connection string securely&lt;/span&gt;
        &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;connectionString&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Environment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetEnvironmentVariable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"DB_CONNECTION_STRING"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;IsNullOrEmpty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;connectionString&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Database connection string not found."&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="c1"&gt;// Code to establish a connection...&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;h3&gt;
  
  
  5. Not Using Version Control Properly
&lt;/h3&gt;

&lt;p&gt;If you write commit messages like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit -m "fix"
git commit -m "fix v1.2"
git commit -m "fix something"
git commit -m "fix bug"
git commit -m "change"
git commit -m "optimization"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Don't push.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why it’s bad:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Other developers don't know what you've done in that commit without checking the changed files which requires time.&lt;/li&gt;
&lt;li&gt;By doing this you can easily have a lot of commits with same/similar message.&lt;/li&gt;
&lt;li&gt;When you need to revert to the old commit, and by seeing commit log like the above one, you cannot know to which one to reset.&lt;/li&gt;
&lt;li&gt;In the future you will not know for which part of the application was &lt;code&gt;fix&lt;/code&gt; commit, for example.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Good ✅&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit -m "chore: modify README.md file"
git commit -m "fix: user validation not working"
git commit -m "feat: user validation of create form"
git commit -m "docs: add our team page"
git commit -m "ui: add image swiper on the home page"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Bonus tip:&lt;/strong&gt; Always write commit messages in Present Tense. So instead of &lt;code&gt;changed&lt;/code&gt; write &lt;code&gt;change&lt;/code&gt;. You can learn about Conventional Commits &lt;a href="https://www.conventionalcommits.org/en/v1.0.0/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  6. Not Separating Business Logic, Infrastructure, and Other Concerns
&lt;/h3&gt;

&lt;p&gt;One of the common mistakes backend developers make is not properly separating concerns in their codebase. Specifically, mixing business logic, infrastructure code, data access, and API routes into a single class or module.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why it’s bad:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tight coupling:&lt;/strong&gt; When business logic is &lt;u&gt;tightly coupled&lt;/u&gt; with infrastructure code (such as database operations, third-party service integrations, etc.), it becomes difficult to test and maintain. A small change in the infrastructure may break your business logic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hard to scale:&lt;/strong&gt; As your codebase grows, the lack of separation leads to more complexity, making it harder to scale the application and develop new features without breaking existing functionality.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Our tip:&lt;/strong&gt; Separate these concerns into different layers or components. This follows the &lt;strong&gt;Separation of Concerns (SoC)&lt;/strong&gt; principle and improves readability, scalability, and maintainability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples:&lt;/strong&gt; Clean Architecture, Hexagonal Architecture, Layered Architecture, Microservices Architecture, CQRS, Event-Driven Architecture, Domain-Driven Architecture&lt;/p&gt;




&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Keep these tips in mind as you continue your development journey, and remember: testing, optimizing, and following best practices will always pay off in the long run!&lt;/p&gt;

&lt;p&gt;If I forgot something or you liked the article, please leave a comment down below 💬&lt;/p&gt;

&lt;p&gt;Thanks for the reading :)&lt;/p&gt;




&lt;h3&gt;
  
  
  Support us on Product Hunt:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.producthunt.com/posts/dev-to-rater-2?embed=true&amp;amp;utm_source=badge-featured&amp;amp;utm_medium=badge&amp;amp;utm_souce=badge-dev-to-rater-2" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.producthunt.com%2Fwidgets%2Fembed-image%2Fv1%2Ffeatured.svg%3Fpost_id%3D873037%26theme%3Dlight%26t%3D1739525139145" alt="Dev.to Rater - Analyze blog posts to uncover trends and metrics | Product Hunt" width="250" height="54"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev-to-rater.xyz/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.postimg.cc%2FbJvBsD5Y%2Fcroppedz.png" width="800" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>backend</category>
      <category>javascript</category>
    </item>
    <item>
      <title>We are on Product Hunt!</title>
      <dc:creator>Dev-to Rater</dc:creator>
      <pubDate>Thu, 13 Feb 2025 08:03:23 +0000</pubDate>
      <link>https://dev.to/dev-to-rater-org/we-are-on-product-hunt-2a7l</link>
      <guid>https://dev.to/dev-to-rater-org/we-are-on-product-hunt-2a7l</guid>
      <description>&lt;p&gt;Big news! &lt;a href="https://dev-to-rater.xyz/" rel="noopener noreferrer"&gt;Dev.to Rater&lt;/a&gt;, is officially live on &lt;strong&gt;Product Hunt&lt;/strong&gt;! 🎉&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.producthunt.com/posts/dev-to-rater-2?embed=true&amp;amp;utm_source=badge-featured&amp;amp;utm_medium=badge&amp;amp;utm_souce=badge-dev-to-rater-2" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.producthunt.com%2Fwidgets%2Fembed-image%2Fv1%2Ffeatured.svg%3Fpost_id%3D873037%26theme%3Dlight%26t%3D1739440944617" alt="Dev.to Rater - Analyze blog posts to uncover trends and metrics | Product Hunt" width="250" height="54"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Dev.to Rater?
&lt;/h2&gt;

&lt;p&gt;If you're a developer, writer, or tech enthusiast who loves creating and consuming content on Dev.to, our tool is built just for you. Dev.to Rater helps analyze blog posts to uncover trends, engagement metrics, and quality insights so you can optimize your &lt;strong&gt;content strategy&lt;/strong&gt; and gain more visibility for your posts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why We Built It
&lt;/h2&gt;

&lt;p&gt;✅ Understand which topics are trending&lt;br&gt;
✅ Detect AI content&lt;br&gt;
✅ Analyze post performance metrics&lt;br&gt;
✅ Get actionable insights to improve content quality&lt;/p&gt;




&lt;h2&gt;
  
  
  Join the Discussion &amp;amp; Support Us!
&lt;/h2&gt;

&lt;p&gt;We would love your feedback, upvotes, and comments on &lt;strong&gt;Product Hunt&lt;/strong&gt;. Your support means to us and helps us grow this project into something even more valuable for the community.&lt;/p&gt;

&lt;p&gt;👉 Check us out on &lt;a href="https://www.producthunt.com/posts/dev-to-rater-2" rel="noopener noreferrer"&gt;Product Hunt&lt;/a&gt; and join the conversation!&lt;/p&gt;

&lt;p&gt;Thank you for being part of this journey. Let’s make Dev.to an even better space for tech content together!&lt;/p&gt;

</description>
      <category>devtorater</category>
      <category>programming</category>
      <category>productivity</category>
      <category>writing</category>
    </item>
    <item>
      <title>I've made Tool That Analyzes your Dev.to Posts</title>
      <dc:creator>Nikola Perišić</dc:creator>
      <pubDate>Tue, 11 Feb 2025 21:19:27 +0000</pubDate>
      <link>https://dev.to/dev-to-rater-org/ive-made-tool-that-analyzes-your-devto-posts-4nan</link>
      <guid>https://dev.to/dev-to-rater-org/ive-made-tool-that-analyzes-your-devto-posts-4nan</guid>
      <description>&lt;p&gt;Hello &lt;strong&gt;Dev.to&lt;/strong&gt; writers and readers, I'm presenting &lt;code&gt;Dev.to Rater&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Tool that I built using &lt;strong&gt;React.js&lt;/strong&gt; and &lt;strong&gt;Typescript&lt;/strong&gt;. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Live &lt;a href="https://dev-to-rater.xyz" rel="noopener noreferrer"&gt;Website&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Code on &lt;a href="https://github.com/perisicnikola37/dev-to-rater" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Demo video on &lt;a href="https://www.youtube.com/watch?v=4xgdVo1etFc&amp;amp;ab_channel=Dev-toRater" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fb3zngmumhzxnfs6szixg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fb3zngmumhzxnfs6szixg.png" alt="Dev.to Rater" width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Why did I create &lt;strong&gt;Dev.to Rater&lt;/strong&gt;?
&lt;/h3&gt;

&lt;p&gt;As a content creator on &lt;strong&gt;dev.to&lt;/strong&gt;, one of the biggest challenges I faced was figuring out whether my articles were engaging. &lt;/p&gt;

&lt;p&gt;This inspired me to build &lt;strong&gt;Dev.to Rater&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F6oblvml32kk8ej7183nr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F6oblvml32kk8ej7183nr.png" alt="Dev.to Rater exceeded sentences" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fhxvdltg3igbk4i55j4ha.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fhxvdltg3igbk4i55j4ha.png" alt="Dev.to Rater" width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  🛠 About the project
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Dev.to Rater&lt;/strong&gt; analyzes your post content, such as &lt;strong&gt;headings&lt;/strong&gt;, &lt;strong&gt;paragraphs&lt;/strong&gt;, &lt;strong&gt;images&lt;/strong&gt;, and &lt;strong&gt;links&lt;/strong&gt;. It calculates the blog post score and tells you how to improve it.&lt;/p&gt;

&lt;p&gt;This tool makes your posts more &lt;u&gt;impactful&lt;/u&gt; and &lt;u&gt;engaging&lt;/u&gt;.&lt;/p&gt;

&lt;p&gt;All you have to do is put your &lt;strong&gt;dev.to&lt;/strong&gt; blog post URL in the input field and click "&lt;em&gt;Analyze&lt;/em&gt;". That's it! &lt;/p&gt;




&lt;h3&gt;
  
  
  How Dev.to Rater analyze posts?
&lt;/h3&gt;

&lt;p&gt;For now, we are measuring the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;heading length&lt;/li&gt;
&lt;li&gt;sentence length&lt;/li&gt;
&lt;li&gt;total characters&lt;/li&gt;
&lt;li&gt;reading time&lt;/li&gt;
&lt;li&gt;links frequency&lt;/li&gt;
&lt;li&gt;emoji frequency&lt;/li&gt;
&lt;li&gt;repeating words&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the future, we plan to add more. &lt;/p&gt;




&lt;h3&gt;
  
  
  📖 Documentation?
&lt;/h3&gt;

&lt;p&gt;For official documentation click &lt;a href="https://docs.dev-to-rater.xyz" rel="noopener noreferrer"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;In our documentation you can find the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Core logics&lt;/strong&gt; explained and linked to code in the repository&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Version support&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FAQ&lt;/strong&gt;
Note: If you want to contribute to it, feel free to do it :)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  What about versions?
&lt;/h3&gt;

&lt;p&gt;For version support click &lt;a href="https://docs.dev-to-rater.xyz/versions/v2/global/versions" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;br&gt;
Currently, the latest version is &lt;code&gt;v2&lt;/code&gt;. &lt;/p&gt;




&lt;h3&gt;
  
  
  Reaction stats? Now available.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fab978uejxom5awrzyp95.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fab978uejxom5awrzyp95.png" alt="Dev.to Rater - Analyze my blog posts" width="759" height="197"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  🤝 Contributing
&lt;/h3&gt;

&lt;p&gt;If you’re passionate about contributing to the open-source projects, feel free to contribute. We are open for contributors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Guess what?
&lt;/h2&gt;

&lt;p&gt;This blog post was scanned using our tool 🎯&lt;/p&gt;

&lt;p&gt;It is &lt;strong&gt;9.80&lt;/strong&gt;. It needs your reactions to be 10 out of 10. 💖&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fzdwswhyayjl0in7k85e5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fzdwswhyayjl0in7k85e5.png" alt="Dev.to Rater" width="800" height="552"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📢 Will you use this tool?
&lt;/h2&gt;

&lt;p&gt;Please, tell us in the comments down below! 💬&lt;/p&gt;

&lt;p&gt;Feel free to share your blog posts and their rating! &lt;/p&gt;

&lt;p&gt;Don’t forget to &lt;a href="https://github.com/perisicnikola37/dev-to-rater" rel="noopener noreferrer"&gt;leave a star&lt;/a&gt; for support ⭐&lt;/p&gt;

&lt;p&gt;P.S. We plan to support Medium also in the future 😀&lt;/p&gt;




&lt;p&gt;Thanks for reading,&lt;br&gt;
&lt;strong&gt;Dev.to&lt;/strong&gt;™&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.producthunt.com/posts/dev-to-rater-2?embed=true&amp;amp;utm_source=badge-featured&amp;amp;utm_medium=badge&amp;amp;utm_souce=badge-dev-to-rater-2" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.producthunt.com%2Fwidgets%2Fembed-image%2Fv1%2Ffeatured.svg%3Fpost_id%3D873037%26theme%3Dlight%26t%3D1739440944617" alt="Dev.to Rater - Analyze blog posts to uncover trends and metrics | Product Hunt" width="250" height="54"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>react</category>
      <category>programming</category>
    </item>
    <item>
      <title>The biggest frontend mistakes you can do</title>
      <dc:creator>Nikola Perišić</dc:creator>
      <pubDate>Sat, 01 Feb 2025 11:48:27 +0000</pubDate>
      <link>https://dev.to/dev-to-rater-org/the-biggest-frontend-mistakes-you-can-do-bng</link>
      <guid>https://dev.to/dev-to-rater-org/the-biggest-frontend-mistakes-you-can-do-bng</guid>
      <description>&lt;p&gt;Hello, fellow devs!&lt;/p&gt;

&lt;p&gt;Frontend development can be very interesting because we can immediately see the results of our work. However, during this process, we often forget very important concepts and we make mistakes.&lt;/p&gt;

&lt;p&gt;In this article, I'll highlight some of these mistakes and show you how to avoid them.&lt;/p&gt;




&lt;h3&gt;
  
  
  1. Ignoring Meta tags and Open Graph
&lt;/h3&gt;

&lt;p&gt;These tags are essential for controlling how your content appears when shared on social media. Without them, your links &lt;u&gt;may not display &lt;/u&gt;as intended, which can hurt your engagement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Missing &lt;code&gt;viewport&lt;/code&gt; meta tag&lt;/strong&gt; - This tag ensures that your site is responsive and adapts to different screen sizes&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Missing &lt;code&gt;description&lt;/code&gt; and &lt;code&gt;keywords&lt;/code&gt; meta tags&lt;/strong&gt; - These tags lay a role in SEO and help search engines understand what your page is about&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good example:&lt;/strong&gt;&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;!-- Basic Open Graph tags --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;"og:title"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"Your Page Title Here"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;"og:description"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"A brief description of your content."&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;"og:image"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"URL to an image that represents your content"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;"og:url"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"URL of the page"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;"og:type"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"website"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- Optional: Additional Open Graph tags for more control --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;"og:site_name"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"Your Website Name"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;"og:locale"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"en_US"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- Twitter Card tags (for better Twitter integration) --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"twitter:card"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"summary_large_image"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"twitter:title"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"Your Page Title Here"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"twitter:description"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"A brief description of your content."&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"twitter:image"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"URL to an image for Twitter"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  2. Ignoring performance optimization
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Not optimizing images&lt;/strong&gt; - It's important to compress your images and use formats like &lt;code&gt;WebP&lt;/code&gt; or &lt;code&gt;JPEG&lt;/code&gt; instead of &lt;code&gt;PNG&lt;/code&gt;s for better performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not minifying CSS and JavaScript files&lt;/strong&gt; - There's nothing worse than seeing a CSS file with over 1,000 lines. Please, minify these. Bonus tip: Use &lt;code&gt;Sass&lt;/code&gt; for more efficient styles. For minifying, you can use this free &lt;a href="https://www.toptal.com/developers/cssminifier" rel="noopener noreferrer"&gt;tool&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Loading too many unnecessary libraries&lt;/strong&gt; - I often see people loading too much libraries when many functionalities can be custom build. Remember, when you import library you are not importing only it's code, you are importing a &lt;u&gt;greater responsibility&lt;/u&gt; because every library you import has the possibility that it will go &lt;u&gt;maintenance&lt;/u&gt; at some point. You also run the risk of a bug and that your UI will stop working and sure you don't want that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not using lazy loading for images and components&lt;/strong&gt; - Not using mentioned will block UI, and your website can seem slow. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not using lazy imports&lt;/strong&gt; - Use lazy imports for better optimizations. This will make separate chunks for your imports and optimize build times by storing chunks in cache. This &lt;a href="https://dev.to/perisicnikola37/you-are-using-react-lazy-imports-the-wrong-way-odn"&gt;blog post&lt;/a&gt; is a good example of 75% optimization.&lt;/p&gt;

&lt;h4&gt;
  
  
  Additional tips:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Use image optimization tools like &lt;code&gt;TinyPNG&lt;/code&gt; or &lt;code&gt;GitHub Image Bot&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Minify assets using build tools like &lt;code&gt;Webpack&lt;/code&gt; or &lt;code&gt;Parcel&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implement lazy loading with the &lt;code&gt;loading="lazy"&lt;/code&gt; attribute&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  3. Poor &lt;strong&gt;HTML Structure and Semantics&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Unfortunately, many frontend developer ignore proper HTML semantics, leading to accessibility and SEO issues. Common mistakes include:&lt;/p&gt;

&lt;p&gt;Using &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;s for everything instead of tags like &lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Missing &lt;code&gt;alt&lt;/code&gt; and &lt;code&gt;title&lt;/code&gt; attributes on images&lt;/p&gt;

&lt;p&gt;Using heading tags (&lt;code&gt;&amp;lt;h1&amp;gt; - &amp;lt;h6&amp;gt;&lt;/code&gt;) inconsistently&lt;/p&gt;

&lt;h4&gt;
  
  
  Additional tips:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Always provide meaningful alt text for images&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Structure headings properly to maintain a logical HTML structure&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use &lt;code&gt;W3C Markup Validation Service&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  4. Using fixed units and bad responsive design
&lt;/h3&gt;

&lt;p&gt;Hardcoding pixel values for height, width and etc.&lt;/p&gt;

&lt;p&gt;Not testing on different screen sizes and devices&lt;/p&gt;

&lt;h4&gt;
  
  
  Additional tips:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Use relative units like &lt;code&gt;en&lt;/code&gt;, &lt;code&gt;rem&lt;/code&gt; and &lt;code&gt;%&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use responsive design techniques like &lt;code&gt;Flexbox&lt;/code&gt; and &lt;code&gt;CSS Grid&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use &lt;a href="https://chromewebstore.google.com/detail/mobile-simulator-responsi/ckejmhbmlajgoklhgbapkiccekfoccmk" rel="noopener noreferrer"&gt;Mobile simulator extension&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  5. Relying too much on &lt;code&gt;!important&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Using &lt;code&gt;important&lt;/code&gt; too much can lead to unnecessary conflicts. Use this carefully and not too much.&lt;/p&gt;




&lt;h3&gt;
  
  
  6. Not handling cross-browser compatibility
&lt;/h3&gt;

&lt;p&gt;Using CSS and JavaScript features that aren’t supported in all browsers&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For example:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.element&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;backdrop-filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;blur&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c"&gt;/* Not supported in older versions of Edge */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@supports&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;backdrop-filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;blur&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nc"&gt;.element&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="py"&gt;backdrop-filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;blur&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.element&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c"&gt;/* Fallback */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  7. Not using &lt;a href="https://www.w3schools.com/html/html_entities.asp" rel="noopener noreferrer"&gt;HTML Entities&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Please don't copy and paste symbols like this: ™, ℠, ® and ©.&lt;/p&gt;

&lt;p&gt;Instead use these:&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="ni"&gt;&amp;amp;nbsp;&lt;/span&gt; -&amp;gt; for blank space
&lt;span class="ni"&gt;&amp;amp;reg;&lt;/span&gt; -&amp;gt; for trademark
&lt;span class="ni"&gt;&amp;amp;copy;&lt;/span&gt; -&amp;gt; for copyright
and etc.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  8. Not using current year function
&lt;/h3&gt;

&lt;p&gt;Instead of this:&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;p&amp;gt;&lt;/span&gt;2024 ©&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use this:&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;p&amp;gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"year"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/span&amp;gt;&lt;/span&gt;copy;&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;year&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;getFullYear&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By using JS, you ensure the year will always be the latest one.&lt;/p&gt;




&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Keep these tips in mind as you continue your development journey, and remember: testing, optimizing, and following best practices will always pay off in the long run!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If I forgot something or you liked the article, please leave a comment down below&lt;/strong&gt; 💬&lt;/p&gt;




&lt;h3&gt;
  
  
  Check yourself! Checklist ✅
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;viewport&lt;/code&gt; meta tag for responsive design&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;description&lt;/code&gt; and &lt;code&gt;keywords&lt;/code&gt; meta tags for SEO&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Open Graph&lt;/code&gt; meta tags&lt;/li&gt;
&lt;li&gt;&lt;code&gt;og:title&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;og:description&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;og:image&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;og:url&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;og:type&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;twitter:card&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;twitter:title&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;twitter:description&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;twitter:image&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;compressed images&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;WebP&lt;/code&gt; and/or &lt;code&gt;JPEG&lt;/code&gt; images&lt;/li&gt;
&lt;li&gt;lazy loading&lt;/li&gt;
&lt;li&gt;lazy imports&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;alt&lt;/code&gt; and &lt;code&gt;title&lt;/code&gt; attributes on images&lt;/li&gt;
&lt;li&gt;HTML semantics and structure&lt;/li&gt;
&lt;li&gt;&lt;code&gt;W3C Markup Validation&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;using relative units like &lt;code&gt;em&lt;/code&gt;, &lt;code&gt;rem&lt;/code&gt; and &lt;code&gt;%&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;avoiding using &lt;code&gt;!import&lt;/code&gt; too much&lt;/li&gt;
&lt;li&gt;ussing &lt;code&gt;@supports&lt;/code&gt; for unsupported features&lt;/li&gt;
&lt;li&gt;minified assets&lt;/li&gt;
&lt;li&gt;not loaded too much libraries&lt;/li&gt;
&lt;li&gt;using HTML entites for things like © ©&lt;/li&gt;
&lt;li&gt;using function for current year&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Support us on Product Hunt:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.producthunt.com/posts/dev-to-rater-2?embed=true&amp;amp;utm_source=badge-featured&amp;amp;utm_medium=badge&amp;amp;utm_souce=badge-dev-to-rater-2" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.producthunt.com%2Fwidgets%2Fembed-image%2Fv1%2Ffeatured.svg%3Fpost_id%3D873037%26theme%3Dlight%26t%3D1739525139145" alt="Dev.to Rater - Analyze blog posts to uncover trends and metrics | Product Hunt" width="250" height="54"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev-to-rater.xyz/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.postimg.cc%2FbJvBsD5Y%2Fcroppedz.png" width="800" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>css</category>
    </item>
  </channel>
</rss>
