<?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: Samir Hashimov</title>
    <description>The latest articles on DEV Community by Samir Hashimov (@samirrhashimov).</description>
    <link>https://dev.to/samirrhashimov</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3612789%2F080d3808-80d3-4fa7-b2e3-407116872fd4.jpg</url>
      <title>DEV Community: Samir Hashimov</title>
      <link>https://dev.to/samirrhashimov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/samirrhashimov"/>
    <language>en</language>
    <item>
      <title>Why HTML/CSS Is Not Enough: Steps to Transition from HTML to React</title>
      <dc:creator>Samir Hashimov</dc:creator>
      <pubDate>Fri, 25 Sep 2026 15:53:26 +0000</pubDate>
      <link>https://dev.to/samirrhashimov/why-htmlcss-is-not-enough-steps-to-transition-from-html-to-react-2b0l</link>
      <guid>https://dev.to/samirrhashimov/why-htmlcss-is-not-enough-steps-to-transition-from-html-to-react-2b0l</guid>
      <description>&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffrcgzwuvq54zb56cplg2.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffrcgzwuvq54zb56cplg2.png" alt="Why HTML/CSS Is Not Enough: Steps to Transition from HTML to React" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you started your journey as a web developer, chances are the very first concepts you heard about were HTML and CSS. Perhaps you have already mastered these two skills and started building websites. If you have, I have good news for you: yes, these two skills are genuinely enough to build a website. But they are not sufficient.&lt;/p&gt;

&lt;p&gt;It is possible to build any site using HTML and CSS, and the professional frameworks and libraries we will look at shortly are built on top of HTML and CSS foundations. Internet browsers can also only render HTML and CSS.&lt;/p&gt;

&lt;p&gt;So, if you can build websites with HTML and CSS, why should we use frameworks and libraries like React, Angular, Astro, etc.?&lt;/p&gt;

&lt;p&gt;In this article, we will look at the differences and similarities between HTML/CSS and the React library, and discuss the learning path for beginners.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why HTML and CSS Are Not Enough?
&lt;/h3&gt;

&lt;p&gt;I would recommend HTML and CSS to anyone entering Web Development. Because learning HTML/CSS and grasping their logic is much easier compared to frameworks. Building light and simple applications, like a basic To-Do app, using HTML/CSS during the learning phase is an extremely correct step.&lt;/p&gt;

&lt;p&gt;However, for medium and large-scale projects, HTML/CSS starts to fall short. Here are the main reasons why:&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Inability to Build Dynamic Websites:&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;While HTML/CSS makes it easy to create short presentation sites, landing pages, and web apps with simple structures, they fall short on websites where content is dynamically managed and changed using technologies like databases and APIs. On such websites, when data is entered or modified by a server or user, HTML/CSS requires the entire website to reload according to its working principle. If data updates every second, the website is forced to reload repeatedly. This is unacceptable from a user experience perspective.&lt;/p&gt;

&lt;p&gt;Modern libraries like React run on JavaScript and work with a principle called the Virtual DOM. The Virtual DOM copies and stores all elements of the site (the DOM). If a change occurs in a part of the site, React compares the Real DOM with the Virtual DOM, and if they differ, only the modified part is updated in the Virtual DOM. Thanks to this, instead of replacing the entire site, only the changed element is updated. This allows dynamic processes to execute seamlessly without the user even noticing.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Inability to Connect with Servers:
&lt;/h4&gt;

&lt;p&gt;Websites written with HTML/CSS lack the ability to use databases and APIs. Not using a database means not being able to store user data, which leads to the site being unable to be truly interactive.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Lack of a Component System:
&lt;/h4&gt;

&lt;p&gt;When building a footer, navbar, or button in these types of websites, you have to copy and paste the code to reuse these elements in another section of the site. This leads to unnecessary code duplication, and when a piece of data changes, you have to update it in every single section manually. This causes the code to be unperformant and makes management increasingly difficult as the site grows.&lt;/p&gt;

&lt;p&gt;To solve this issue in React, a "Component" system is used. Components are created in a single file and exported. When needed on another page, the component is imported and used. If a fix is needed, it is made solely in the component's file, affecting all pages simultaneously.&lt;/p&gt;

&lt;p&gt;It is also possible to dynamically change elements within a component. For this, props are used in React.&lt;/p&gt;

&lt;p&gt;Imagine creating a button component. You can reuse the exact same button component across various pages with different text labels (Login, Register, Continue, etc.) while keeping the button style consistent.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Navbar component&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Navbar&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Ana Səhifə&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Bloq&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Sosial Media&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Əlaqə&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Navbar&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Navbar component usage&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Navbar&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./Navbar&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Navbar&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Lack of a Routing System:
&lt;/h4&gt;

&lt;p&gt;Classic HTML sites consist of pages like &lt;code&gt;index.html&lt;/code&gt;, &lt;code&gt;about.html&lt;/code&gt;, etc. When a user wants to navigate from one page to another, a new page loads from scratch, causing a waste of time. Additionally, the URLs on these websites look cluttered and unprofessional.&lt;/p&gt;

&lt;p&gt;SPA (Single Page Application) technologies like React use routing logic. If you need to navigate to another view, those pages are assigned routes like &lt;code&gt;/about&lt;/code&gt; or &lt;code&gt;/dashboard&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;React does not have a built-in routing system. Therefore, the &lt;code&gt;react-router-dom&lt;/code&gt; library is typically used. Through this library, a specific URL address (route) is assigned to each component. When a user navigates to that address, the browser does not reload the page; instead, only the matching component is rendered on the screen.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;BrowserRouter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Routes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Route&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react-router-dom&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Home&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./Home&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;About&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./About&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;BrowserRouter&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Routes&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Route&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/"&lt;/span&gt; &lt;span class="na"&gt;element&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Home&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Route&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/about"&lt;/span&gt; &lt;span class="na"&gt;element&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;About&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Routes&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;BrowserRouter&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How to Transition to React?
&lt;/h3&gt;

&lt;p&gt;Contrary to what many think, React is not a new programming language or a completely different technology. React is a library built on top of JavaScript. Therefore, knowing JavaScript is enough to transition to React.&lt;/p&gt;

&lt;p&gt;It is also worth noting that React is a library, not a framework. There are many reasons why React is a library rather than a framework, with one of the main ones being that it lacks its own built-in routing system.&lt;/p&gt;

&lt;p&gt;The code you write in React is in &lt;code&gt;.jsx&lt;/code&gt; (for JavaScript) or &lt;code&gt;.tsx&lt;/code&gt; (for TypeScript) format. When executed, this code is compiled down to JavaScript and then rendered in the browser.&lt;/p&gt;

&lt;p&gt;Setting up React is very simple. Here are the &lt;strong&gt;steps to transition to React&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Make sure &lt;strong&gt;Node.js&lt;/strong&gt; is installed on your computer. If it is not installed, download it from the official Node.js website: &lt;a href="https://nodejs.org/en/download" rel="noopener noreferrer"&gt;https://nodejs.org/en/download&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a folder in &lt;strong&gt;Visual Studio Code&lt;/strong&gt; or your &lt;strong&gt;File Manager&lt;/strong&gt; and open the terminal inside it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Type &lt;code&gt;npm create vite@latest .&lt;/code&gt; in the terminal. Enter your project name, and use the arrow keys to select React and JavaScript/TypeScript.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install the required packages by typing &lt;code&gt;npm i&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Activate the website by typing &lt;code&gt;npm run dev&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As you can see, setting up React is very simple, and you will be able to transition smoothly from HTML/CSS to React. The only things you need to pay attention to here are getting used to the new routing and component systems, and adapting to the new syntax for certain expressions, such as &lt;code&gt;class&lt;/code&gt; -&amp;gt; &lt;code&gt;className&lt;/code&gt; and &lt;code&gt;onclick&lt;/code&gt; -&amp;gt; &lt;code&gt;onClick&lt;/code&gt;.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Syntactic Differences Between HTML/CSS and React
&lt;/h3&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;!-- HTML --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- JSX --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;className=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Reason:&lt;/strong&gt; &lt;code&gt;class&lt;/code&gt; is a reserved keyword in JavaScript/React, so it must be written as &lt;code&gt;className&lt;/code&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;!-- HTML --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;onclick=&lt;/span&gt;&lt;span class="s"&gt;"handleClick()"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Klik&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- JSX --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;onClick=&lt;/span&gt;&lt;span class="s"&gt;{handleClick}&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Klik&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Reason:&lt;/strong&gt; Event names are written in camelCase: &lt;code&gt;onclick&lt;/code&gt; -&amp;gt; &lt;code&gt;onClick&lt;/code&gt;, &lt;code&gt;onchange&lt;/code&gt; -&amp;gt; &lt;code&gt;onChange&lt;/code&gt;, &lt;code&gt;onmouseover&lt;/code&gt; -&amp;gt; &lt;code&gt;onMouseOver&lt;/code&gt;.&lt;/p&gt;






&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;onClick={handleClick}   // correct
onClick={handleClick()} // incorrect
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Reason:&lt;/strong&gt; &lt;code&gt;handleClick()&lt;/code&gt; invokes the function immediately during render.&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;!-- HTML --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Ad&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- JSX --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;htmlFor=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Ad&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Reason:&lt;/strong&gt; &lt;code&gt;for&lt;/code&gt; is a reserved keyword in JavaScript, so it must be written as &lt;code&gt;htmlFor&lt;/code&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;!-- HTML --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"color: red; font-size: 16px;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- JSX --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;{{&lt;/span&gt; &lt;span class="na"&gt;color:&lt;/span&gt; &lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="na"&gt;red&lt;/span&gt;&lt;span class="err"&gt;",&lt;/span&gt; &lt;span class="na"&gt;fontSize:&lt;/span&gt; &lt;span class="err"&gt;"16&lt;/span&gt;&lt;span class="na"&gt;px&lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt; &lt;span class="err"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Reason:&lt;/strong&gt; The first &lt;code&gt;{}&lt;/code&gt; denotes a JavaScript expression, and the second &lt;code&gt;{}&lt;/code&gt; denotes a JavaScript object. Property names also use camelCase: &lt;code&gt;font-size&lt;/code&gt; -&amp;gt; &lt;code&gt;fontSize&lt;/code&gt;, &lt;code&gt;background-color&lt;/code&gt; -&amp;gt; &lt;code&gt;backgroundColor&lt;/code&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;!-- HTML --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"foto.jpg"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- JSX --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"foto.jpg"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Reason:&lt;/strong&gt; In HTML, some tags do not require closing, but in JSX, every tag must be closed either with &lt;code&gt;&amp;lt;/tag&amp;gt;&lt;/code&gt; or &lt;code&gt;/&amp;gt;&lt;/code&gt;.&lt;/p&gt;

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

&lt;p&gt;HTML/CSS is the foundation of web development, and every developer must learn it. However, as projects grow and demand more dynamism and interactivity, libraries and frameworks like React make the job significantly easier. Once you start using React, you will notice that processes that used to take up a lot of time speed up drastically. This will allow you to focus on different problems and develop yourself further.&lt;/p&gt;

&lt;p&gt;Thank you for your attention.&lt;/p&gt;




&lt;h4&gt;
  
  
  Join us so you don't miss new articles
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://samirrhashimov.substack.com/subscribe?" 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%2Fimg.shields.io%2Fbadge%2FSubscribe-now-blue%3Fstyle%3Dfor-the-badge" alt="Subscribe now" width="150" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Why Are There So Many Specialties? What Are the Differences Between IT Degrees?</title>
      <dc:creator>Samir Hashimov</dc:creator>
      <pubDate>Sun, 20 Sep 2026 13:16:34 +0000</pubDate>
      <link>https://dev.to/samirrhashimov/why-are-there-so-many-specialties-what-are-the-differences-between-it-degrees-1106</link>
      <guid>https://dev.to/samirrhashimov/why-are-there-so-many-specialties-what-are-the-differences-between-it-degrees-1106</guid>
      <description>&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxvwk48hc46b0mu0erbcp.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxvwk48hc46b0mu0erbcp.png" alt="IT Degrees" width="800" height="488"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I realized I had an interest in coding and wanted to pursue this field, I took a look at the degree programs offered by universities. The landscape I saw surprised me.&lt;/p&gt;

&lt;p&gt;Programming wasn't just a single degree. There were fields like &lt;strong&gt;Computer Science, Computer Engineering, Information Technology, and Information Security&lt;/strong&gt;—degrees that looked identical at first glance but which I later learned had significant differences.&lt;/p&gt;

&lt;p&gt;Terms often used in casual conversation, such as "IT guy" or "Programmer," didn't really cover these distinctions.&lt;/p&gt;

&lt;p&gt;Naturally, I conducted research into these majors while making my choice, clarifying their similarities and differences. Now, I am continuing my education in my chosen field.&lt;/p&gt;

&lt;p&gt;I hope this article will be useful for students choosing a degree, those looking to switch fields, or young people just starting out in IT.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is the difference between these majors?
&lt;/h3&gt;

&lt;p&gt;Although they may look like copies of each other at first glance, these fields are actually quite different. They primarily differ based on what part of the computer they focus on.&lt;/p&gt;

&lt;h4&gt;
  
  
  Computer Science
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Computer Science (CS)&lt;/strong&gt; primarily focuses on software, algorithms, and the theoretical foundations of computer science.&lt;/p&gt;

&lt;p&gt;It covers knowledge in algorithms, programming languages, databases, data structures, artificial intelligence, and more.&lt;/p&gt;

&lt;p&gt;Professionals graduating from this field carry out tasks such as writing, managing, and developing the software side of computers.&lt;/p&gt;

&lt;p&gt;For example, &lt;strong&gt;writing application, system, and instrumental software&lt;/strong&gt;, as well as the &lt;strong&gt;creation of websites and mobile applications&lt;/strong&gt;, falls under this field.&lt;/p&gt;

&lt;p&gt;Graduates of this field typically pursue careers such as:&lt;br&gt;
&lt;strong&gt;Software Engineer, Web Developer, Mobile Developer, Backend Developer, AI/ML Engineer, Data Engineer,&lt;/strong&gt; etc.&lt;/p&gt;

&lt;h4&gt;
  
  
  Computer Engineering
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Computer Engineering (CE)&lt;/strong&gt; is closer to the hardware side of the computer.&lt;/p&gt;

&lt;p&gt;It covers knowledge in electronics, embedded systems, sensors, microchips, computer architecture, and more.&lt;/p&gt;

&lt;p&gt;For example, &lt;strong&gt;the design of microchips and embedded systems, building systems where hardware and software work together, and the development of robotics and automation systems&lt;/strong&gt; fall under this field.&lt;/p&gt;

&lt;p&gt;Graduates of this field typically pursue careers such as:&lt;br&gt;
&lt;strong&gt;Internet of Things (IoT), Embedded Systems, Robotics, Automation, Hardware Engineer,&lt;/strong&gt; etc.&lt;/p&gt;

&lt;h4&gt;
  
  
  Information Technology
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Information Technology (IT)&lt;/strong&gt; involves building, managing, and utilizing network and server technologies.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The term "IT guy," widely used in casual conversation, originated from the initials of this term (I-T).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It covers knowledge in computer networks, system administration, cloud systems, servers, technical support, and more.&lt;/p&gt;

&lt;p&gt;For example, &lt;strong&gt;ensuring a company's server network remains operational, server repair and configuration, and database management&lt;/strong&gt; fall under this field.&lt;/p&gt;

&lt;p&gt;Graduates of this field typically pursue careers such as:&lt;br&gt;
&lt;strong&gt;System Administrator, Network Engineer, IT HelpDesk Engineer, DevOps,&lt;/strong&gt; etc.&lt;/p&gt;

&lt;h4&gt;
  
  
  Information Security
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Information Security, also known as Cybersecurity&lt;/strong&gt;, is the field of protecting systems, programs, and data from external attacks.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The term "Hacker," which is widely used, is often applied to specialists working in this field. While not all hackers are malicious, the most well-known type are those who inflict damage on systems.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It covers knowledge in network security, cryptography, ethical hacking, risk analysis, and more.&lt;/p&gt;

&lt;p&gt;For example, &lt;strong&gt;preventing attacks on a system, protecting personal user data, and testing security systems&lt;/strong&gt; fall under this field.&lt;/p&gt;

&lt;p&gt;Graduates of this field typically pursue careers such as:&lt;br&gt;
&lt;strong&gt;Security Analyst, Penetration Tester, SOC Analyst, Security Engineer,&lt;/strong&gt; etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does a degree actually teach us?
&lt;/h3&gt;

&lt;p&gt;One of the most common misconceptions in the IT field is that you will be "job-ready" the moment you graduate. The reality is that the material taught in academic programs is not always the specific knowledge that employers require you to have.&lt;/p&gt;

&lt;p&gt;Imagine you are applying for a Web Developer vacancy. The company will want you to know React.js, Tailwind, and TypeScript. However, none of these are taught in many university or college curriculums. You might then think, as many do: "Is a formal degree useless?"&lt;/p&gt;

&lt;p&gt;Of course not. The purpose of a formal degree is to teach you the fundamentals, theoretical knowledge, and a mindset for problem-solving. Regardless of the programming language, the same core principles, theoretical knowledge, and thought processes are always used. Once you know how to build an algorithm, it makes no difference which programming language you use to implement it.&lt;/p&gt;

&lt;p&gt;A degree teaches you operating systems, programming basics, algorithms, and data structures. You must take those foundations and learn the specific technologies relevant to the IT branch you choose to pursue.&lt;/p&gt;

&lt;p&gt;While a diploma is an important indicator in the hiring process, practical projects, a portfolio, internships, and the ability to solve real-world problems play a crucial role. A diploma alone does not give you an advantage over other candidates; the main factor is how much effort you have put into your own development.&lt;/p&gt;

&lt;p&gt;Therefore, it is more correct to view university not as "a place that will give me a ready-made job," but as "an environment that will give me a strong foundation." You must complete the rest by working on projects, internships, self-study, and tackling real-world problems.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which major should I choose?
&lt;/h3&gt;

&lt;p&gt;By now, we have seen the main differences between these fields. After all this, which one should you choose?&lt;/p&gt;

&lt;p&gt;There is no single answer to "What is the best major?" The better question is: &lt;strong&gt;"Which major is more suitable for me?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Start with your interests:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  If programming, algorithms, and software are more interesting to you, you can choose Computer Science.&lt;/li&gt;
&lt;li&gt;  If hardware, electronics, and the internal structure of computers interest you, you can look into Computer Engineering.&lt;/li&gt;
&lt;li&gt;  If you enjoy working with networks, servers, and cloud systems, IT might be more suitable.&lt;/li&gt;
&lt;li&gt;  If you have an interest in security, protecting systems, and analyzing attacks, it makes more sense to choose the Cybersecurity track.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Another important point is not to limit yourself to just one specialty. In the IT field, paths often intersect. For example, someone studying Computer Science can later move into cloud or cybersecurity. Or someone studying IT can transition into software development. Therefore, while your first choice is important, it is not your final one.&lt;/p&gt;

&lt;p&gt;Ultimately, when choosing a major, try to answer three questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What interests me?&lt;/li&gt;
&lt;li&gt;What can I be good at?&lt;/li&gt;
&lt;li&gt;What problems do I want to solve with this knowledge in the future?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once you answer these questions, it will be easier to head in your desired direction.&lt;/p&gt;

&lt;p&gt;In conclusion, there is no "best IT major." There is only the major that is most suitable for you. The main point is not just to choose a degree, but to build your own path upon the foundation that the degree provides.&lt;/p&gt;

&lt;h3&gt;
  
  
  Footer
&lt;/h3&gt;

&lt;p&gt;The purpose of this article was to simply explain the main differences between the four most commonly confused IT degrees. If you are facing a degree choice, don't look just at the name of the specialty—look at what that program will teach you and what future paths it opens up.&lt;/p&gt;

&lt;p&gt;Thank you for your attention.&lt;/p&gt;




&lt;h4&gt;
  
  
  Join our community to ensure you don't miss new posts
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://samirrhashimov.substack.com/subscribe?" rel="noopener noreferrer"&gt;Subscribe now&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>A New Fraud Trend in Azerbaijan: "Free" Training</title>
      <dc:creator>Samir Hashimov</dc:creator>
      <pubDate>Sun, 20 Sep 2026 13:15:21 +0000</pubDate>
      <link>https://dev.to/samirrhashimov/a-new-fraud-trend-in-azerbaijan-free-training-6gl</link>
      <guid>https://dev.to/samirrhashimov/a-new-fraud-trend-in-azerbaijan-free-training-6gl</guid>
      <description>&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkk66feysa43fhnf7blq4.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkk66feysa43fhnf7blq4.png" alt="Image" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lately, I’ve been encountering scammers who promise "free lessons," "career advancement," "business partnerships," and more. These ads frequently pop up on Instagram, and I often see many students commenting with a simple "+" or "I’m interested" under these posts. Given that courses in many fields typically cost upwards of 200 AZN, these offers are very tempting. Once people believe these offers and make contact, they fall into a trap we call &lt;strong&gt;"Social Engineering."&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Social Engineering?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Social Engineering&lt;/strong&gt; might sound like a sophisticated technical term, but it is actually a common attack method used by scammers.&lt;/p&gt;

&lt;p&gt;This technique is based on manipulating the victim through psychological methods rather than technical ones (hacking).&lt;/p&gt;

&lt;p&gt;A widely spread form of social engineering today is the &lt;strong&gt;Phishing&lt;/strong&gt; attack.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is a Phishing attack?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Phishing attacks&lt;/strong&gt; involve sending the victim a specially prepared URL (link) and engaging in communication to trick them into clicking it.&lt;/p&gt;

&lt;p&gt;Scammers usually start by creating artificial panic. For example, they might claim your account has been hacked and that you must click a link to recover it. The moment you click, you are redirected to a fake site built by the scammer. These sites are often highly accurate copies of real websites.&lt;/p&gt;

&lt;p&gt;As soon as you mistake it for the original site and enter your personal credentials, that information falls directly into the scammer’s hands.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are "Red Flags"?
&lt;/h3&gt;

&lt;p&gt;In social engineering, scammers often exhibit certain suspicious behaviors while trying to convince their victims. The best way to protect yourself is to analyze and evaluate these suspicious signs.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;Red Flag&lt;/strong&gt; is a warning sign that something is dangerous, unreliable, or fraudulent. If the information in a message is inconsistent, if they avoid providing specific details, if they demand payment for no reason, or if they create an artificial sense of urgency ("limited spots," "if you don't buy today, it won't be available tomorrow, etc."), these are all Red Flags.&lt;/p&gt;

&lt;p&gt;Not every Red Flag guarantees the person is a 100% scammer, but it definitely requires you to be cautious. Some Red Flags can be false alarms. For example, avoiding specific information isn't always a sign of a scam; it could be company policy. &lt;/p&gt;

&lt;p&gt;In summary, Red Flags don't guarantee you are being scammed, but they are a signal to be extra vigilant.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Experience: The Social Engineering Trap
&lt;/h3&gt;

&lt;p&gt;While browsing a well-known classifieds site, I saw a listing for a "free training" course. It claimed to teach 4 different financial fields in just 8 lessons, and it was advertised as completely free.&lt;/p&gt;

&lt;p&gt;I contacted the course via WhatsApp to register. They provided the syllabus, the schedule (how many days and hours per week), and the start date. Finally, they claimed that the "free training" required a certificate and that I had to pay for it. They sent a very hollow and nonsensical response about why this was mandatory, claiming "it is a project and the company name must be noted."&lt;/p&gt;

&lt;p&gt;Another Red Flag was the methodology of the syllabus. The syllabus was clearly generated entirely by AI, and the topics they claimed to cover were too broad and disconnected to be taught in just 8 lessons.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpblwutpzwzb6tof6m12i.jpeg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpblwutpzwzb6tof6m12i.jpeg" alt="Image" width="800" height="1434"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The syllabus is thrown together, and they avoid answering direct questions.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In reality, one could conclude this was a social engineering attempt based on the first two Red Flags alone. I continued the conversation to see what the next steps would be.&lt;/p&gt;

&lt;p&gt;I pretended to agree, expressed interest in taking the course, and asked for the payment method. As I expected, instead of a formal payment system, they sent a card number to perform an informal card-to-card transfer.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo6a8j0dma8gktsmwz9t0.jpeg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo6a8j0dma8gktsmwz9t0.jpeg" alt="Image" width="800" height="1156"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;They are demanding a card-to-card payment and that I send a receipt.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Of course, I didn't pay; I was just measuring their reaction. After that last message, the tone of the conversation changed.&lt;/p&gt;

&lt;p&gt;In a normal scenario, free courses should provide certificates without requiring payment. Demanding payment falls under the category of consumer deception, especially since the course was advertised as "free."&lt;/p&gt;

&lt;p&gt;Even if you paid for these types of trainings, you wouldn't receive quality education. These are just money traps or low-quality mini-courses created by AI in a short time.&lt;/p&gt;

&lt;p&gt;Back to the chat: I asked why the syllabus was prepared poorly by AI and why the certificate was paid. The answers I got were just attempts to distract from the subject.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3kzp2zeomu38vwolyuio.jpeg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3kzp2zeomu38vwolyuio.jpeg" alt="Image" width="800" height="1295"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One of the biggest Red Flags was this: They claimed to have been holding classes since 2025 and that 8 groups had finished so far. I asked them to send photos of these classes, and they redirected me to their social media page. Interestingly, all the posts on their social media were AI-generated, and there wasn't a single photo of actual classes.&lt;/p&gt;

&lt;p&gt;When I asked how they could fit so many topics into the two lessons in the AI-generated syllabus, the response was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"We don't guarantee that..."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then, the other party gave up and ended the conversation: "Anyway, if you don't want to join, that's fine, we don't have to prove anything to anyone 🙏 good luck."&lt;/p&gt;

&lt;p&gt;Note: Despite reporting this as fraud to the well-known classifieds site that hosted the ad, the listing was not removed.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Can You Protect Yourself?
&lt;/h3&gt;

&lt;p&gt;While it is impossible to be fully protected from such attacks, you can reduce the risk:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Don't fall for FOMO (Fear of Missing Out):&lt;/strong&gt; If the other party tries to rush you into making a decision with phrases like "Spots are limited" or "Today is the last day," don't let them pressure you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask for Proof:&lt;/strong&gt; If they claim something, ask them to substantiate it. If they dodge the question, it's a Red Flag.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Be careful when paying:&lt;/strong&gt; Legitimate companies never demand card-to-card transfers. Such transactions should always involve an invoice or a legal entity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check official sources:&lt;/strong&gt; Verify the party's information. Check their official website, tax ID (VÖEN), and whether the company name exists and matches their claims.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;As you can see, social engineering attacks can be easily detected with Red Flags. In this specific conversation, we encountered several Red Flags from the start. Once you spot these, you should stop all communication with the party.&lt;/p&gt;

&lt;p&gt;These types of attacks mostly target students, those with no work experience, people urgently looking for a job, and young people. If you are in one of these groups, the likelihood of them exploiting your inexperience is higher.&lt;/p&gt;

&lt;p&gt;I wrote this article to inform you about this topic and to encourage you to be more cautious.&lt;/p&gt;

&lt;h3&gt;
  
  
  Footer
&lt;/h3&gt;

&lt;p&gt;If you liked this article, don't forget to share, like, and share your thoughts to help educate more people.&lt;/p&gt;

&lt;p&gt;Also, if this article is well-received, I will share an article about a much more dangerous model of the social engineering attacks I've encountered.&lt;/p&gt;

&lt;p&gt;Thanks for your time!&lt;/p&gt;





&lt;h4&gt;Join us so you don't miss new posts&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://samirrhashimov.substack.com/subscribe?" rel="noopener noreferrer"&gt;Subscribe now&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Mini "Shell" Gas Station with React: useState and JSON DB</title>
      <dc:creator>Samir Hashimov</dc:creator>
      <pubDate>Sun, 20 Sep 2026 13:12:11 +0000</pubDate>
      <link>https://dev.to/samirrhashimov/mini-shell-gas-station-with-react-usestate-and-json-db-1c7p</link>
      <guid>https://dev.to/samirrhashimov/mini-shell-gas-station-with-react-usestate-and-json-db-1c7p</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff3tjpiot65j08k7cpov3.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff3tjpiot65j08k7cpov3.webp" alt="Component structure" width="800" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Small applications often seem insignificant. However, if these apps solve a real problem, are technically sound, and are built with UX in mind, they can be more valuable than complex systems.&lt;/p&gt;

&lt;p&gt;In this article, I will talk about the logic behind a &lt;strong&gt;mini fuel calculation app&lt;/strong&gt; I built using React, the technical decisions I made, and the problems I encountered. The goal isn't to claim I've created something "never seen before," but to explain &lt;strong&gt;why&lt;/strong&gt; I made these specific choices.&lt;/p&gt;

&lt;h3&gt;
  
  
  Starting the App
&lt;/h3&gt;

&lt;p&gt;First, because fuel prices are dynamic, I decided to store them in a JSON file. This allows for centralized management of the pricing.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"AI-92_gasoline"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;1.15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"AI-95_gasoline"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;1.60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"AI-98_gasoline"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;2.30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"diesel"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;1.10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"LPG"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.45&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"methane_CNG"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"electricity"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.125&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, I set up the component structure. This prevents the codebase from becoming overly complex as it scales. Since it's a small project, I divided it into two main components: &lt;code&gt;Header&lt;/code&gt; and &lt;code&gt;Content&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc1akazhq0a7myvj5rep7.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc1akazhq0a7myvj5rep7.webp" alt="Component structure" width="295" height="510"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Retrieving Data
&lt;/h3&gt;

&lt;p&gt;Typically, when we go to a gas station, we specify the amount of fuel we want, the employee fills it up, and gives us a receipt. I decided to simulate this in my project. The user selects the fuel type from a dropdown menu and enters the amount in an input field. Once the "Calculate" button is clicked, a receipt is generated for the user.&lt;/p&gt;

&lt;p&gt;You can check out the source code in the GitHub repository.&lt;/p&gt;

&lt;h3&gt;
  
  
  Calculating Data
&lt;/h3&gt;

&lt;p&gt;As we know, calculating the fuel cost requires multiplying the &lt;strong&gt;fuel price&lt;/strong&gt; by the &lt;strong&gt;fuel amount&lt;/strong&gt;. Let's create a function for this calculation:&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="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../css/content.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;tarif&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../data/tarif.json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;CalcFuel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;tarif&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;CalcFuel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;LPG&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;


    &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Content&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As we can see, this function takes two dynamic arguments: &lt;code&gt;type&lt;/code&gt; (fuel type) and &lt;code&gt;amount&lt;/code&gt; (fuel volume).&lt;/p&gt;

&lt;p&gt;We can get the &lt;strong&gt;type&lt;/strong&gt; value by linking the user's dropdown selection to our JSON data: &lt;code&gt;tarif[type]&lt;/code&gt;. By placing the selected value into the type parameter, we can navigate the JSON and retrieve the corresponding value.&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;type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fuel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The fuel &lt;strong&gt;amount&lt;/strong&gt; can be retrieved by sending the value entered by the user in the amount input.&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;amount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;parseFloat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To calculate the total amount, we can trigger the following code during the form's submit event:&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;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;CalcFuel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This defines a &lt;code&gt;total&lt;/code&gt; variable and assigns it the result of the &lt;code&gt;CalcFuel()&lt;/code&gt; function.&lt;/p&gt;

&lt;h3&gt;
  
  
  Displaying the Result
&lt;/h3&gt;

&lt;p&gt;Inspired by the physical receipts given at gas stations, I decided to design a UI element that represents a receipt to display the final result.&lt;/p&gt;

&lt;p&gt;After applying the necessary CSS styling, I achieved the following result:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwze3kdy184yua7gkq8fg.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwze3kdy184yua7gkq8fg.webp" alt="Result display" width="800" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The problem I encountered here was that it wasn't immediately possible to show the result from a function directly in the UI.&lt;/p&gt;

&lt;p&gt;To solve this, I used &lt;strong&gt;&lt;code&gt;useState&lt;/code&gt;&lt;/strong&gt;. &lt;code&gt;useState&lt;/code&gt; caught my attention because it allows variables to be used and updated globally within the component's scope. I assigned the variables to &lt;code&gt;useState&lt;/code&gt;, and they were ready to be rendered in the UI.&lt;/p&gt;

&lt;p&gt;With this, the selected fuel type, amount, and total price are calculated dynamically and presented to the UI.&lt;/p&gt;

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

&lt;p&gt;Our mini "Gas Station" site is now fully functional. The user selects the fuel type, enters the amount, and sees the result on the receipt upon clicking the "Calculate" button.&lt;/p&gt;

&lt;p&gt;I hope the logic behind this mini project inspires you and helps you build your own small applications with React.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F48tykewqrf6mft2sk99y.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F48tykewqrf6mft2sk99y.webp" alt="Final UI" width="800" height="510"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for your time! ;)&lt;/p&gt;

&lt;p&gt;Project GitHub Repo: &lt;a href="https://github.com/samirrhashimov/Shell-Gas-Station" rel="noopener noreferrer"&gt;Shell-Gas-Station&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: This site is for educational purposes only and has no affiliation with the Shell company.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
