<?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>Forem: Abhijit Adhikari</title>
    <description>The latest articles on Forem by Abhijit Adhikari (@aabhijit108).</description>
    <link>https://forem.com/aabhijit108</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3698032%2Fd879c98d-ce6f-4157-819c-cdec3f57060f.png</url>
      <title>Forem: Abhijit Adhikari</title>
      <link>https://forem.com/aabhijit108</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/aabhijit108"/>
    <language>en</language>
    <item>
      <title>How I Built a SEO-Optimized FLAMES Calculator using Vanilla JS</title>
      <dc:creator>Abhijit Adhikari</dc:creator>
      <pubDate>Wed, 07 Jan 2026 10:19:19 +0000</pubDate>
      <link>https://forem.com/aabhijit108/how-i-built-a-seo-optimized-flames-calculator-using-vanilla-js-3ckf</link>
      <guid>https://forem.com/aabhijit108/how-i-built-a-seo-optimized-flames-calculator-using-vanilla-js-3ckf</guid>
      <description>&lt;h1&gt;
  
  
  💘 Bringing 90s Nostalgia to the Web with Vanilla JS
&lt;/h1&gt;

&lt;p&gt;Do you remember scribbling names in the back of your notebook?&lt;/p&gt;

&lt;p&gt;If you grew up in the 90s (especially in India), you definitely played &lt;strong&gt;FLAMES&lt;/strong&gt;. It was the original "relationship algorithm" before Tinder existed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;F&lt;/strong&gt; = Friendship&lt;br&gt;
&lt;strong&gt;L&lt;/strong&gt; = Love&lt;br&gt;
&lt;strong&gt;A&lt;/strong&gt; = Affection&lt;br&gt;
&lt;strong&gt;M&lt;/strong&gt; = Marriage&lt;br&gt;
&lt;strong&gt;E&lt;/strong&gt; = Enemy&lt;br&gt;
&lt;strong&gt;S&lt;/strong&gt; = Sibling&lt;/p&gt;

&lt;p&gt;You cross out common letters, count the leftovers, and &lt;em&gt;bam&lt;/em&gt;—your destiny is revealed.&lt;/p&gt;

&lt;p&gt;I decided to build this as a modern web app. But I didn't want it to be boring. I wanted it &lt;strong&gt;fast&lt;/strong&gt;, &lt;strong&gt;beautiful&lt;/strong&gt;, and &lt;strong&gt;SEO-optimized&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here is how I built &lt;strong&gt;&lt;a href="https://flamescalculators.co.in" rel="noopener noreferrer"&gt;FlamesCalculators.co.in&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;**&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Why I Chose Vanilla JavaScript``
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;p&gt;In a world obsessed with React and Next.js, I chose plain old Vanilla JS. &lt;strong&gt;Why?&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Speed:&lt;/strong&gt; The logic is simple string manipulation. Loading a massive library for this is overkill.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Performance:&lt;/strong&gt; The site loads instantly. 0ms latency.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;SEO:&lt;/strong&gt; Google loves clean, semantic HTML that loads fast.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  🧮 The Logic (The Code)
&lt;/h2&gt;

&lt;p&gt;The algorithm is surprisingly fun to code. Here is the clean, stripped-down version of the logic:&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;javascript&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
`&lt;code&gt;&lt;/code&gt;&lt;br&gt;
function calculateFlames(name1, name2) {&lt;br&gt;
  // 1. Clean up the names (remove spaces, make lowercase)&lt;br&gt;
  const n1 = name1.replace(/\s+/g, '').toLowerCase().split('');&lt;br&gt;
  const n2 = name2.replace(/\s+/g, '').toLowerCase().split('');&lt;/p&gt;

&lt;p&gt;// 2. Cross out common letters&lt;br&gt;
  n1.forEach((char, index) =&amp;gt; {&lt;br&gt;
    const matchIndex = n2.indexOf(char);&lt;br&gt;
    if (matchIndex !== -1) {&lt;br&gt;
      n1[index] = ''; // Mark as removed&lt;br&gt;
      n2[matchIndex] = '';&lt;br&gt;
    }&lt;br&gt;
  });&lt;/p&gt;

&lt;p&gt;// 3. Count what is left&lt;br&gt;
  const count = [...n1, ...n2].filter(Boolean).length;&lt;/p&gt;

&lt;p&gt;// 4. The Elimination Game&lt;br&gt;
  const options = ["Friendship", "Love", "Affection", "Marriage", "Enemy", "Sibling"];&lt;br&gt;
  let index = 0;&lt;br&gt;
  let currentOptions = [...options];&lt;/p&gt;

&lt;p&gt;// Loop until one option remains&lt;br&gt;
  while (currentOptions.length &amp;gt; 1) {&lt;br&gt;
    index = (index + count - 1) % currentOptions.length;&lt;br&gt;
    currentOptions.splice(index, 1);&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;return currentOptions[0]; // Your Destiny!&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;`&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>showdev</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
