<?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: Ritanjit Das</title>
    <description>The latest articles on DEV Community by Ritanjit Das (@rtnjt_bot).</description>
    <link>https://dev.to/rtnjt_bot</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%2F3423101%2F6cb50862-83b4-48a5-b6d2-d27ecf726617.jpeg</url>
      <title>DEV Community: Ritanjit Das</title>
      <link>https://dev.to/rtnjt_bot</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rtnjt_bot"/>
    <language>en</language>
    <item>
      <title>First blog post :)</title>
      <dc:creator>Ritanjit Das</dc:creator>
      <pubDate>Sat, 30 Aug 2025 10:16:17 +0000</pubDate>
      <link>https://dev.to/rtnjt_bot/first-blog-post--5d60</link>
      <guid>https://dev.to/rtnjt_bot/first-blog-post--5d60</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/rtnjt_bot/from-html-to-3d-why-i-rebuild-my-portfolio-with-react-vite-tailwind-frontql-a4m" class="crayons-story__hidden-navigation-link"&gt;From HTML to 3D: Why I Rebuild My Portfolio with React, Vite, Tailwind &amp;amp; FrontQL&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/rtnjt_bot" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3423101%2F6cb50862-83b4-48a5-b6d2-d27ecf726617.jpeg" alt="rtnjt_bot profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/rtnjt_bot" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Ritanjit Das
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Ritanjit Das
                
              
              &lt;div id="story-author-preview-content-2804854" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/rtnjt_bot" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3423101%2F6cb50862-83b4-48a5-b6d2-d27ecf726617.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Ritanjit Das&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/rtnjt_bot/from-html-to-3d-why-i-rebuild-my-portfolio-with-react-vite-tailwind-frontql-a4m" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Aug 28 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/rtnjt_bot/from-html-to-3d-why-i-rebuild-my-portfolio-with-react-vite-tailwind-frontql-a4m" id="article-link-2804854"&gt;
          From HTML to 3D: Why I Rebuild My Portfolio with React, Vite, Tailwind &amp;amp; FrontQL
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/react"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;react&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/typescript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;typescript&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/portfolio"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;portfolio&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/rtnjt_bot/from-html-to-3d-why-i-rebuild-my-portfolio-with-react-vite-tailwind-frontql-a4m" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;3&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/rtnjt_bot/from-html-to-3d-why-i-rebuild-my-portfolio-with-react-vite-tailwind-frontql-a4m#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              4&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            6 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>webdev</category>
      <category>react</category>
      <category>typescript</category>
      <category>portfolio</category>
    </item>
    <item>
      <title>From HTML to 3D: Why I Rebuild My Portfolio with React, Vite, Tailwind &amp; FrontQL</title>
      <dc:creator>Ritanjit Das</dc:creator>
      <pubDate>Thu, 28 Aug 2025 13:12:16 +0000</pubDate>
      <link>https://dev.to/rtnjt_bot/from-html-to-3d-why-i-rebuild-my-portfolio-with-react-vite-tailwind-frontql-a4m</link>
      <guid>https://dev.to/rtnjt_bot/from-html-to-3d-why-i-rebuild-my-portfolio-with-react-vite-tailwind-frontql-a4m</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;“A portfolio isn’t just a website. It’s your story, your brand, your invitation to connect.” – Every web developer ever (including me)&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Introduction: Why I Rebuilt My Portfolio from Scratch
&lt;/h2&gt;

&lt;p&gt;Back in early 2022, my developer journey started with a humble, single-page website: a few lines of HTML, home-baked CSS, and a hint of JavaScript. I hosted it on GitHub Pages at &lt;a href="//ritanjit.github.io/My-Portfolio/"&gt;RD's Portfolio&lt;/a&gt;. It did the job: showcasing projects, sharing my bio, and providing a contact method. But as my skills (and ambitions) grew, the limitations of this static site became glaringly obvious.&lt;/p&gt;

&lt;p&gt;Fast forward to 2025. I rebuilt my personal site from the ground up as a 3D, interactive experience &lt;a href="//aetheria-nu.vercel.app"&gt;Aetheria&lt;/a&gt;. This wasn’t just a “glow up” for my developer identity. It’s a testament to how modern web technologies like React, Vite, TypeScript, Tailwind CSS v4.0, Three.js (via React Three Fiber), FrontQL, and even vanilla CSS can unlock new creative and functional possibilities.&lt;/p&gt;

&lt;p&gt;In this post, you’ll trace my journey step by step, see how and why my development stack evolved, and get a walkthrough of my new portfolio with code and design insights.&lt;/p&gt;

&lt;p&gt;Ready to go from “static site” to “interactive 3D web presence”? Let’s jump in.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;TL;DR&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Old Portfolio: Simple HTML/CSS/JS; hosted free on GitHub Pages. Easy to launch, but limited in interactivity and maintainability.&lt;/li&gt;
&lt;li&gt;New Portfolio: Built as a serverless React app (Vite, TypeScript, Tailwind CSS v4.0 + vanilla CSS, 3D via Three.js/React Three Fiber) with dynamic content (FrontQL API for backendless queries). Deployed on Vercel for instant updates and global speed.&lt;/li&gt;
&lt;li&gt;Key Takeaway: Embracing modern web tools let me tell my story with richer visuals, better UX, and easier site management.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Why Level Up? My Motivation to Move Beyond Static HTML Portfolio Sites
&lt;/h2&gt;

&lt;p&gt;My original GitHub Pages site taught me the fundamentals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hosting a free site:&lt;/strong&gt; No servers or credit cards. Just push to github pages branch and my site was live.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Using core web skills:&lt;/strong&gt; HTML for structure, CSS for style, and a few lines of JavaScript for interactions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But after a year in the web industry, I wanted more...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Efficiency:&lt;/strong&gt; Repeating HTML for every new project or experience became a chore. Changing a color or font meant hunting through raw CSS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type safety &amp;amp; maintainability:&lt;/strong&gt; I caught myself making silly JS errors—only seeing them in the browser. Refactoring was scary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance:&lt;/strong&gt; Despite being simple, my site wasn’t optimized, with neither lazy loading nor code splitting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modern Interactivity:&lt;/strong&gt; No dark mode, animations, or dynamic data—unless I hacked it in.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also noticed that the most impressive portfolios (from several “Best Portfolio” lists) were moving towards interactive, component-driven UIs. Some even included live 3D scenes that made you pause and explore.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The lesson?&lt;/strong&gt; If you want your portfolio to stand out and “tell your story” not just in words but with explorable design, then there’s a better (and more fun) tech stack.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where I Started: Anatomy of a GitHub Pages Portfolio
&lt;/h2&gt;

&lt;p&gt;Let’s look at what went right (and wrong) with my v1 portfolio.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Good&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero cost:&lt;/strong&gt; No servers, no surprises.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Markdown-friendly:&lt;/strong&gt; For beginners, you can even design a simple portfolio in Markdown, as GitHub will serve up your README as a home page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessible:&lt;/strong&gt; Deploy via Git (push to a branch), visit your .github.io URL, done!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Limitations&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Manual HTML editing:&lt;/strong&gt; Every update meant diving back into raw code. No components, no templates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Basic forms:&lt;/strong&gt; You could add a , but processing submissions required third-party tools (like Formspree) or APIs and more often, nothing happened at all.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No smart data:&lt;/strong&gt; If my tech stack changed, I had to find-and-replace throughout the site.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No build process:&lt;/strong&gt; All CSS and JS was loaded, no code splitting or tree shaking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limited interaction:&lt;/strong&gt; Hover effects and toggles? Sure, but no animations, modals, or live 3D magic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;A Look at the Source: Static Portfolio 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;!-- index.html --&amp;gt;&lt;/span&gt;
&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;My Portfolio | Ritanjit&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"styles.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;header&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Ritanjit&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;nav&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#about"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;About&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#projects"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Projects&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#experience"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Experience&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#contact"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Contact&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/header&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;section&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"about"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/section&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;section&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"projects"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/section&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;section&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"experience"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/section&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;section&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"contact"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/section&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;footer&amp;gt;&lt;/span&gt;© 2023 Ritanjit. Hosted on GitHub Pages.&lt;span class="nt"&gt;&amp;lt;/footer&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"main.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Notice:&lt;/strong&gt; Everything is in one file; “components” are hand-built sections, and updating navigation or content in one place means updating in several files by hand.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this stack: Breakdown of the tools I used.
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Fast, Fluid &amp;amp; Maintainable&lt;/em&gt; - My new stack isn’t just more powerful - it saves time, prevents bugs, supercharges site performance, and makes dynamic features trivial.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Vite: Lightning-Fast Builds &amp;amp; “Just Works” Developer Experience&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why I chose it?&lt;/strong&gt; Vite is so instant, I’ve forgotten what it’s like to wait on a build.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How its so fast?&lt;/strong&gt; Vite provides instant local dev server launches, hot module replacement (HMR), and production builds that are significantly smaller/faster than Create React App or Webpack.
&lt;strong&gt;Fun Fact:&lt;/strong&gt; In my benchmark, Vite was 58% faster at startup than CRA for a TypeScript + React app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;React + TypeScript: Components, Type Safety, and Happiness&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why TypeScript?&lt;/strong&gt; Because the future you will thank you for catching typos and bad data before they ship.&lt;/li&gt;
&lt;li&gt;With Re-usable components, it means updates or new pages are painless.&lt;/li&gt;
&lt;li&gt;Hot reload is delightful, just update a component and see it propagate instantly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Tailwind CSS v4.0: The Next Evolution of Styling&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why you ask?&lt;/strong&gt; Because you write less CSS and get more out of every class.&lt;/li&gt;
&lt;li&gt;With 3D transforms and container queries, you can animate in 3D, adapt layouts to any container size, and use utilities like &lt;code&gt;rotate-x-*&lt;/code&gt;, &lt;code&gt;scale-z-*&lt;/code&gt;, &lt;code&gt;@container&lt;/code&gt; without using any plugins required.&lt;/li&gt;
&lt;li&gt;The cherry on top: Use built-in imports and true CSS variables to share design tokens sitewide.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* globals.css */&lt;/span&gt;
&lt;span class="k"&gt;@import&lt;/span&gt; &lt;span class="s1"&gt;"tailwindcss"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;@theme&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--brand-blue&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;oklch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0.8&lt;/span&gt; &lt;span class="m"&gt;0.12&lt;/span&gt; &lt;span class="m"&gt;250&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="py"&gt;--header-font&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;'Inter'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c"&gt;/* 3D rotation: */&lt;/span&gt;
&lt;span class="nc"&gt;.card&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;@apply&lt;/span&gt; &lt;span class="err"&gt;rotate-x-12&lt;/span&gt; &lt;span class="err"&gt;scale-z-110&lt;/span&gt; &lt;span class="err"&gt;transition-all;&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;FrontQL: The Serverless Backend Solution&lt;/strong&gt;&lt;br&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%2Ff0uvf5ozjvz16vubbc2j.webp" 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%2Ff0uvf5ozjvz16vubbc2j.webp" alt="FrontQL: Shifting Backend Ownership to the Frontend" width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is it?&lt;/strong&gt; A revolutionary tech to build Full Stack apps using only frontend tools, with direct SQL access, scalable workflows, and zero backend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why?&lt;/strong&gt; I can insert new contact messages, fetch project data, or even live stats by using SQL directly in the frontend, without requiring my own backend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is it Secure?&lt;/strong&gt; With role-based access and declarative rules, it ensures proper permission management and abstraction of backend operations like scaling and authentication.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getUsers&lt;/span&gt;&lt;span class="p"&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;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;Api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sql&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;sql&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;SELECT * FROM users WHERE id=?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;params&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;{id}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;session&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;eyJIkpXVCJ9.eyJpZN30.8q8fdsKs9...&lt;/span&gt;&lt;span class="dl"&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;return&lt;/span&gt; &lt;span class="nx"&gt;response&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;&lt;strong&gt;Three.js and React Three Fiber: Bringing Your Story to Life&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Nothing says ‘future-proof’ like a 3D hero section that is responsive to both desktop and mobile screens.”&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Three.js&lt;/strong&gt; renders real-time 3D graphics, but what truly unlocked productivity was &lt;strong&gt;React Three Fiber (R3F)&lt;/strong&gt;, a renderer that makes 3D just another React component.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Usage:&lt;/strong&gt; Hero section, project previews, 3D globe, or interactive timeline animations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance:&lt;/strong&gt; Lazy loaded and tuned for devices. R3F makes it easy to display a static fallback if WebGL isn’t supported (progressive enhancement).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Structure Example:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Inside Hero3D.tsx&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Canvas&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;ambientLight&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;MyAnimatedModel&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;OrbitControls&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;Canvas&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Final Takeaways &amp;amp; Advice
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;If your site feels hard to update, or can’t express your new ideas, that’s a signal to modernize.&lt;/li&gt;
&lt;li&gt;Don’t be intimidated by the latest tools. Vite, React, Tailwind v4.0, and FrontQL are actually simpler (and safer) than the jQuery/DOM setup I started with.&lt;/li&gt;
&lt;li&gt;Lean on utility-first CSS and component-driven UI to maximize creativity and speed.&lt;/li&gt;
&lt;li&gt;Start small, iterate fast and document your milestones with others, not in code, but in design and the storytelling. The feedback will both inspire and shape your next version.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading! I hope my journey inspires your next leap, whether it’s a single Tailwind utility, a React hook, or your first spinning cube on the web.&lt;/p&gt;

&lt;p&gt;Happy building and even happier storytelling :)&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>typescript</category>
      <category>portfolio</category>
    </item>
  </channel>
</rss>
