<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>whysooraj&#x27;s Portfolio - Next.js</title>
    <subtitle>Portfolio showcasing projects and research.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://blog.sooraj.fun/tags/next-js/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://blog.sooraj.fun/"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-03-30T00:00:00+00:00</updated>
    <id>https://blog.sooraj.fun/tags/next-js/atom.xml</id>
    <entry xml:lang="en">
        <title>CareerCompass AI</title>
        <published>2026-03-30T00:00:00+00:00</published>
        <updated>2026-03-30T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.sooraj.fun/projects/carrer-gap-analyser/"/>
        <id>https://blog.sooraj.fun/projects/carrer-gap-analyser/</id>
        
        <content type="html" xml:base="https://blog.sooraj.fun/projects/carrer-gap-analyser/">&lt;p&gt;An intelligent full-stack platform designed to analyze career skills gaps, leveraging NLP and asynchronous processing to deliver personalized learning roadmaps.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;why-it-exists&quot;&gt;Why it exists&lt;&#x2F;h3&gt;
&lt;p&gt;I built this for myself. Career planning is full of noise, and finding the exact missing skills between where you are and where you want to be usually means reading 50 job descriptions. I wanted an AI tool to audit my skill profile and outline the roadmap for me.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;how-it-works&quot;&gt;How it works&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Utilizes NLP parser algorithms to parse resumes and identify current skills.&lt;&#x2F;li&gt;
&lt;li&gt;Runs comparative match analysis against scraped job market profiles to identify gaps.&lt;&#x2F;li&gt;
&lt;li&gt;Triggers asynchronous roadmapping tasks using Python queue processing.&lt;&#x2F;li&gt;
&lt;li&gt;Handles user dashboard authentication and layouts seamlessly with &lt;strong&gt;Clerk Auth&lt;&#x2F;strong&gt; and &lt;strong&gt;Next.js&lt;&#x2F;strong&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;what-happened&quot;&gt;What happened&lt;&#x2F;h3&gt;
&lt;p&gt;I was tired of wondering what skills I lacked, so I started writing a simple script to compare my resume with job specs. That script quickly ballooned into a full-stack tool. It&#x27;s a project that solves a problem I actually face, and it&#x27;s what I use when mapping out my own next learning curve.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;what-i-d-change&quot;&gt;What I&#x27;d change&lt;&#x2F;h3&gt;
&lt;p&gt;I&#x27;d integrate direct job application API feeds so the system can suggest active listings matching the user&#x27;s newly bridged skill profile.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;links&quot;&gt;Links&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;whysooraj&#x2F;carrer-gap-analyser&quot;&gt;GitHub&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Echoes in Orbit</title>
        <published>2026-02-01T00:00:00+00:00</published>
        <updated>2026-02-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.sooraj.fun/projects/echoes-in-orbit/"/>
        <id>https://blog.sooraj.fun/projects/echoes-in-orbit/</id>
        
        <content type="html" xml:base="https://blog.sooraj.fun/projects/echoes-in-orbit/">&lt;p&gt;An immersive 3D spherical planetarium planet simulation where user confessions are placed using Fibonacci sphere distribution.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;why-it-exists&quot;&gt;Why it exists&lt;&#x2F;h3&gt;
&lt;p&gt;A fun, quiet weekend project. I wanted a space where confessions could float, not as a flat feed of text, but as a constellation of glowing stars you could explore in 3D.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;how-it-works&quot;&gt;How it works&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Renders a responsive 3D starfield dome using &lt;strong&gt;Three.js&lt;&#x2F;strong&gt; and &lt;strong&gt;React Three Fiber&lt;&#x2F;strong&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Places confession coordinates dynamically using a &lt;strong&gt;Fibonacci sphere distribution algorithm&lt;&#x2F;strong&gt; to ensure even geometric spacing.&lt;&#x2F;li&gt;
&lt;li&gt;Groups confessions into five emotional galaxies (Hope, Regret, Dream, Gratitude, Advice).&lt;&#x2F;li&gt;
&lt;li&gt;Uses lightweight CSS and shaders to handle micro-animations and realistic stellar glows.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;what-happened&quot;&gt;What happened&lt;&#x2F;h3&gt;
&lt;p&gt;It started on a Saturday morning with a blank canvas and a lot of math errors. Placing elements evenly on a sphere without them clumping at the poles took a few tries (and some coordinate transformations). By Sunday night, it was a working digital universe. Cast your thoughts into the cosmos, and watch them become a star.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;what-i-d-change&quot;&gt;What I&#x27;d change&lt;&#x2F;h3&gt;
&lt;p&gt;I&#x27;d rewrite the rendering loops to batch draw calls using instanced meshes, so the frame rate doesn&#x27;t drop when the universe gets crowded with thousands of confessions.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;links&quot;&gt;Links&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;whysooraj&#x2F;echo-in-orbits&quot;&gt;GitHub&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
